Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
StatsPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "StatsUI.hpp"
5
6#include <array>
7#include <cstdint>
8#include <expected>
9#include <optional>
10#include <string>
11
12namespace monopoly::statsui
13{
14 enum class ButtonVisual : std::uint8_t
15 {
16 Off = 0,
17 Idle,
18 Return,
19 Press
20 };
21
22 inline constexpr std::uint16_t StatusBackgroundPriority = 10;
23 inline constexpr std::uint16_t DeedBackgroundPriority = 20;
24 inline constexpr std::uint16_t BankBackgroundPriority = 50;
25 inline constexpr std::uint16_t StatusBarPriority = 54;
26 inline constexpr std::uint16_t StatusBarOverlayPriority = 154;
27 inline constexpr std::uint8_t StatusStayAtEnd = 2;
28
29 inline constexpr data::DataTag StatusBackgroundTag = 0x0089;
30 inline constexpr data::DataTag DeedBackgroundTag = 0x00CD;
31 inline constexpr std::array<data::DataTag, 4> BankBackgroundTags{
32 0x000C, 0x000E, 0x000D, 0x000B};
33 inline constexpr std::array<data::DataTag, 2> CategoryBarTags{
34 0x029B, 0x029C};
35 inline constexpr std::array<std::array<data::DataTag, 2>, 3> SortBarTags{{
36 {0x0286, 0x0287},
37 {0x022C, 0x022D},
38 {0x0006, 0x0007}}};
39
40 inline constexpr std::array<std::array<data::DataTag, 3>, 3> CategoryButtonTags{{
41 {0x019E, 0x01A0, 0x019F},
42 {0x017F, 0x0181, 0x0180},
43 {0x0176, 0x0178, 0x0177}}};
44 inline constexpr std::array<std::uint16_t, 3> CategoryIdlePriorities{56, 58, 60};
45 inline constexpr std::array<std::uint16_t, 3> CategoryPressPriorities{57, 59, 61};
46
47 inline constexpr std::array<std::array<std::array<data::DataTag, 3>, 4>, 3>
49 {{{0x01A4,0x01A6,0x01A5},{0x0198,0x019A,0x0199},
50 {0x0195,0x0197,0x0196},{0x017C,0x017E,0x017D}}},
51 {{{0x01A1,0x01A3,0x01A2},{0x019B,0x019D,0x019C},
52 {0x0179,0x017B,0x017A},{0x0182,0x0184,0x0183}}},
53 {{{0x00FE,0x00FD,0x00FF},{0x0104,0x0103,0x0105},
54 {0x0101,0x0100,0x0102},{0x00FB,0x00FA,0x00FC}}}
55 }};
56 inline constexpr std::array<std::uint16_t, 4> SortIdlePriorities{62, 60, 58, 56};
57 inline constexpr std::array<std::uint16_t, 4> SortPressPriorities{63, 61, 59, 57};
58
64 {
66 }
67
69 {
70 public:
71 [[nodiscard]] std::expected<void, std::string> sync(
74 void reset() noexcept;
75 [[nodiscard]] bool visible() const noexcept { return visible_; }
76 [[nodiscard]] ButtonVisual categoryVisual(std::size_t index) const noexcept;
77 [[nodiscard]] ButtonVisual sortVisual(std::size_t index) const noexcept;
78
79 private:
80 struct Published
81 {
83 std::uint16_t priority{};
84 int x{};
85 int y{};
86 bool moved{};
87 bool stay{};
88 friend bool operator==(const Published&, const Published&) = default;
89 };
90
91 static constexpr std::size_t SlotCount = 13;
92 std::array<std::optional<Published>, SlotCount> published_{};
93 std::array<ButtonVisual, 3> categoryVisual_{};
94 std::array<ButtonVisual, 4> sortVisual_{};
95 bool visible_{};
96 Screen screen_{Screen::Player};
97 std::uint8_t sort_{};
98 };
99}
std::uint16_t priority
unsigned state
unsigned index
ButtonVisual sortVisual(std::size_t index) const noexcept
ButtonVisual categoryVisual(std::size_t index) const noexcept
bool visible() const noexcept
std::expected< void, std::string > sync(const State &state, display::Screen2D desiredView, engine::SequencePlayback &playback)
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataId EmptyDataId
Definition DataBanks.hpp:13
std::uint16_t DataTag
Definition DataBanks.hpp:11
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
Definition DataBanks.hpp:39
constexpr std::uint8_t StatusStayAtEnd
constexpr std::array< std::uint16_t, 3 > CategoryPressPriorities
constexpr std::array< std::array< std::array< data::DataTag, 3 >, 4 >, 3 > SortButtonTags
constexpr data::DataTag StatusBackgroundTag
constexpr std::array< data::DataTag, 4 > BankBackgroundTags
constexpr std::uint16_t DeedBackgroundPriority
constexpr std::uint16_t StatusBarPriority
constexpr std::uint16_t StatusBarOverlayPriority
constexpr std::array< std::uint16_t, 3 > CategoryIdlePriorities
constexpr data::DataId mainSequence(data::DataTag tag) noexcept
constexpr std::uint16_t StatusBackgroundPriority
constexpr std::array< std::array< data::DataTag, 2 >, 3 > SortBarTags
constexpr std::array< std::array< data::DataTag, 3 >, 3 > CategoryButtonTags
constexpr data::DataTag DeedBackgroundTag
constexpr std::array< std::uint16_t, 4 > SortPressPriorities
constexpr std::array< std::uint16_t, 4 > SortIdlePriorities
constexpr std::uint16_t BankBackgroundPriority
constexpr std::array< data::DataTag, 2 > CategoryBarTags
constexpr data::DataId languageSequence(data::DataTag tag) noexcept