Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
IBarPropertyPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "Display.hpp"
5#include "IBarLayout.hpp"
6#include "IBarRuleState.hpp"
7#include "RuleTypes.hpp"
9
10#include <array>
11#include <cstdint>
12#include <expected>
13#include <optional>
14#include <string>
15
16namespace monopoly::ibar
17{
18 inline constexpr data::DataTag PropertyFullColourBaseTag = 0x0163;
19 inline constexpr data::DataTag PropertyLowColourBaseTag = 0x017F;
20 inline constexpr data::DataTag PropertyMortgagedBaseTag = 0x019B;
21 inline constexpr std::uint16_t PropertyBasePriority = 256;
23 inline constexpr data::DataTag PropertyHoverNormalBaseTag = 0x0CD0;
24 inline constexpr std::uint16_t PropertyHoverPriority = 1003;
25 inline constexpr std::int32_t PropertyHoverX = 540;
26 inline constexpr std::int32_t PropertyHoverY = 130;
27 inline constexpr std::uint64_t PropertyHoverDelayTicks = 36;
28 inline constexpr std::uint16_t BuyAuctionPopupPriority = 1002;
29 inline constexpr std::int32_t BuyAuctionPopupXLeft = 20;
30 inline constexpr std::int32_t BuyAuctionPopupXRight = 560;
31 inline constexpr std::int32_t BuyAuctionPopupXTrade = 594;
32 inline constexpr std::int32_t BuyAuctionPopupY = 110;
33
34 enum class PropertyTitleStyle : std::uint8_t
35 {
36 Hidden = 0,
40 };
41
56
58 {
59 std::array<PropertyTitleStyle, rules::SquareCount> styles{};
61 };
62
63 [[nodiscard]] PropertyTitlePlan planPropertyTitles(
65 const PropertyTitleInputs& inputs) noexcept;
66
68 int square, PropertyTitleStyle style) noexcept;
69
71 {
72 public:
73 [[nodiscard]] std::expected<void, std::string> sync(
76 void reset() noexcept;
77
78 private:
79 std::array<data::DataId, rules::SquareCount> current_{};
80 std::array<std::uint16_t, rules::SquareCount> priorities_{};
81 };
82
84 int square, bool mortgaged) noexcept;
85
87 {
88 public:
89 [[nodiscard]] std::expected<void, std::string> sync(
90 std::optional<std::uint8_t> desiredSquare,
94 void reset() noexcept;
95
97 {
98 return currentDeed_;
99 }
100 [[nodiscard]] bool onLeft() const noexcept { return onLeft_; }
101
102 private:
103 data::DataId currentDeed_{data::EmptyDataId};
104 bool onLeft_{true};
105 };
106
107
109 {
110 public:
111 [[nodiscard]] std::expected<void, std::string> sync(
112 const rules::GameState& state,
115 std::uint64_t tick,
117 void reset() noexcept;
118
120 {
121 return currentDeed_;
122 }
123 [[nodiscard]] int checkedSquare() const noexcept { return checkedSquare_; }
124 [[nodiscard]] std::uint64_t hoverStartTick() const noexcept { return hoverStartTick_; }
125
126 private:
127 int checkedSquare_{-1};
128 std::uint64_t hoverStartTick_{};
129 data::DataId currentDeed_{data::EmptyDataId};
130 };
131
132}
decision::EconomicActionPlan plan
unsigned index
unsigned style
std::expected< void, std::string > sync(std::optional< std::uint8_t > desiredSquare, display::Screen2D view, int currentPlayerSquare, engine::SequencePlayback &playback)
std::expected< void, std::string > sync(const rules::GameState &state, const PropertyTitlePlan &titles, int currentMouseOver, std::uint64_t tick, engine::SequencePlayback &playback)
data::DataId currentDeed() const noexcept
std::uint64_t hoverStartTick() const noexcept
std::expected< void, std::string > sync(const PropertyTitlePlan &plan, 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
std::uint32_t PropertyMask
constexpr std::uint16_t BuyAuctionPopupPriority
constexpr data::DataTag PropertyFullColourBaseTag
constexpr std::int32_t PropertyHoverX
constexpr data::DataTag PropertyMortgagedBaseTag
constexpr std::uint64_t PropertyHoverDelayTicks
data::DataId propertyTitleDataId(int square, PropertyTitleStyle style) noexcept
data::DataId propertyHoverDataId(int square, bool mortgaged) noexcept
PropertyTitlePlan planPropertyTitles(const rules::GameState &state, const PropertyTitleInputs &inputs) noexcept
constexpr std::int32_t BuyAuctionPopupXLeft
constexpr std::uint16_t PropertyBasePriority
constexpr data::DataTag PropertyLowColourBaseTag
constexpr std::int32_t BuyAuctionPopupXRight
constexpr data::DataTag PropertyHoverNormalBaseTag
State & state()
Definition IBar.cpp:1285
constexpr std::int32_t BuyAuctionPopupY
constexpr std::uint16_t PropertyHoverPriority
constexpr std::int32_t BuyAuctionPopupXTrade
constexpr std::int32_t PropertyHoverY
constexpr data::DataTag PropertyHoverMortgagedBaseTag
std::uint8_t PlayerNumber
Definition RuleTypes.hpp:12
constexpr PlayerNumber NobodyPlayer
Definition RuleTypes.hpp:16
std::optional< std::uint8_t > selectedDeed
std::array< PropertyTitleStyle, rules::SquareCount > styles