24 std::pair<data::DataId, std::shared_ptr<const sequence::SequenceProgram>>,
30 const auto id = languageId(tag);
33 return std::pair{
id, std::move(*
loaded)};
35 return std::unexpected(
36 "UDStats calculator Enter sequence missing from language bank");
42 published_.fill(std::nullopt);
52 std::array<std::optional<Published>, SlotCount>
desired{};
53 std::array<std::optional<sequence::SequenceTransform>, SlotCount>
56 std::shared_ptr<const sequence::SequenceProgram>>>
enterProgram;
105 const auto count = std::min<std::size_t>(
111 return std::unexpected(
112 "UDStats calculator token index is out of range");
125 std::array<std::shared_ptr<const sequence::SequenceProgram>, SlotCount>
programs{};
140 return std::unexpected(
141 "UDStats calculator sequence failed: " +
loaded.error().detail);
150 return std::unexpected(
151 "sequence command queue cannot fit UDStats calculator transition");
154 std::vector<sequence::SequenceCommand> commands;
159 if (published_[
slot])
161 published_[
slot]->id, published_[
slot]->priority,
false});
168 for (
auto& command : commands)
170 const auto queued = std::visit(
174 }, std::move(command));
176 return std::unexpected(
177 "validated UDStats calculator command rejected");
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={})
std::expected< void, std::string > sync(display::Screen2D desiredView, const CalculatorUIState &ui, const rules::GameState &gameState, engine::SequencePlayback &playback)
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
std::uint8_t PlayerNumber
constexpr std::size_t MaxTokens
constexpr PlayerNumber MaxPlayers
std::variant< std::monostate, Matrix2D, Matrix3D > SequenceTransform
Matrix2D moveXYSRTransform(std::int32_t x, std::int32_t y, float scale, float rotate) noexcept
constexpr std::uint16_t CalculatorBackgroundPriority
constexpr data::DataTag CalculatorNumberPressBaseTag
constexpr std::uint16_t CalculatorButtonPriority
constexpr data::DataTag CalculatorTokenBaseTag
constexpr Rect calculatorTokenRect(rules::PlayerNumber player) noexcept
constexpr data::DataTag CalculatorFunctionPressBaseTag
constexpr data::DataTag CalculatorEnterIdleAlternateTag
constexpr data::DataTag CalculatorFunctionIdleBaseTag
constexpr data::DataTag CalculatorBackgroundTag
constexpr data::DataTag CalculatorEnterIdleTag
constexpr float CalculatorTokenScale
constexpr data::DataTag CalculatorNumberIdleBaseTag
constexpr data::DataTag CalculatorTextBoxTag
std::optional< std::uint8_t > pressedNumber
std::optional< CalculatorFunction > activeFunction