Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
ModernSceneCatalog.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4#include "ModernGltfMesh.hpp"
5
6#include <cstdint>
7#include <expected>
8#include <filesystem>
9#include <optional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15namespace monopoly::data
16{
18 inline constexpr std::size_t ModernSceneKindCount = 5;
19
20 // Optional replacements remain off for ordinary retail play.
22 {
23 bool parisBoard{};
24 // --modern-buildings=house enables both building prototypes. Hotels
25 // still retain retail geometry until their separate asset qualifies.
26 bool house{};
28 bool usaBoard{};
29 // Recovered procedural sculpture with the available USA rule labels.
30 // This does not claim a French resource/rules qualification.
33 };
34
36 {
38 // Views borrow the caller's arguments; unrelated flags preserve order.
39 std::vector<std::string_view> remaining;
40 };
41
42 [[nodiscard]] std::expected<ParsedModernSceneOptions, std::string>
43 parseModernSceneArguments(std::span<const std::string_view> arguments);
44
53
60
62 ModernSceneKind kind) noexcept;
63
64 // Only a complete reviewed root and its actual production priority qualify.
65 // This is separate from transform calibration: a locale-compatible board
66 // must still retain retail geometry until calibrated load options exist.
68 DataId meshId, std::optional<DataId> rootSequenceDataId,
69 std::uint16_t priority, const ModernSceneOptions& options,
70 const ModernSceneContext& context) noexcept;
71
72 // nullopt means geometry alignment has not yet been qualified.
73 [[nodiscard]] std::optional<ModernGltfLoadOptions> modernSceneLoadOptions(
74 ModernSceneKind kind) noexcept;
75
76 // Hotel authoring is an explicit bounds contract, not a measured claim
77 // about an asset that may be missing. Gate the loaded prototype before
78 // presentation. Existing board and house qualification stays unchanged.
80 const MeshRenderData& mesh) noexcept;
81}
std::uint16_t priority
unsigned index
Kind kind
bool qualifiedModernSceneGeometry(ModernSceneKind kind, const MeshRenderData &mesh) noexcept
std::uint32_t DataId
Definition DataBanks.hpp:10
constexpr DataId EmptyDataId
Definition DataBanks.hpp:13
bool qualifiedModernSceneSequence(ModernSceneKind kind, DataId meshId, std::optional< DataId > rootSequenceDataId, std::uint16_t priority, const ModernSceneOptions &options, const ModernSceneContext &context) noexcept
std::optional< ModernGltfLoadOptions > modernSceneLoadOptions(ModernSceneKind kind) noexcept
std::expected< ParsedModernSceneOptions, std::string > parseModernSceneArguments(std::span< const std::string_view > arguments)
constexpr std::size_t ModernSceneKindCount
const ModernSceneDefinition & modernSceneDefinition(ModernSceneKind kind) noexcept
std::vector< std::string_view > remaining