1
This commit is contained in:
parent
bc2fe8759a
commit
94a49baddb
@ -34,6 +34,11 @@ void Grid::Init(int width, int height, int cell_width)
|
|||||||
grid_offset_arr_[6] = cell_count_per_row_ - 1;
|
grid_offset_arr_[6] = cell_count_per_row_ - 1;
|
||||||
grid_offset_arr_[7] = cell_count_per_row_;
|
grid_offset_arr_[7] = cell_count_per_row_;
|
||||||
grid_offset_arr_[8] = cell_count_per_row_ + 1;
|
grid_offset_arr_[8] = cell_count_per_row_ + 1;
|
||||||
|
|
||||||
|
min_x_ = cell_width_ * 1;
|
||||||
|
min_y_ = cell_width_ * 1;
|
||||||
|
max_x_ = cell_width_ * (cell_count_per_row_ - 1);
|
||||||
|
max_y_ = cell_width_ * (cell_count_per_col_ - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::UnInit()
|
void Grid::UnInit()
|
||||||
@ -44,57 +49,75 @@ void Grid::UnInit()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get123456789(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get123456789(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
for (size_t i = 1; i <= 9; ++i) {
|
for (size_t i = 1; i <= 9; ++i) {
|
||||||
GetGridList(grid_id, i, grid_list);
|
GetGridList(grid_id, i, grid_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get123(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get123(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 1, grid_list);
|
GetGridList(grid_id, 1, grid_list);
|
||||||
GetGridList(grid_id, 2, grid_list);
|
GetGridList(grid_id, 2, grid_list);
|
||||||
GetGridList(grid_id, 3, grid_list);
|
GetGridList(grid_id, 3, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get456(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get456(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 4, grid_list);
|
GetGridList(grid_id, 4, grid_list);
|
||||||
GetGridList(grid_id, 5, grid_list);
|
GetGridList(grid_id, 5, grid_list);
|
||||||
GetGridList(grid_id, 6, grid_list);
|
GetGridList(grid_id, 6, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get789(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get789(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 7, grid_list);
|
GetGridList(grid_id, 7, grid_list);
|
||||||
GetGridList(grid_id, 8, grid_list);
|
GetGridList(grid_id, 8, grid_list);
|
||||||
GetGridList(grid_id, 9, grid_list);
|
GetGridList(grid_id, 9, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get147(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get147(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 1, grid_list);
|
GetGridList(grid_id, 1, grid_list);
|
||||||
GetGridList(grid_id, 4, grid_list);
|
GetGridList(grid_id, 4, grid_list);
|
||||||
GetGridList(grid_id, 7, grid_list);
|
GetGridList(grid_id, 7, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get258(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get258(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 2, grid_list);
|
GetGridList(grid_id, 2, grid_list);
|
||||||
GetGridList(grid_id, 5, grid_list);
|
GetGridList(grid_id, 5, grid_list);
|
||||||
GetGridList(grid_id, 8, grid_list);
|
GetGridList(grid_id, 8, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::Get369(int grid_id, std::vector<GridCell*>& grid_list)
|
void Grid::Get369(int grid_id, std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
GetGridList(grid_id, 3, grid_list);
|
GetGridList(grid_id, 3, grid_list);
|
||||||
GetGridList(grid_id, 6, grid_list);
|
GetGridList(grid_id, 6, grid_list);
|
||||||
GetGridList(grid_id, 9, grid_list);
|
GetGridList(grid_id, 9, grid_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Grid::AddHuman(Human* hum, std::set<GridCell*>& inc_grid_list)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Grid::MoveHuman(Human* hum, float x, float y,
|
||||||
|
std::set<GridCell*>& inc_grid_list,
|
||||||
|
std::set<GridCell*>& dec_grid_list
|
||||||
|
)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Grid::AddEntity(Entity* entity)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void Grid::GetGridList(int grid_id, int offset,
|
void Grid::GetGridList(int grid_id, int offset,
|
||||||
std::vector<GridCell*>& grid_list)
|
std::set<GridCell*>& grid_list)
|
||||||
{
|
{
|
||||||
if (offset <1 || offset > 9) {
|
if (offset <1 || offset > 9) {
|
||||||
abort();
|
abort();
|
||||||
@ -104,6 +127,6 @@ void Grid::GetGridList(int grid_id, int offset,
|
|||||||
}
|
}
|
||||||
int tmp_grid_id = grid_id + grid_offset_arr_[offset - 1];
|
int tmp_grid_id = grid_id + grid_offset_arr_[offset - 1];
|
||||||
if (tmp_grid_id > 0) {
|
if (tmp_grid_id > 0) {
|
||||||
grid_list.push_back(&cells_[tmp_grid_id]);
|
grid_list.insert(&cells_[tmp_grid_id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@ struct GridCell
|
|||||||
4 5 6
|
4 5 6
|
||||||
7 8 9
|
7 8 9
|
||||||
*/
|
*/
|
||||||
|
class Human;
|
||||||
|
class Entity;
|
||||||
class Room;
|
class Room;
|
||||||
class Grid
|
class Grid
|
||||||
{
|
{
|
||||||
@ -21,17 +23,25 @@ class Grid
|
|||||||
|
|
||||||
void Init(int width, int height, int cell_width);
|
void Init(int width, int height, int cell_width);
|
||||||
void UnInit();
|
void UnInit();
|
||||||
void Get123456789(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get123456789(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get123(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get123(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get456(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get456(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get789(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get789(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get147(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get147(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get258(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get258(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
void Get369(int grid_id, std::vector<GridCell*>& grid_list);
|
void Get369(int grid_id, std::set<GridCell*>& grid_list);
|
||||||
|
|
||||||
|
void AddHuman(Human* hum, std::set<GridCell*>& inc_grid_list);
|
||||||
|
void MoveHuman(Human* hum, float x, float y,
|
||||||
|
std::set<GridCell*>& inc_grid_list,
|
||||||
|
std::set<GridCell*>& dec_grid_list
|
||||||
|
);
|
||||||
|
|
||||||
|
void AddEntity(Entity* entity);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
inline void GetGridList(int grid_id, int offset,
|
inline void GetGridList(int grid_id, int offset,
|
||||||
std::vector<GridCell*>& grid_list);
|
std::set<GridCell*>& grid_list);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Room* room_ = nullptr;
|
Room* room_ = nullptr;
|
||||||
@ -42,7 +52,10 @@ class Grid
|
|||||||
int cell_width_ = 0;
|
int cell_width_ = 0;
|
||||||
int cell_count_per_row_ = 0;
|
int cell_count_per_row_ = 0;
|
||||||
int cell_count_per_col_ = 0;
|
int cell_count_per_col_ = 0;
|
||||||
Vector2D min_;
|
int min_x_ = 0;
|
||||||
Vector2D max_;
|
int min_y_ = 0;
|
||||||
|
int max_x_ = 0;
|
||||||
|
int max_y_ = 0;
|
||||||
int grid_offset_arr_[9] = {0};
|
int grid_offset_arr_[9] = {0};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user