载入中...
搜索中...
未找到
TileLayer.h
浏览该文件的文档.
1#pragma once
2
3#include "common/ECS.h"
4#include "graphics/Color.h"
6
7#include <cstdint>
8#include <string>
9#include <vector>
10
11namespace eve::graphics {
12class Graphics;
13class Camera2D;
14class Canvas;
15class Texture;
16} // namespace eve::graphics
17
18namespace eve::map {
19
20// Color lives in eve::graphics (see graphics/Canvas.h); re-expose it here so
21// tile code keeps the unqualified form.
23
30class TileLayer : public ecs::Entity {
31public:
32 ENTITY(TileLayer, ecs::Entity)
33
34 void release() override {}
35
49
50 struct Tiles {
51 std::vector<uint32_t> gids;
52 };
53
54 struct Tileset {
56 int firstGid = 1;
57 int columns = 1;
58 int tileW = 32;
59 int tileH = 32;
60 int margin = 0;
61 int spacing = 0;
62 };
63
64 struct Draw {
67 int layer = 0;
68 bool visible = true;
69 Color tint{1.f, 1.f, 1.f, 1.f};
70 };
71
72 struct Resource {
73 std::string path;
74 std::string texturePath;
75 int64_t modtime = -1;
76 bool autoReload = true;
77 };
78
79 COMPONENT(Config, config)
80 COMPONENT(Tiles, tiles)
81 COMPONENT(Tileset, tileset)
82 COMPONENT(Draw, draw)
83 COMPONENT(Resource, resource)
84
85 static TileLayer *createLayer(int mapW, int mapH, float tileW = 32.f, float tileH = 32.f);
86
88 void setOrigin(float x, float y);
89 float getX();
90 float getY();
91
93 int getMapWidth();
94 int getMapHeight();
96 float getTileWidth();
97 float getTileHeight();
98 void setTileSize(float tileW, float tileH);
99
101 void resize(int mapW, int mapH);
102
104 void setTile(int tx, int ty, int gid);
105 int getTile(int tx, int ty);
107 void fill(int gid);
109 void clear();
110
112 void setTileset(graphics::Texture *texture, int firstGid, int columns, int margin = 0,
113 int spacing = 0);
115 void setTilesetTileSize(int tileW, int tileH);
118 int getTilesetFirstGid();
119 int getTilesetColumns();
120
122 void setCanvas(graphics::Canvas *canvas);
123 void setCamera(graphics::Camera2D *camera);
124
126 void setLayer(int layer);
127 int getLayer();
128
129 void setVisible(bool visible);
130 bool isVisible();
131
132 void setTint(float r, float g, float b, float a = 1.f);
133
135 bool applyConfig(const std::string &json);
137 bool loadConfig(const std::string &path);
139 bool reloadConfig();
141 void setAutoReload(bool enable);
142 bool getAutoReload();
144 std::string getConfigPath();
145
147 void tileToWorld(int tx, int ty, float &wx, float &wy);
149 float depthY(int tx, int ty);
150 void worldToTile(float wx, float wy, int &tx, int &ty);
151
153 float tileToWorldX(int tx, int ty);
154 float tileToWorldY(int tx, int ty);
155 float depthYAt(int tx, int ty);
156 int worldToTileX(float wx, float wy);
157 int worldToTileY(float wx, float wy);
158};
159
161inline uint32_t tileGid(uint32_t raw) { return raw & 0x0FFFFFFFu; }
162
163} // namespace eve::map
int y
Definition Grass.cpp:135
int x
Definition Grass.cpp:135
uint32_t a
uint32_t b
TileLayer * layer
int spacing
int firstGid
int columns
int tileW
int margin
int tileH
std::vector< WfcTile > tiles
Definition WfcSimple.cpp:22
Declarative 2D camera (viewport center + zoom).
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:17
ECS tile layer entity. Script mutates tile GIDs / tileset / draw; TileRenderSystem batch-draws atlas ...
Definition TileLayer.h:30
std::string getConfigPath()
Path of the bound config file.
void clear()
Clears the layer to empty.
Definition TileLayer.cpp:69
float getTileWidth()
Tile size in pixels.
Definition TileLayer.cpp:35
graphics::Texture * getTilesetTexture()
Bound tileset accessors.
Definition TileLayer.cpp:92
void setOrigin(float x, float y)
World origin of the layer (pixels).
Definition TileLayer.cpp:25
bool loadConfig(const std::string &path)
Loads a config file and binds it for hot reload.
int worldToTileX(float wx, float wy)
void setTile(int tx, int ty, int gid)
Tile GID access; 0 = empty.
Definition TileLayer.cpp:52
void setAutoReload(bool enable)
Enables/disables automatic config hot reload.
void setTileset(graphics::Texture *texture, int firstGid, int columns, int margin=0, int spacing=0)
Binds the atlas texture and tile table.
Definition TileLayer.cpp:71
void resize(int mapW, int mapH)
Resizes the tile grid (existing GIDs preserved where possible).
Definition TileLayer.cpp:44
bool applyConfig(const std::string &json)
Applies a map JSON config (Config + Tiles + Tileset + Draw).
void setTilesetTileSize(int tileW, int tileH)
Tile size in pixels of the bound tileset.
Definition TileLayer.cpp:86
void setLayer(int layer)
Draw order layer / visibility / tint.
Definition TileLayer.cpp:99
int worldToTileY(float wx, float wy)
void setCamera(graphics::Camera2D *camera)
Definition TileLayer.cpp:97
int getTile(int tx, int ty)
Definition TileLayer.cpp:58
bool reloadConfig()
Re-reads the bound config file (hot reload).
static TileLayer * createLayer(int mapW, int mapH, float tileW=32.f, float tileH=32.f)
Definition TileLayer.cpp:12
float tileToWorldX(int tx, int ty)
Scalar conversion helpers.
float depthY(int tx, int ty)
Painter's-algorithm depth for 2.5D draw ordering.
void worldToTile(float wx, float wy, int &tx, int &ty)
float depthYAt(int tx, int ty)
void setTileSize(float tileW, float tileH)
Definition TileLayer.cpp:38
void tileToWorld(int tx, int ty, float &wx, float &wy)
Tile-index ↔ world-pixel conversions (per layer orientation).
void setCanvas(graphics::Canvas *canvas)
Draw target canvas / camera.
Definition TileLayer.cpp:96
void setVisible(bool visible)
float tileToWorldY(int tx, int ty)
void fill(int gid)
Fills the whole layer with one GID.
Definition TileLayer.cpp:64
int getMapWidth()
Map dimensions in tiles.
Definition TileLayer.cpp:33
void setTint(float r, float g, float b, float a=1.f)
void release() override
Definition TileLayer.h:34
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition AnimTrail.h:6
glm::vec4 Color
RGBA color used by every graphics draw call. Lives inside eve::graphics so including a graphics heade...
Definition Color.h:13
放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectang...
MapOrientation
Tile map layout: orthogonal, isometric, staggered, or hexagonal.
uint32_t tileGid(uint32_t raw)
Strip Tiled flip / rotate flags; keep low 28 bits.
Definition TileLayer.h:161
StaggerIndex
Which rows/columns are offset by half a tile.
StaggerAxis
Stagger axis for staggered/hex maps (shift every other row/column).
MapOrientation orientation
Definition TileLayer.h:43
graphics::Canvas * canvas
Definition TileLayer.h:65
graphics::Camera2D * camera
Definition TileLayer.h:66
std::vector< uint32_t > gids
Definition TileLayer.h:51
graphics::Texture * texture
Definition TileLayer.h:55