载入中...
搜索中...
未找到
Grid2D.h
浏览该文件的文档.
1#pragma once
2
3#include "map/MapObject.h"
4
5#include <cstdint>
6#include <string>
7#include <unordered_map>
8#include <vector>
9
10namespace eve::procgen {
11
16class Grid2D {
17public:
18 void resize(int width, int height);
19 int getWidth() const;
20 int getHeight() const;
21
22 void setCell(int x, int y, int semantic);
23 int getCell(int x, int y) const;
24 void fill(int semantic);
25
32 void setDetail(int x, int y, int value);
33 int getDetail(int x, int y) const;
34
35 void setMeta(const std::string &key, const std::string &value);
36 std::string getMeta(const std::string &key, const std::string &defaultValue) const;
37
38 void clearObjects();
40 void addObjectAt(const std::string &name, const std::string &type, float x, float y);
41 void addObject(const std::string &name, const std::string &type, float x, float y, float width,
42 float height, int gid);
43 int getObjectCount() const;
44 std::string getObjectName(int i) const;
45 std::string getObjectType(int i) const;
46 float getObjectX(int i) const;
47 float getObjectY(int i) const;
48 float getObjectWidth(int i) const;
49 float getObjectHeight(int i) const;
50 int getObjectGid(int i) const;
51
52 const std::vector<uint32_t> &cells() const { return cells_; }
53 std::vector<uint32_t> &cells() { return cells_; }
54 const std::vector<uint8_t> &detail() const { return detail_; }
55 std::vector<uint8_t> &detail() { return detail_; }
56 const std::vector<map::MapObject> &objects() const { return objects_; }
57
58private:
59 bool inBounds(int x, int y) const;
60
61 int width_ = 0;
62 int height_ = 0;
63 std::vector<uint32_t> cells_;
64 std::vector<uint8_t> detail_;
65 std::unordered_map<std::string, std::string> meta_;
66 std::vector<map::MapObject> objects_;
67};
68
69} // namespace eve::procgen
std::string value
std::string type
int y
Definition Grass.cpp:135
float height
Definition Grass.cpp:235
int x
Definition Grass.cpp:135
int width
const char * name
Definition RockMesh.cpp:21
uint32_t semantic
Definition WfcSimple.cpp:15
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:16
std::vector< uint32_t > & cells()
Definition Grid2D.h:53
std::vector< uint8_t > & detail()
Definition Grid2D.h:55
const std::vector< uint8_t > & detail() const
Definition Grid2D.h:54
void setDetail(int x, int y, int value)
Per-cell detail layer (0..255), parallel to cells. Semantics stay in cells (palette/GID compatible); ...
Definition Grid2D.cpp:37
std::string getObjectType(int i) const
Definition Grid2D.cpp:79
int getWidth() const
Definition Grid2D.cpp:20
const std::vector< map::MapObject > & objects() const
Definition Grid2D.h:56
float getObjectWidth(int i) const
Definition Grid2D.cpp:91
int getDetail(int x, int y) const
Definition Grid2D.cpp:42
void resize(int width, int height)
Definition Grid2D.cpp:13
float getObjectY(int i) const
Definition Grid2D.cpp:87
void fill(int semantic)
Definition Grid2D.cpp:33
void setCell(int x, int y, int semantic)
Definition Grid2D.cpp:23
void addObject(const std::string &name, const std::string &type, float x, float y, float width, float height, int gid)
Definition Grid2D.cpp:60
int getCell(int x, int y) const
Definition Grid2D.cpp:28
float getObjectX(int i) const
Definition Grid2D.cpp:83
void addObjectAt(const std::string &name, const std::string &type, float x, float y)
Script-friendly: name/type + tile coords.
Definition Grid2D.cpp:56
int getObjectCount() const
Definition Grid2D.cpp:73
int getObjectGid(int i) const
Definition Grid2D.cpp:99
float getObjectHeight(int i) const
Definition Grid2D.cpp:95
std::string getObjectName(int i) const
Definition Grid2D.cpp:75
void setMeta(const std::string &key, const std::string &value)
Definition Grid2D.cpp:47
int getHeight() const
Definition Grid2D.cpp:21
std::string getMeta(const std::string &key, const std::string &defaultValue) const
Definition Grid2D.cpp:49
const std::vector< uint32_t > & cells() const
Definition Grid2D.h:52