载入中...
搜索中...
未找到
HexVisibility.cpp
浏览该文件的文档.
23[[nodiscard]] Result<void> validateView(const HexMap& map, const HexVisibility& visibility, HexCoordinates from) {
24 if (!map.contains(from)) return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "view origin is outside the hex map", "hexmap"));
26 return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "visibility counters must be reset to map.cellCount() before a view update", "hexmap"));
49std::int32_t HexVisibility::visibleCellCount() const noexcept { return static_cast<std::int32_t>(touched_.size()); }
Stable, structured diagnostics shared by engine modules.
Reference-counted cell visibility and explored state.
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
bool ok() const noexcept
Whether this result represents a non-failure outcome.
Definition Result.h:255
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
HexCoordinates coordinatesAt(std::int32_t index) const noexcept
Coordinates of a linear cell index; out-of-range indices return (0, 0).
Definition HexMap.cpp:69
std::int32_t chunkIndexOf(HexCoordinates coordinates) const noexcept
Chunk index owning coordinates, or -1 when outside the grid.
Definition HexMap.cpp:102
Result< void > setExplored(HexCoordinates c, bool explored)
Sets the explored (fog-of-war) latch of a cell.
Definition HexMap.cpp:482
void markChunkDirtyAndNeighbors(std::int32_t chunkIndex) noexcept
Marks one chunk and its direct chunk neighbours dirty.
Definition HexMap.cpp:136
Reusable search scratch: one record per cell plus a priority bucket queue.
Definition HexSearch.h:68
std::int32_t visibility(std::int32_t cellIndex) const noexcept
Number of viewers currently covering the cell.
Definition HexVisibility.cpp:44
void reset(std::int32_t cellCount)
Sizes the counter array for cellCount cells and zeroes it.
Definition HexVisibility.cpp:34
Result< void > increase(HexMap &map, HexSearchContext &scratch, HexCoordinates from, std::int32_t range)
Adds one viewer at from.
Definition HexVisibility.cpp:53
std::int32_t visibleCellCount() const noexcept
Number of cells with at least one viewer.
Definition HexVisibility.cpp:49
void clear(HexMap &map) noexcept
Drops every viewer, leaving the map's explored flags untouched.
Definition HexVisibility.cpp:102
Result< void > decrease(HexMap &map, HexSearchContext &scratch, HexCoordinates from, std::int32_t range)
Removes one viewer at from.
Definition HexVisibility.cpp:76
bool isVisible(std::int32_t cellIndex) const noexcept
Whether any viewer currently sees the cell.
Definition HexVisibility.cpp:39
Definition HexCell.h:9
Result< void > collectVisibleCells(const HexMap &map, HexSearchContext &scratch, HexCoordinates from, std::int32_t range, std::vector< std::int32_t > &out)
Collects every cell visible from from within range.
Definition HexSearch.cpp:250
@ InvalidArgument