24 std::shared_ptr<const sequence::SequenceProgram>
on;
25 std::shared_ptr<const sequence::SequenceProgram>
off;
32 return index ? shown_[*
index] :
static_cast<std::int8_t
>(-1);
42 state.optionSnapshotLoaded;
55 if (
desired == shown_)
return {};
63 if (!
on)
return std::unexpected(
on.error().detail);
66 if (!
off)
return std::unexpected(
off.error().detail);
71 std::vector<sequence::SequenceCommand> commands;
77 if (shown_[
index] >= 0)
107 return std::unexpected(
108 "sequence command queue cannot fit Options toggle transition");
110 for (
auto& command : commands)
112 const auto queued = std::visit(
119 return std::unexpected(
120 "validated Options toggle command rejected");
std::shared_ptr< const sequence::SequenceProgram > off
std::shared_ptr< const sequence::SequenceProgram > on
std::int8_t shown(OptionToggle toggle) const noexcept
std::expected< void, std::string > sync(const State &state, display::Screen2D desiredView, 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={})
Rect optionToggleRect(OptionToggle toggle, bool onSide) noexcept
constexpr std::uint16_t togglePriority(OptionToggle toggle) noexcept
constexpr data::DataId toggleSequence(bool onSide, bool value) noexcept
constexpr std::array< OptionToggle, 8 > SupportedOptionToggles
constexpr std::uint8_t ToggleStayAtEnd
MoveSequenceCommand makeMoveXY(data::DataId dataId, std::uint16_t priority, std::int32_t x, std::int32_t y) noexcept