载入中...
搜索中...
未找到
DualGrid.h 文件参考
#include "map/TileLayer.h"
#include <array>
#include <cstdint>
#include <string>

浏览源代码.

struct  eve::map::DualGridOptions
 Dual-grid autotile (Oskar Stålberg style). 更多...
 

命名空间

namespace  eve
 
namespace  eve::map
 放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectangle / iso / staggered / hex 与 XY/XZ 平面轴)。
 

函数

int eve::map::dualGridMaskFromCorners (bool tl, bool tr, bool bl, bool br)
 Pack four corner occupancy bits: TL=1, TR=2, BL=4, BR=8.
 
int eve::map::dualGridDefaultFrame (int mask)
 Default 4x4 atlas frame index for mask 0..15. -1 means draw nothing. Matches the SpriteCook / common dual-grid sheet layout.
 
const std::array< int, 16 > & eve::map::dualGridDefaultFrameTable ()
 Copy of the default frame table (16 entries).
 
void eve::map::dualGridHalfOffset (const TileLayer::Config &cfg, float &offX, float &offY)
 Half-step origin delta for the display layer (added to logic origin). Orthogonal: (-tileW/2, -tileH/2) Isometric: (0, -tileH/2) — equivalent to logic coords (tx-0.5, ty-0.5) Staggered/Hex Y: (-tileW/2, -pitchY/2) Staggered/Hex X: (-pitchX/2, -tileH/2)
 
bool eve::map::dualGridLogicFilled (TileLayer &logic, int tx, int ty, int filledGid)
 Whether logic cell (tx,ty) is filled under options. Out of bounds → false.
 
int eve::map::dualGridMaskAt (TileLayer &logic, int dx, int dy, int filledGid=0)
 4-bit corner mask for display cell (dx,dy) on a (logicW+1)×(logicH+1) grid. Samples logic (dx-1,dy-1), (dx,dy-1), (dx-1,dy), (dx,dy) in index space (orientation-independent topology).
 
bool eve::map::resolveDualGrid (TileLayer *logic, TileLayer *display, const DualGridOptions &opts, std::string *error=nullptr)
 Resolve logic → display dual-grid tiles. Resizes display to (logicW+1)×(logicH+1), copies tile size / orientation / stagger / hex from logic, optionally applies projection-correct half-step origin offset, writes GIDs. Returns false and sets error on invalid args.
 
bool eve::map::resolveDualGrid (TileLayer *logic, TileLayer *display, std::string *error=nullptr)
 Convenience: any non-zero filled, default frame table, half offset, hide logic.