载入中...
搜索中...
未找到
Map.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Module.h"
4#include "map/TileLayer.h"
5#include "map/MapObject.h"
6#include "map/Pathfinder.h"
7#include "map/Fov.h"
8
9#include <string>
10#include <vector>
11
12namespace eve::graphics {
13class Graphics;
14}
15
16namespace eve::map {
17
24class Map : public Module {
25public:
27 Map() = default;
28 ~Map() override = default;
29
30 TileLayer *newLayer(int mapW, int mapH, float tileW = 32.f, float tileH = 32.f);
31
35 Pathfinder *newPathfinderSize(int mapW, int mapH);
36
40 Fov *newFovSize(int mapW, int mapH);
42 Fov *newFovVolume(int mapW, int mapH, int depth);
43
49 TileLayer *newLayerFromFile(const std::string &path);
50
52 int loadFromFile(const std::string &path);
53
54 void update(float dt);
55 void render(graphics::Graphics *gfx);
56 int pollConfigs();
57
58 int getLayerCount() const;
60 TileLayer *getLayer(int index) const;
61
62 int getObjectCount() const;
63 std::string getObjectName(int i) const;
64 std::string getObjectType(int i) const;
65 float getObjectX(int i) const;
66 float getObjectY(int i) const;
67 float getObjectWidth(int i) const;
68 float getObjectHeight(int i) const;
69 int getObjectGid(int i) const;
70
72 void setObjects(std::vector<MapObject> objects);
73
79 bool resolveDualGrid(TileLayer *logic, TileLayer *display);
80 bool resolveDualGridFilled(TileLayer *logic, TileLayer *display, int filledGid);
82 int dualGridMaskAt(TileLayer *logic, int dx, int dy, int filledGid);
84 int dualGridFrame(int mask);
86 float dualGridOffsetX(TileLayer *logic);
87 float dualGridOffsetY(TileLayer *logic);
88 std::string lastDualGridError() const;
89
90private:
91 std::vector<MapObject> objects_;
92 std::vector<TileLayer *> loadedLayers_;
93 std::string dualGridError_;
94};
95
96} // namespace eve::map
float depth
TileLayer * layer
int tileW
int tileH
Dynamic field-of-view / fog-of-war facade. Phase A: 2D shadowcast + multi-revealer + explored memory....
Definition Fov.h:24
Map module — factory + script binding for 2D tilemaps. Per-frame: TileConfigSystem (hot reload) → uni...
Definition Map.h:24
std::string getObjectName(int i) const
Definition Map.cpp:96
float getObjectHeight(int i) const
Definition Map.cpp:121
TileLayer * newLayerFromFile(const std::string &path)
Load map JSON (Tiled-compatible subset or EVEngine simplified format). Creates one TileLayer per tile...
Definition Map.cpp:48
void setObjects(std::vector< MapObject > objects)
Replace object cache (used by load / hot reload).
Definition Map.cpp:92
void update(float dt)
Definition Map.cpp:64
~Map() override=default
int loadFromFile(const std::string &path)
Same as newLayerFromFile but returns how many layers were created (0 on failure).
Definition Map.cpp:56
Pathfinder * newPathfinderSize(int mapW, int mapH)
Custom grid pathfinder (no layer); fill with setBlocked / setCellCost.
Definition Map.cpp:28
TileLayer * getLayer(int index) const
Layer created by the most recent loadFromFile/newLayerFromFile call.
Definition Map.cpp:87
std::string getObjectType(int i) const
Definition Map.cpp:101
float dualGridOffsetX(TileLayer *logic)
Projection-correct half-step origin delta for a logic layer.
Definition Map.cpp:151
float dualGridOffsetY(TileLayer *logic)
Definition Map.cpp:158
bool resolveDualGridFilled(TileLayer *logic, TileLayer *display, int filledGid)
Definition Map.cpp:137
bool resolveDualGrid(TileLayer *logic, TileLayer *display)
Dual-grid resolve: paint logic (filled/empty), fill display with 15-tile autotiles on a half-offset g...
Definition Map.cpp:131
int getObjectGid(int i) const
Definition Map.cpp:126
Pathfinder * newPathfinder(TileLayer *layer)
Pathfinder bound to a TileLayer (syncs walkability from GIDs).
Definition Map.cpp:23
int getLayerCount() const
Definition Map.cpp:79
float getObjectWidth(int i) const
Definition Map.cpp:116
Fov * newFovVolume(int mapW, int mapH, int depth)
Volume FOV (W×H×D voxels); mode defaults to volume.
Definition Map.cpp:43
float getObjectX(int i) const
Definition Map.cpp:106
int dualGridFrame(int mask)
Default atlas frame for mask (-1 = empty).
Definition Map.cpp:149
TileLayer * newLayer(int mapW, int mapH, float tileW=32.f, float tileH=32.f)
Definition Map.cpp:19
Fov * newFovSize(int mapW, int mapH)
Custom grid FOV (no layer); fill with setOpaque.
Definition Map.cpp:38
int getObjectCount() const
Definition Map.cpp:94
float getObjectY(int i) const
Definition Map.cpp:111
void render(graphics::Graphics *gfx)
Definition Map.cpp:69
std::string lastDualGridError() const
Definition Map.cpp:165
int dualGridMaskAt(TileLayer *logic, int dx, int dy, int filledGid)
4-bit corner mask at display cell (dx,dy); see DualGrid.h.
Definition Map.cpp:144
Map()=default
Fov * newFov(TileLayer *layer)
FOV bound to a TileLayer (syncs opacity from opaque GIDs).
Definition Map.cpp:33
int pollConfigs()
Definition Map.cpp:77
Pathfinding facade. Single-agent: A*. Group (same goal): Flow Field + follow. Grid/topology internals...
Definition Pathfinder.h:17
ECS tile layer entity. Script mutates tile GIDs / tileset / draw; TileRenderSystem batch-draws atlas ...
Definition TileLayer.h:30
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition AnimTrail.h:6
放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectang...