Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
PieceMovePlayback.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "PieceMovePlan.hpp"
5
6#include <optional>
7#include <string>
8
9namespace monopoly::pieces
10{
12 {
13 bool active{};
14 bool completed{};
15 bool looped{};
17 bool passedGo{};
18 std::optional<BoardCameraView> camera;
19 std::optional<data::DataId> startedSequence;
20 };
21
23 {
24 public:
25 [[nodiscard]] std::expected<void, std::string> begin(PieceMovePlan plan);
26 [[nodiscard]] std::expected<PieceMovePlaybackUpdate, std::string> tick(
27 bool boardVisible, engine::SequencePlayback& playback);
28
29 [[nodiscard]] bool active() const noexcept { return plan_.has_value(); }
30 [[nodiscard]] std::size_t stackIndex() const noexcept { return index_; }
32 { return currentSequence_; }
33 [[nodiscard]] std::optional<BoardCameraView> desiredCamera() const noexcept
34 { return desiredCamera_; }
35
36 private:
37 [[nodiscard]] std::expected<void, std::string> startInstruction(
41
42 std::optional<PieceMovePlan> plan_;
43 std::size_t index_{};
44 data::DataId currentSequence_{data::EmptyDataId};
45 std::optional<BoardCameraView> desiredCamera_;
46 };
47}
decision::EconomicActionPlan plan
unsigned index
std::expected< PieceMovePlaybackUpdate, std::string > tick(bool boardVisible, engine::SequencePlayback &playback)
std::expected< void, std::string > begin(PieceMovePlan plan)
std::optional< BoardCameraView > desiredCamera() const noexcept
std::size_t stackIndex() const noexcept
data::DataId currentSequence() const noexcept
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataId EmptyDataId
Definition DataBanks.hpp:13
std::optional< BoardCameraView > camera
std::optional< data::DataId > startedSequence