Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
BoardBackdropPlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "Display.hpp"
5
6#include <array>
7#include <cstddef>
8#include <cstdint>
9#include <expected>
10#include <filesystem>
11#include <optional>
12#include <string>
13
15{
16 inline constexpr std::uint16_t BoardBackdropPriority = 10;
17 inline constexpr data::DataTag MainBoardBitmapBaseTag = 0x0000;
18 inline constexpr data::DataTag TradeBoardBitmapBaseTag = 0x01AD;
19 inline constexpr std::size_t MainBoardBufferCount = 4;
20 inline constexpr std::uint32_t BoardCameraCount = 39;
21 inline constexpr std::uint32_t UsaCityCount = 11;
22 inline constexpr std::uint32_t BoardsPerCity = 39;
23 inline constexpr std::uint32_t MainBoardWidth = 800;
24 inline constexpr std::uint32_t MainBoardHeight = 450;
25 inline constexpr std::uint32_t TradeBoardWidth = 400;
26 inline constexpr std::uint32_t TradeBoardHeight = 225;
27
38 {
40 int cityLoaded{-1};
41 int viewLoaded{-1};
42 std::uint32_t timeLoaded{};
43 std::filesystem::path customRootLoaded;
44 };
45
47 {
48 public:
49 [[nodiscard]] std::expected<void, std::string> sync(
52 void reset() noexcept;
53
55 { return activeBackdrop_; }
56 [[nodiscard]] const std::array<BoardBackdropBuffer, MainBoardBufferCount>&
57 mainBuffers() const noexcept { return mainBuffers_; }
58 [[nodiscard]] std::optional<std::size_t> currentMainBuffer() const noexcept
59 { return currentMainBuffer_; }
61 { return tradeSurface_; }
62
63 private:
64 [[nodiscard]] std::expected<void, std::string> ensureSurfaces(
66 [[nodiscard]] std::expected<data::LegacyBitmapRGBA8, std::string>
67 loadBoardBitmap(data::DataId id, engine::SequencePlayback& playback) const;
68 [[nodiscard]] std::expected<data::LegacyBitmapRGBA8, std::string>
69 loadCustomBoardBitmap(std::uint32_t camera,
70 const std::filesystem::path& customRoot,
72 [[nodiscard]] std::expected<void, std::string> validateCustomBoardSet(
73 const std::filesystem::path& customRoot,
75 [[nodiscard]] std::expected<void, std::string> compileImageInto(
76 data::DataId surface, const data::LegacyBitmapRGBA8& sourceImage,
78 [[nodiscard]] std::expected<void, std::string> compileInto(
81 [[nodiscard]] std::expected<data::DataId, std::string> selectBackdrop(
82 display::Screen2D view, int city, pieces::BoardCameraView camera,
83 std::uint32_t tick, const std::filesystem::path& customRoot,
85
86 std::array<BoardBackdropBuffer, MainBoardBufferCount> mainBuffers_{};
87 data::DataId tradeSurface_{data::EmptyDataId};
88 std::optional<std::size_t> currentMainBuffer_;
89 data::DataId activeBackdrop_{data::EmptyDataId};
91 std::optional<int> currentCity_;
92 std::optional<pieces::BoardCameraView> currentCamera_;
93 std::filesystem::path currentCustomRoot_;
94 std::filesystem::path validatedCustomRoot_;
95 bool surfacesReady_{};
96 };
97}
std::shared_ptr< const data::HmdTextureImage > source
unsigned index
std::expected< void, std::string > sync(const BoardBackdropInputs &inputs, engine::SequencePlayback &playback)
const std::array< BoardBackdropBuffer, MainBoardBufferCount > & mainBuffers() const noexcept
std::optional< std::size_t > currentMainBuffer() const noexcept
constexpr std::uint32_t TradeBoardWidth
constexpr data::DataTag TradeBoardBitmapBaseTag
constexpr std::uint16_t BoardBackdropPriority
constexpr std::uint32_t BoardsPerCity
constexpr std::uint32_t BoardCameraCount
constexpr std::uint32_t TradeBoardHeight
constexpr std::uint32_t UsaCityCount
constexpr data::DataTag MainBoardBitmapBaseTag
constexpr std::size_t MainBoardBufferCount
constexpr std::uint32_t MainBoardWidth
constexpr std::uint32_t MainBoardHeight
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataId EmptyDataId
Definition DataBanks.hpp:13
std::uint16_t DataTag
Definition DataBanks.hpp:11