This commit is contained in:
aozhiwei 2019-04-22 16:22:21 +08:00
parent 405f603def
commit 0d1e52076b
2 changed files with 118 additions and 0 deletions

75
server/gameserver/grid.cc Normal file
View File

@ -0,0 +1,75 @@
#include "precompile.h"
#include "grid.h"
Grid::Grid()
{
}
Grid::~Grid()
{
}
void Grid::Init(int width, int height, int cell_width)
{
map_width_ = width;
map_height_ = height;
cell_width_ = cell_width;
cell_count_per_row_ = (map_height_ / cell_width + 1) + 2;
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];
}
void Grid::UnInit()
{
if (cells_) {
delete[] cells_;
cells_ = nullptr;
}
}
void Grid::Get123456789(int grid_id, std::vector<GridCell>& grid_list)
{
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);
if (tmp_grid_id > 0) {
}
}
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)
{
}

43
server/gameserver/grid.h Normal file
View File

@ -0,0 +1,43 @@
#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:
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_;
};