49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#pragma once
|
|
|
|
class Human;
|
|
|
|
struct GridCell
|
|
{
|
|
std::set<Human*> human_list;
|
|
};
|
|
|
|
/*
|
|
1 2 3
|
|
4 5 6
|
|
7 8 9
|
|
*/
|
|
class Room;
|
|
class Grid
|
|
{
|
|
public:
|
|
Grid();
|
|
~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);
|
|
|
|
private:
|
|
inline void GetGridList(int grid_id, int offset,
|
|
std::vector<GridCell*>& grid_list);
|
|
|
|
private:
|
|
Room* room_ = nullptr;
|
|
GridCell* cells_ = nullptr;
|
|
int max_grid_id_ = 0;
|
|
int map_width_ = 0;
|
|
int map_height_ = 0;
|
|
int cell_width_ = 0;
|
|
int cell_count_per_row_ = 0;
|
|
int cell_count_per_col_ = 0;
|
|
Vector2D min_;
|
|
Vector2D max_;
|
|
int grid_offset_arr_[9] = {0};
|
|
};
|