Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
IBarJailCardPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "RuleTypes.hpp"
6
7#include <array>
8#include <cstddef>
9#include <cstdint>
10#include <expected>
11#include <string>
12
13namespace monopoly::ibar
14{
15 inline constexpr data::DataTag JailCardBaseTag = 0x0992;
16 inline constexpr std::uint16_t JailCardBasePriority = 256;
17 inline constexpr std::array<std::int32_t, 2> JailCardX{740, 750};
18 inline constexpr std::array<std::int32_t, 2> JailCardY{506, 525};
19
20 [[nodiscard]] constexpr data::DataId jailCardSequence(std::size_t deck) noexcept
21 {
22 return deck < 2
24 static_cast<data::DataTag>(JailCardBaseTag + deck))
26 }
27
29 {
30 public:
31 [[nodiscard]] std::expected<void, std::string> sync(
36
37 void reset() noexcept { current_.fill(data::EmptyDataId); }
38 [[nodiscard]] data::DataId current(std::size_t deck) const noexcept
39 {
40 return deck < current_.size() ? current_[deck] : data::EmptyDataId;
41 }
42
43 private:
44 std::array<data::DataId, 2> current_{};
45 };
46}
unsigned index
std::expected< void, std::string > sync(const rules::GameState &state, bool propertyBarAvailable, rules::PlayerNumber activePlayer, engine::SequencePlayback &playback)
data::DataId current(std::size_t deck) 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 DataId packDataId(std::uint16_t group, DataTag tag) noexcept
Definition DataBanks.hpp:39
constexpr std::uint16_t JailCardBasePriority
constexpr data::DataTag JailCardBaseTag
constexpr std::array< std::int32_t, 2 > JailCardX
constexpr std::array< std::int32_t, 2 > JailCardY
State & state()
Definition IBar.cpp:1285
constexpr data::DataId jailCardSequence(std::size_t deck) noexcept
std::uint8_t PlayerNumber
Definition RuleTypes.hpp:12