add GetGridList
This commit is contained in:
parent
1d8d1ae91b
commit
bc2fe8759a
@ -22,6 +22,18 @@ void Grid::Init(int width, int height, int cell_width)
|
||||
cell_count_per_col_ = (map_width_ / cell_width + 1) + 2;
|
||||
max_grid_id_ = cell_count_per_row_ * cell_count_per_col_;
|
||||
cells_ = new GridCell[max_grid_id_ + 1];
|
||||
|
||||
grid_offset_arr_[0] = -(cell_count_per_row_ - 1);
|
||||
grid_offset_arr_[1] = -cell_count_per_row_;
|
||||
grid_offset_arr_[2] = -(cell_count_per_row_ + 1);
|
||||
|
||||
grid_offset_arr_[3] = -1;
|
||||
grid_offset_arr_[4] = 0;
|
||||
grid_offset_arr_[5] = 1;
|
||||
|
||||
grid_offset_arr_[6] = cell_count_per_row_ - 1;
|
||||
grid_offset_arr_[7] = cell_count_per_row_;
|
||||
grid_offset_arr_[8] = cell_count_per_row_ + 1;
|
||||
}
|
||||
|
||||
void Grid::UnInit()
|
||||
@ -32,44 +44,66 @@ void Grid::UnInit()
|
||||
}
|
||||
}
|
||||
|
||||
void Grid::Get123456789(int grid_id, std::vector<GridCell>& grid_list)
|
||||
void Grid::Get123456789(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
for (size_t i = 1; i <= 9; ++i) {
|
||||
GetGridList(grid_id, i, grid_list);
|
||||
}
|
||||
}
|
||||
|
||||
void Grid::Get123(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 1, grid_list);
|
||||
GetGridList(grid_id, 2, grid_list);
|
||||
GetGridList(grid_id, 3, grid_list);
|
||||
}
|
||||
|
||||
void Grid::Get456(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 4, grid_list);
|
||||
GetGridList(grid_id, 5, grid_list);
|
||||
GetGridList(grid_id, 6, grid_list);
|
||||
}
|
||||
|
||||
void Grid::Get789(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 7, grid_list);
|
||||
GetGridList(grid_id, 8, grid_list);
|
||||
GetGridList(grid_id, 9, grid_list);
|
||||
}
|
||||
|
||||
void Grid::Get147(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 1, grid_list);
|
||||
GetGridList(grid_id, 4, grid_list);
|
||||
GetGridList(grid_id, 7, grid_list);
|
||||
}
|
||||
|
||||
void Grid::Get258(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 2, grid_list);
|
||||
GetGridList(grid_id, 5, grid_list);
|
||||
GetGridList(grid_id, 8, grid_list);
|
||||
}
|
||||
|
||||
void Grid::Get369(int grid_id, std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
GetGridList(grid_id, 3, grid_list);
|
||||
GetGridList(grid_id, 6, grid_list);
|
||||
GetGridList(grid_id, 9, grid_list);
|
||||
}
|
||||
|
||||
void Grid::GetGridList(int grid_id, int offset,
|
||||
std::vector<GridCell*>& grid_list)
|
||||
{
|
||||
if (offset <1 || offset > 9) {
|
||||
abort();
|
||||
}
|
||||
if (grid_id <= 0 || grid_id >= max_grid_id_) {
|
||||
return;
|
||||
}
|
||||
int tmp_grid_id = 0;
|
||||
tmp_grid_id = grid_id - (cell_count_per_row_ + 1);
|
||||
int tmp_grid_id = grid_id + grid_offset_arr_[offset - 1];
|
||||
if (tmp_grid_id > 0) {
|
||||
|
||||
grid_list.push_back(&cells_[tmp_grid_id]);
|
||||
}
|
||||
}
|
||||
|
||||
void Grid::Get123(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Grid::Get456(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Grid::Get789(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Grid::Get147(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Grid::Get258(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Grid::Get369(int grid_id, std::vector<GridCell>& grid_list)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -21,13 +21,17 @@ class Grid
|
||||
|
||||
void Init(int width, int height, int cell_width);
|
||||
void UnInit();
|
||||
void Get123456789(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get123(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get456(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get789(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get147(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get258(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get369(int grid_id, std::vector<GridCell>& grid_list);
|
||||
void Get123456789(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get123(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get456(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get789(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get147(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get258(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
void Get369(int grid_id, std::vector<GridCell*>& grid_list);
|
||||
|
||||
private:
|
||||
inline void GetGridList(int grid_id, int offset,
|
||||
std::vector<GridCell*>& grid_list);
|
||||
|
||||
private:
|
||||
Room* room_ = nullptr;
|
||||
@ -40,4 +44,5 @@ class Grid
|
||||
int cell_count_per_col_ = 0;
|
||||
Vector2D min_;
|
||||
Vector2D max_;
|
||||
int grid_offset_arr_[9] = {0};
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user