载入中...
搜索中...
未找到
DualGrid.h
浏览该文件的文档.
1#pragma once
2
3#include "map/TileLayer.h"
4
5#include <array>
6#include <cstdint>
7#include <string>
8
9namespace eve::map {
10
30 int filledGid = 0;
37 bool applyHalfOffset = true;
39 bool hideLogic = true;
45};
46
48inline int dualGridMaskFromCorners(bool tl, bool tr, bool bl, bool br) {
49 return (tl ? 1 : 0) | (tr ? 2 : 0) | (bl ? 4 : 0) | (br ? 8 : 0);
50}
51
56int dualGridDefaultFrame(int mask);
57
59const std::array<int, 16> &dualGridDefaultFrameTable();
60
68void dualGridHalfOffset(const TileLayer::Config &cfg, float &offX, float &offY);
69
71bool dualGridLogicFilled(TileLayer &logic, int tx, int ty, int filledGid);
72
78int dualGridMaskAt(TileLayer &logic, int dx, int dy, int filledGid = 0);
79
87bool resolveDualGrid(TileLayer *logic, TileLayer *display, const DualGridOptions &opts,
88 std::string *error = nullptr);
89
91bool resolveDualGrid(TileLayer *logic, TileLayer *display, std::string *error = nullptr);
92
93} // namespace eve::map
std::string error
float tr
放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectang...
int dualGridMaskAt(TileLayer &logic, int dx, int dy, int filledGid)
4-bit corner mask for display cell (dx,dy) on a (logicW+1)×(logicH+1) grid. Samples logic (dx-1,...
Definition DualGrid.cpp:72
bool dualGridLogicFilled(TileLayer &logic, int tx, int ty, int filledGid)
Whether logic cell (tx,ty) is filled under options. Out of bounds → false.
Definition DualGrid.cpp:63
int dualGridDefaultFrame(int mask)
Default 4x4 atlas frame index for mask 0..15. -1 means draw nothing. Matches the SpriteCook / common ...
Definition DualGrid.cpp:33
int dualGridMaskFromCorners(bool tl, bool tr, bool bl, bool br)
Pack four corner occupancy bits: TL=1, TR=2, BL=4, BR=8.
Definition DualGrid.h:48
void dualGridHalfOffset(const TileLayer::Config &cfg, float &offX, float &offY)
Half-step origin delta for the display layer (added to logic origin). Orthogonal: (-tileW/2,...
Definition DualGrid.cpp:38
bool resolveDualGrid(TileLayer *logic, TileLayer *display, const DualGridOptions &opts, std::string *error)
Resolve logic → display dual-grid tiles. Resizes display to (logicW+1)×(logicH+1),...
Definition DualGrid.cpp:80
const std::array< int, 16 > & dualGridDefaultFrameTable()
Copy of the default frame table (16 entries).
Definition DualGrid.cpp:31
Dual-grid autotile (Oskar Stålberg style).
Definition DualGrid.h:28
bool hideLogic
Hide the logic layer after resolve (logic stays for gameplay queries).
Definition DualGrid.h:39
int filledGid
0 = any non-zero logic GID counts as filled; else only this GID.
Definition DualGrid.h:30
bool applyHalfOffset
Apply projection-correct half-step origin offset on the display layer.
Definition DualGrid.h:37
int firstDisplayGid
GID of atlas local id 0 on the display tileset. 0 = use display->getTilesetFirstGid() (fallback 1).
Definition DualGrid.h:35
bool useDefaultFrameTable
When true, use the default SpriteCook-style 4x4 atlas frame table. When false, GID = firstDisplayGid ...
Definition DualGrid.h:44