2019-04-22 19:51:23 +08:00

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};
};