Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
TradePropertyPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "Display.hpp"
5#include "MousePointer.hpp"
6#include "RuleTypes.hpp"
8#include "TradeUI.hpp"
9
10#include <array>
11#include <cstddef>
12#include <cstdint>
13#include <expected>
14#include <optional>
15#include <string>
16
17namespace monopoly::tradeui
18{
20 inline constexpr data::DataTag TradePropertyNormalBaseTag = 0x05E6;
21 inline constexpr std::array<std::uint16_t, 4> TradePropertyBasePriorities{{
22 324, 374, 424, 474
23 }};
24 inline constexpr std::uint16_t TradeDeedHoverPriority = 1001;
25 inline constexpr std::uint64_t TradeDeedHoverDelayTicks = 36;
26 inline constexpr std::uint64_t TradePropertyMoveStepMs = 25;
27 inline constexpr int TradePropertyMoveSteps = 4;
28 inline constexpr std::array<std::uint16_t, 4> TradePropertyMovingPriorities{{
29 626, 676, 726, 776
30 }};
31 inline constexpr std::size_t TradePropertyPlaybackObjectCount =
32 4 * static_cast<std::size_t>(rules::SquareCount);
33
35 int square,
36 bool mortgaged) noexcept;
37
39 {
40 public:
41 [[nodiscard]] std::expected<void, std::string> sync(
42 State& state,
45 std::uint64_t nowMs,
47 const mouse::State& pointer = {},
48 std::uint64_t hoverTick = 0,
49 int city = 0);
50
51 void reset() noexcept;
52 [[nodiscard]] data::DataId hoverDeed() const noexcept { return hoverDeed_; }
54 { return hoverDeed_ != data::EmptyDataId && hoverDeedRightPanel_; }
55
57 {
59 std::uint16_t priority{};
60 std::int32_t x{};
61 std::int32_t y{};
62
63 bool operator==(const ObjectState&) const = default;
64 };
65
66 private:
67 struct MovingState
68 {
69 PropertyMoveRequest request{};
71 std::uint16_t priority{};
72 std::int32_t x{};
73 std::int32_t y{};
74 std::int32_t deltaX{};
75 std::int32_t deltaY{};
76 int count{};
77 std::uint64_t lastMoveMs{};
78 };
79
80 std::array<ObjectState, TradePropertyPlaybackObjectCount> current_{};
81 std::optional<MovingState> moving_;
82 int checkedHover_{-1};
83 std::uint64_t hoverStartTick_{};
84 bool hoverDeedRightPanel_{};
86 };
87}
std::size_t count
std::uint16_t priority
unsigned state
unsigned index
std::expected< void, std::string > sync(State &state, const rules::GameState &gameState, display::Screen2D desiredView, std::uint64_t nowMs, engine::SequencePlayback &playback, const mouse::State &pointer={}, std::uint64_t hoverTick=0, int city=0)
data::DataId hoverDeed() 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::size_t SquareCount
Definition RuleTypes.hpp:24
constexpr std::uint64_t TradeDeedHoverDelayTicks
constexpr std::uint16_t TradeDeedHoverPriority
constexpr std::array< std::uint16_t, 4 > TradePropertyBasePriorities
constexpr data::DataTag TradePropertyNormalBaseTag
constexpr int TradePropertyMoveSteps
constexpr std::uint64_t TradePropertyMoveStepMs
constexpr data::DataTag TradePropertyMortgagedBaseTag
constexpr std::array< std::uint16_t, 4 > TradePropertyMovingPriorities
constexpr std::size_t TradePropertyPlaybackObjectCount
data::DataId tradePropertyDataId(int square, bool mortgaged) noexcept
bool operator==(const ObjectState &) const =default