Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
IBarBackdropPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "Display.hpp"
10#include "IBarLayout.hpp"
12#include "IBarRuleState.hpp"
14#include "RuleTypes.hpp"
15#include "SequencePlayback.hpp"
16
17#include <cstddef>
18#include <cstdint>
19#include <expected>
20#include <optional>
21#include <string>
22
23namespace monopoly::ibar
24{
25 inline constexpr data::DataTag PlayerBackdropBaseTag = 0x015B;
26 inline constexpr data::DataTag BankBackdropTag = 0x0162;
27 inline constexpr std::uint16_t BackdropPriority = 11;
28 inline constexpr std::int32_t BackdropX = 0;
29 inline constexpr std::int32_t BackdropY = 450;
30 inline constexpr std::uint8_t PlayerColourCount = 6;
31
32 [[nodiscard]] std::expected<data::DataId, std::string> desiredBackdrop(
34 bool visible,
36
42
43
69
70 [[nodiscard]] RuleActionHitState ruleActionHitState(
71 bool visible,
73 const ActionButtonInputs& inputs) noexcept;
74
75
77 {
78 public:
79 [[nodiscard]] std::expected<void, std::string> sync(
81 bool visible,
85
87 {
88 currentBackdrop_ = data::EmptyDataId;
89 auctionButton_.reset();
90 buyButton_.reset();
91 cameraButton_.reset();
92 doneButton_.reset();
93 sellButton_.reset();
94 tradeAcceptButton_.reset();
95 tradeCounterButton_.reset();
96 flatTaxButton_.reset();
97 percentageButton_.reset();
98 buildButton_.reset();
99 bankruptButton_.reset();
100 tradeRejectButton_.reset();
101 mortgageButton_.reset();
102 mainButton_.reset();
103 optionsButton_.reset();
104 payButton_.reset();
105 newGameButton_.reset();
106 rollDiceButton_.reset();
107 statusButton_.reset();
108 tradeButton_.reset();
109 unmortgageButton_.reset();
110 exitButton_.reset();
111 useCardButton_.reset();
112 auctionHouseButton_.reset();
113 auctionHotelButton_.reset();
114 placeHouseButton_.reset();
115 placeHotelButton_.reset();
116 trackedRuleMode_ = RuleMode::Nothing;
117 trackedRulePlayer_ = rules::NobodyPlayer;
118 propertyTitles_.reset();
119 propertyHover_.reset();
120 card_.reset();
121 pendingCardRead_.reset();
122 jailCards_.reset();
123 buyAuctionPopup_.reset();
124 scoreStrip_.reset();
125 consumedPressedButton_.reset();
126 bank_.reset();
127 currentPlayer_.reset();
128 }
129
131 {
132 return currentBackdrop_;
133 }
134
136 {
137 return currentPlayer_.currentToken();
138 }
139
140 [[nodiscard]] std::optional<std::uint8_t> consumedPressedButton() const noexcept
141 {
142 return consumedPressedButton_;
143 }
144
146 {
147 return propertyHover_.currentDeed();
148 }
149
150 // Emitted only after the remembered card successfully enters FaceIn.
151 [[nodiscard]] std::optional<std::uint8_t> takeCardReadRequest() noexcept;
152
154 {
155 return card_.visualState();
156 }
157
162
163 [[nodiscard]] data::DataId jailCardCurrent(std::size_t deck) const noexcept
164 {
165 return jailCards_.current(deck);
166 }
167
169 {
170 return buyAuctionPopup_.currentDeed();
171 }
172
174 {
175 return buyAuctionPopup_.onLeft();
176 }
177
179 rules::PlayerNumber player) const noexcept
180 {
181 return scoreStrip_.playerState(player);
182 }
183
185 rules::PlayerNumber player) const noexcept
186 {
187 return scoreStrip_.textState(player);
188 }
189
191 {
192 return bank_.visible();
193 }
194
196 {
197 return cameraButton_.visualState();
198 }
199
201 {
202 return mainButton_.visualState();
203 }
204
206 {
207 return optionsButton_.visualState();
208 }
209
211 {
212 return rollDiceButton_.visualState();
213 }
214
216 {
217 return statusButton_.visualState();
218 }
219
221 {
222 return tradeButton_.visualState();
223 }
224
225 private:
226 data::DataId currentBackdrop_{data::EmptyDataId};
227 std::optional<std::uint8_t> consumedPressedButton_;
228 std::optional<std::uint8_t> pendingCardRead_;
229 CameraButtonPlayback auctionButton_{AuctionButtonIndex};
230 CameraButtonPlayback buyButton_{BuyButtonIndex};
231 CameraButtonPlayback cameraButton_;
232 CameraButtonPlayback doneButton_{DoneButtonIndex};
233 CameraButtonPlayback sellButton_{SellButtonIndex};
234 CameraButtonPlayback tradeAcceptButton_{TradeAcceptButtonIndex};
235 CameraButtonPlayback tradeCounterButton_{TradeCounterButtonIndex};
236 CameraButtonPlayback flatTaxButton_{FlatTaxButtonIndex};
237 CameraButtonPlayback percentageButton_{PercentageButtonIndex};
238 CameraButtonPlayback buildButton_{BuildButtonIndex};
239 CameraButtonPlayback bankruptButton_{BankruptButtonIndex};
240 CameraButtonPlayback tradeRejectButton_{TradeRejectButtonIndex};
241 CameraButtonPlayback mortgageButton_{MortgageButtonIndex};
242 CameraButtonPlayback mainButton_{MainButtonIndex};
243 CameraButtonPlayback optionsButton_{OptionsButtonIndex};
244 CameraButtonPlayback payButton_{PayButtonIndex};
245 CameraButtonPlayback newGameButton_{NewGameButtonIndex};
246 CameraButtonPlayback rollDiceButton_{RollDiceButtonIndex};
247 CameraButtonPlayback statusButton_{StatusButtonIndex};
248 CameraButtonPlayback tradeButton_{TradeButtonIndex};
249 CameraButtonPlayback unmortgageButton_{UnmortButtonIndex};
250 CameraButtonPlayback exitButton_{ExitButtonIndex};
251 CameraButtonPlayback useCardButton_{UseCardButtonIndex};
252 CameraButtonPlayback auctionHouseButton_{AuctionHouseButtonIndex};
253 CameraButtonPlayback auctionHotelButton_{AuctionHotelButtonIndex};
254 CameraButtonPlayback placeHouseButton_{PlaceHouseButtonIndex};
255 CameraButtonPlayback placeHotelButton_{PlaceHotelButtonIndex};
256 RuleMode trackedRuleMode_{RuleMode::Nothing};
257 rules::PlayerNumber trackedRulePlayer_{rules::NobodyPlayer};
258 PropertyTitlePlayback propertyTitles_;
259 PropertyHoverPlayback propertyHover_;
260 CardPlayback card_;
261 JailCardPlayback jailCards_;
262 BuyAuctionPopupPlayback buyAuctionPopup_;
263 ScoreStripPlayback scoreStrip_;
264 BankPlayback bank_;
265 CurrentPlayerPlayback currentPlayer_;
266 };
267}
unsigned index
data::DataId jailCardCurrent(std::size_t deck) const noexcept
const ScoreTextState & scoreTextState(rules::PlayerNumber player) const noexcept
data::DataId currentCardSequence() const noexcept
std::optional< std::uint8_t > consumedPressedButton() const noexcept
CameraButtonVisualState tradeButtonState() const noexcept
data::DataId currentBackdrop() const noexcept
CameraButtonVisualState rollDiceButtonState() const noexcept
data::DataId propertyHoverDeed() const noexcept
data::DataId currentPlayerToken() const noexcept
const ScoreStripPlayerRuntime & scorePlayerState(rules::PlayerNumber player) const noexcept
CameraButtonVisualState cameraButtonState() const noexcept
std::expected< void, std::string > sync(const rules::GameState &state, bool visible, rules::PlayerNumber activePlayer, engine::SequencePlayback &playback, ActionButtonInputs inputs={})
CardVisualState cardVisualState() const noexcept
CameraButtonVisualState statusButtonState() const noexcept
CameraButtonVisualState mainButtonState() const noexcept
std::optional< std::uint8_t > takeCardReadRequest() noexcept
data::DataId buyAuctionPopupDeed() const noexcept
CameraButtonVisualState optionsButtonState() const noexcept
bool visible() const noexcept
CameraButtonVisualState visualState() const noexcept
data::DataId currentSequence() const noexcept
CardVisualState visualState() const noexcept
data::DataId current(std::size_t deck) const noexcept
data::DataId currentDeed() const noexcept
const ScoreStripPlayerRuntime & playerState(rules::PlayerNumber player) const noexcept
const ScoreTextState & textState(rules::PlayerNumber player) 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
unsigned int ActionButtonMask
constexpr std::uint8_t ExitButtonIndex
constexpr std::uint8_t PlaceHouseButtonIndex
constexpr std::uint8_t MortgageButtonIndex
constexpr std::uint8_t DoneButtonIndex
constexpr std::uint8_t TradeRejectButtonIndex
RuleActionHitState ruleActionHitState(bool visible, rules::PlayerNumber activePlayer, const ActionButtonInputs &inputs) noexcept
constexpr std::uint16_t BackdropPriority
constexpr std::uint8_t BuildButtonIndex
constexpr std::uint8_t AuctionButtonIndex
constexpr std::uint8_t PayButtonIndex
constexpr std::int32_t BackdropX
constexpr std::uint8_t TradeAcceptButtonIndex
constexpr std::uint8_t TradeButtonIndex
constexpr std::uint8_t RollDiceButtonIndex
constexpr std::int32_t BackdropY
constexpr data::DataTag BankBackdropTag
constexpr std::uint8_t BankruptButtonIndex
constexpr std::uint8_t SellButtonIndex
constexpr std::uint8_t UseCardButtonIndex
constexpr std::uint8_t OptionsButtonIndex
constexpr std::uint8_t TradeCounterButtonIndex
std::expected< data::DataId, std::string > desiredBackdrop(const rules::GameState &state, bool visible, rules::PlayerNumber activePlayer)
constexpr std::uint8_t PlaceHotelButtonIndex
constexpr std::uint8_t AuctionHotelButtonIndex
constexpr std::uint8_t AuctionHouseButtonIndex
constexpr std::uint8_t BuyButtonIndex
constexpr std::uint8_t StatusButtonIndex
constexpr std::uint8_t NewGameButtonIndex
constexpr data::DataTag PlayerBackdropBaseTag
constexpr std::uint8_t MainButtonIndex
State & state()
Definition IBar.cpp:1285
constexpr std::uint8_t PlayerColourCount
constexpr std::uint8_t FlatTaxButtonIndex
constexpr std::uint8_t PercentageButtonIndex
constexpr std::uint8_t UnmortButtonIndex
std::uint8_t PlayerNumber
Definition RuleTypes.hpp:12
constexpr PlayerNumber NobodyPlayer
Definition RuleTypes.hpp:16
std::optional< std::uint8_t > pressedButtonIndex
std::optional< std::uint8_t > desiredCardIndex
std::optional< std::uint8_t > desiredBuyAuctionSquare