20 std::vector<OptionPlayback::Published> result;
21 if (!
state.boxActive)
return result;
26 if (
state.optionsOpen)
38 if (
desired == current_)
return {};
41 std::vector<Published>
added;
42 for (
const auto&
object : current_)
45 for (
const auto&
object :
desired)
46 if (std::find(current_.begin(), current_.end(),
object) == current_.end())
47 added.push_back(
object);
50 std::shared_ptr<const sequence::SequenceProgram>>
programs;
51 for (
const auto&
object :
added)
53 if (
programs.contains(
object.id))
continue;
57 return std::unexpected(
58 "UDChat option resource failed: " +
loaded.error().detail);
66 return std::unexpected(
67 "sequence command queue cannot fit UDChat option transition");
70 for (
const auto&
object :
removed)
75 return std::unexpected(
76 "validated UDChat option stop rejected");
78 for (
const auto&
object :
added)
83 return std::unexpected(
84 "validated UDChat option start rejected");
std::expected< void, std::string > sync(const State &state, engine::SequencePlayback &playback)
static constexpr std::size_t Capacity
static std::expected< std::shared_ptr< const SequenceProgram >, RuntimeError > load(const data::DataSource &source, data::DataId id, std::size_t offset=0, DescriptionLimits limits={})
constexpr std::uint16_t ChatOptionPanelPriority
constexpr std::uint16_t ChatOptionButtonPriority
constexpr data::DataTag ChatOptionPanelTag
constexpr data::DataTag ChatOptionButtonTag
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
SequenceTransform moveXYTransform(std::int32_t x, std::int32_t y) noexcept