载入中...
搜索中...
未找到
PixelMaterial.cpp
浏览该文件的文档.
41 if (definitions.empty()) return invalidCatalog("material catalog must contain air", "materials");
69 const auto validId = [&definitions](MaterialId id) { return std::size_t(id) < definitions.size(); };
163 {MaterialId::Ice, "ice", MaterialState::Solid, 105, 255, 35, 110, 32767, 0, 32767, 0, false, -10},
164 {MaterialId::Lava, "lava", MaterialState::Liquid, 210, 180, 55, 200, 32767, 900, 32767, 0, false, 1300},
166 {MaterialId::Gunpowder, "gunpowder", MaterialState::Powder, 165, 40, 20, 70, 160, 32767, 32767, 0, true},
216 {"water.freeze", MaterialId::Water, MaterialId::Ice, TemperatureDirection::AtOrBelow, 0, 0, 100},
217 {"water.boil", MaterialId::Water, MaterialId::Steam, TemperatureDirection::AtOrAbove, 100, -20, 100},
219 {"stone.melt", MaterialId::Stone, MaterialId::Lava, TemperatureDirection::AtOrAbove, 1200, -200, 100},
220 {"lava.solidify", MaterialId::Lava, MaterialId::Stone, TemperatureDirection::AtOrBelow, 800, 100, 100},
222 return std::move(MaterialCatalog::create(std::move(materials), std::move(reactions), std::move(phaseRules)))
239std::span<const MaterialDefinition> MaterialCatalog::definitions() const noexcept { return definitions_; }
240std::span<const MaterialReactionRule> MaterialCatalog::reactions() const noexcept { return reactions_; }
241std::span<const MaterialPhaseRule> MaterialCatalog::phaseRules() const noexcept { return phaseRules_; }
Stable, structured diagnostics shared by engine modules.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Owning immutable material and reaction table used by one PixelWorld.
Definition PixelMaterial.h:84
const MaterialDefinition & definition(MaterialId id) const noexcept
Resolve a validated id; invalid ids safely project to air.
Definition PixelMaterial.cpp:234
bool canReact(MaterialId id) const noexcept
Whether this material participates in at least one binary reaction.
Definition PixelMaterial.cpp:242
static MaterialCatalog builtIn()
Construct the engine's canonical built-in catalog.
Definition PixelMaterial.cpp:151
std::span< const MaterialReactionRule > reactions() const noexcept
Borrow immutable canonical-priority reaction rules.
Definition PixelMaterial.cpp:240
std::span< const MaterialDefinition > definitions() const noexcept
Borrow immutable definitions until this catalog is destroyed.
Definition PixelMaterial.cpp:239
std::span< const MaterialPhaseRule > phaseRules() const noexcept
Borrow immutable canonical-priority phase rules.
Definition PixelMaterial.cpp:241
eve::Result< MaterialId > resolve(std::string_view name) const
Resolve a stable name or return a structured NotFound diagnostic.
Definition PixelMaterial.cpp:226
std::uint64_t fingerprint() const noexcept
Stable deterministic fingerprint included in world snapshots.
Definition PixelMaterial.cpp:250
static eve::Result< MaterialCatalog > create(std::vector< MaterialDefinition > definitions, std::vector< MaterialReactionRule > reactions={}, std::vector< MaterialPhaseRule > phaseRules={})
Validate and own a complete catalog candidate transactionally.
Definition PixelMaterial.cpp:38
bool canPhaseTransition(MaterialId id) const noexcept
Whether this material owns at least one phase transition rule.
Definition PixelMaterial.cpp:246
Definition PixelWorldGraphics.h:13
MaterialId
Compact stable material identifier stored in each authoritative cell.
Definition PixelMaterial.h:16
@ Gunpowder
@ InvalidArgument
@ NotFound
Immutable validated properties for one catalog material.
Definition PixelMaterial.h:36
std::int16_t ignitionTemperature
Definition PixelMaterial.h:44
std::uint32_t displayRgba
Canonical preview/render color encoded as 0xRRGGBBAA.
Definition PixelMaterial.h:52
std::int16_t boilingTemperature
Definition PixelMaterial.h:46
std::uint16_t heatCapacity
Definition PixelMaterial.h:43
std::vector< std::string > tags
Canonical sorted semantic tags used by authoring and rule queries.
Definition PixelMaterial.h:54
std::int16_t meltingTemperature
Definition PixelMaterial.h:45
std::uint8_t thermalConductivity
Definition PixelMaterial.h:42
std::uint16_t defaultLifetime
Definition PixelMaterial.h:47
std::int16_t defaultTemperature
Definition PixelMaterial.h:49
std::uint16_t blastResistance
Definition PixelMaterial.h:50