Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
TradeCashTextPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "Display.hpp"
6#include "TradeUI.hpp"
7#include "FontRuntime.hpp"
8
9#include <array>
10#include <cstdint>
11#include <expected>
12#include <optional>
13#include <string>
14#include <vector>
15
16namespace monopoly::fonts { class Runtime; }
17
18namespace monopoly::tradeui
19{
20 inline constexpr data::DataTag TradeCashIconTag = 0x0355;
21 inline constexpr std::uint16_t TradeCashTextPriority = 474;
22 inline constexpr std::array<std::uint16_t, 4> TradeCashIconPriorities{{
23 100, 101, 102, 103}};
24 inline constexpr std::array<std::int32_t, 4> TradeCashTextX{{
25 10, 610, 210, 410}};
26 inline constexpr std::array<std::int32_t, 4> TradeCashTextY{{
27 428, 428, 391, 391}};
28 inline constexpr std::array<std::int32_t, 4> TradeCashIconX{{
29 9, 609, 209, 409}};
30 inline constexpr std::array<std::int32_t, 4> TradeCashIconY{{
31 395, 395, 358, 358}};
32
33 inline constexpr std::uint16_t TradeCashReadoutPriority = 1978;
34 inline constexpr std::uint32_t TradeCashReadoutWidth = 172;
35 inline constexpr std::uint32_t TradeCashReadoutHeight = 14;
36
38 {
39 public:
40 [[nodiscard]] std::expected<void, std::string> sync(
41 const State& state,
44 int monetarySystem,
47 bool modernCashReadout = false);
48
49 void reset() noexcept;
50 [[nodiscard]] std::optional<data::DataId> readoutSurface() const noexcept
51 { return readoutSurface_; }
52
53 private:
54 struct Published
55 {
57 std::uint16_t priority{};
58 std::int32_t x{};
59 std::int32_t y{};
60 bool operator==(const Published&) const = default;
61 };
62
63 [[nodiscard]] std::expected<void, std::string> ensureSurfaces(
64 engine::SequencePlayback& playback);
65
66 std::array<std::optional<data::DataId>, 4> textSurfaces_{};
67 std::array<std::optional<std::string>, 4> textCache_{};
68 std::vector<Published> current_;
69 std::optional<data::DataId> readoutSurface_;
70 std::optional<std::string> readoutText_;
71 std::optional<fonts::Settings> readoutFont_;
72 std::array<bool, 4> modernAA_{};
73 std::array<std::optional<fonts::Settings>, 4> fontSettings_{};
74 };
75}
std::uint16_t priority
unsigned state
unsigned index
std::expected< void, std::string > sync(const State &state, const rules::GameState &gameState, display::Screen2D desiredView, int monetarySystem, fonts::Runtime *fontRuntime, engine::SequencePlayback &playback, bool modernAA=false, bool modernCashReadout=false)
std::optional< data::DataId > readoutSurface() const noexcept
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataId EmptyDataId
Definition DataBanks.hpp:13
std::uint16_t DataTag
Definition DataBanks.hpp:11
constexpr std::uint16_t TradeCashReadoutPriority
constexpr std::uint16_t TradeCashTextPriority
constexpr std::uint32_t TradeCashReadoutHeight
constexpr data::DataTag TradeCashIconTag
constexpr std::array< std::int32_t, 4 > TradeCashIconY
constexpr std::uint32_t TradeCashReadoutWidth
constexpr std::array< std::int32_t, 4 > TradeCashTextY
constexpr std::array< std::int32_t, 4 > TradeCashIconX
constexpr std::array< std::int32_t, 4 > TradeCashTextX
constexpr std::array< std::uint16_t, 4 > TradeCashIconPriorities