23 std::shared_ptr<const data::ResourceSnapshot>
resources,
30 commands_(runtime_) {}
34 std::uint8_t labelOverride = 0);
37 std::int32_t
x, std::int32_t
y,
bool dropFrames =
false,
38 std::uint8_t labelOverride = 0);
41 std::int32_t
x, std::int32_t
y,
42 bool dropFrames =
true,
43 std::uint8_t labelOverride = 0);
46 std::int32_t
x, std::int32_t
y,
47 float scale,
float rotate);
50 float yaw,
float scale,
float x,
float z);
53 float yaw,
float scale,
float x,
float z,
57 std::uint16_t
priority, std::int32_t
x, std::int32_t
y,
58 bool dropFrames =
false);
80 std::uint8_t endingAction);
83 std::uint16_t
priority,
float yaw,
float scale,
float x,
float z);
85 World3DRect viewport);
87 const World3DCamera& camera);
89 std::uint8_t cameraNumber);
94 [[
nodiscard]] std::expected<void, std::string>
update(std::int32_t tick);
97 std::vector<sequence::SequenceMeshRenderItem> items);
101 const std::function<
void(
const data::MeshRenderData*)>& rejectPack = {});
104 int city,
int currency,
const std::filesystem::path& customRoot = {});
106 std::string fileName, data::SequenceVideoData options,
107 data::Sequence2DBoundingBoxAttribute bounds,
108 bool binkDoubleSize =
false);
125 [[
nodiscard]] std::expected<std::shared_ptr<const sequence::SequenceProgram>, std::string>
128 static constexpr std::uint16_t RuntimeVideoGroup = 0xFFFCU;
129 std::array<data::DataId, 56> europeanDeeds_{};
130 std::vector<data::DataId> retiredDeeds_;
131 std::map<data::DataId, std::shared_ptr<const sequence::SequenceProgram>>
135 data::MeshRuntimeCache meshes_;
136 std::vector<sequence::SequenceMeshRenderItem> nativeSceneItems_;
139 std::filesystem::path>;
140 std::optional<BoardTextureSelection> boardTextureSelection_;
141 [[
nodiscard]] std::expected<void, std::string> publishRuntimeViews();
142 data::RuntimeBitmapStore runtimeBitmaps_;
143 sequence::SequenceRuntime runtime_;
144 sequence::SequenceCommandQueue commands_;
145 SequenceWorld3DSlot world_;
146 data::BitmapRuntimeCache bitmaps_;
147 SequenceWorld2DSlot world2D_;
148 struct SpatialSound2D
150 std::uint64_t movementRevision{};
151 std::int32_t screenCenterX{};
153 std::map<sequence::SequenceNodeId, SpatialSound2D> spatialSounds2D_;
std::shared_ptr< const ResourceSnapshot > resources() const noexcept
std::optional< std::int32_t > soundScreenCenterX2D(sequence::SequenceNodeId node) const noexcept
std::expected< void, std::string > move(data::DataId id, std::uint16_t priority, sequence::SequenceTransform transform)
std::expected< int, std::string > collectCommands()
const data::RuntimeBitmapStore & runtimeBitmaps() const noexcept
std::expected< void, std::string > forceRedraw(data::DataId id, std::uint16_t priority)
std::expected< void, std::string > setNativeSceneItems(std::vector< sequence::SequenceMeshRenderItem > items)
std::expected< void, std::string > setViewport3D(World3DRect viewport)
std::expected< void, std::string > setVolume(data::DataId id, std::uint16_t priority, std::uint8_t volume)
std::expected< void, std::string > configureBoardTextures(data::BoardMeshKind mesh, data::TextureResolution resolution, int city, int currency, const std::filesystem::path &customRoot={})
std::expected< void, std::string > start(data::DataId id, std::uint16_t priority=0, std::uint8_t labelOverride=0)
SequenceWorld3DSlot & world() noexcept
std::expected< void, std::string > transitionXY(std::optional< data::DataId > previousId, data::DataId id, std::uint16_t priority, std::int32_t x, std::int32_t y, bool dropFrames=false)
std::expected< void, std::string > startMoved(data::DataId id, std::uint16_t priority, sequence::SequenceTransform transform)
std::expected< void, std::string > transitionMovedDrop(std::optional< data::DataId > previousId, data::DataId id, std::uint16_t priority, sequence::SequenceTransform transform, std::uint8_t endingAction)
std::expected< void, std::string > prepareModernMeshes(MeshGPUCache &cache, const std::function< void(const data::MeshRenderData *)> &rejectPack={})
std::expected< void, std::string > update(std::int32_t tick)
std::expected< void, std::string > startRySTxzDrop(data::DataId id, std::uint16_t priority, float yaw, float scale, float x, float z, bool dropFrames)
data::RuntimeBitmapStore & runtimeBitmaps() noexcept
std::expected< void, std::string > setEndingAction(data::DataId id, std::uint16_t priority, std::uint8_t action)
std::expected< void, std::string > setCamera3D(const World3DCamera &camera)
std::expected< void, std::string > stop(data::DataId id, std::uint16_t priority)
std::expected< void, std::string > startXYDrop(data::DataId id, std::uint16_t priority, std::int32_t x, std::int32_t y, bool dropFrames=true, std::uint8_t labelOverride=0)
std::expected< void, std::string > transitionRySTxzDropStayAtEnd(std::optional< data::DataId > previousId, data::DataId id, std::uint16_t priority, float yaw, float scale, float x, float z)
std::expected< std::shared_ptr< const sequence::SequenceProgram >, std::string > loadProgram(data::DataId id)
bool freeRuntimeSequence(data::DataId id) noexcept
data::DataId deedDataId(int square, bool front, data::DataId staticFallback) const noexcept
std::expected< void, std::string > setCameraNumber(std::uint8_t cameraNumber)
SequenceWorld2DSlot & world2D() noexcept
std::expected< void, std::string > startXYSR(data::DataId id, std::uint16_t priority, std::int32_t x, std::int32_t y, float scale, float rotate)
sequence::SequenceRuntime & runtime() noexcept
std::expected< int, std::string > executeCommands()
sequence::SequenceCommandQueue & commands() noexcept
std::expected< void, std::string > setPitch(data::DataId id, std::uint16_t priority, std::uint16_t pitch)
std::expected< void, std::string > stopAll()
std::expected< void, std::string > startXY(data::DataId id, std::uint16_t priority, std::int32_t x, std::int32_t y, bool dropFrames=false, std::uint8_t labelOverride=0)
std::expected< void, std::string > setPanning(data::DataId id, std::uint16_t priority, std::int8_t panning)
std::expected< void, std::string > processUserCommands()
std::expected< void, std::string > startRySTxz(data::DataId id, std::uint16_t priority, float yaw, float scale, float x, float z)
std::shared_ptr< const data::ResourceSnapshot > resources() const noexcept
std::expected< data::DataId, std::string > createVideoObject(std::string fileName, data::SequenceVideoData options, data::Sequence2DBoundingBoxAttribute bounds, bool binkDoubleSize=false)
void setEuropeanDeeds(const std::array< data::DataId, 56 > &ids)
SequencePlayback(std::shared_ptr< const data::ResourceSnapshot > resources, data::ModernMeshResolver modernMeshResolver={})
std::function< std::expected< std::optional< std::shared_ptr< const MeshRenderData > >, MeshRuntimeError >(DataId, std::optional< DataId > rootSequenceDataId, std::uint16_t priority)> ModernMeshResolver
std::variant< std::monostate, Matrix2D, Matrix3D > SequenceTransform
std::uint64_t SequenceNodeId