aozhiwei 3655a279b9 1
2023-06-04 10:37:39 +08:00

46 lines
1.5 KiB
C++

#pragma once
class Entity;
class Obstacle;
class Human;
class Room;
class Creature;
class GridCell
{
public:
GridCell();
void ClearRoomData(Room* room);
void TraverseHumanList(std::function<void (Human*, bool&)> func,
int room_idx,
bool& stop);
void TraverseCreatures(std::function<void (Creature*, bool&)>& func,
int room_idx,
bool& stop);
void TraverseObstacles(std::function<void (Obstacle*, bool&)>& func,
int room_idx,
bool& stop);
void AddCreature(Creature* c);
void RemoveCreature(Creature* c);
bool CreatureExists(Creature* c);
void AddRoomEntity(Room* room, Entity* entity);
void RemoveRoomEntity(Room* room, Entity* entity);
bool EntityExists(Room* room, Entity* Entity);
void TraverseLayer0EntityList(std::function<void (Entity*, bool&)>& func,
bool& stop);
void TraverseLayer1EntityList(std::function<void (Entity*, bool&)>& func,
int room_idx,
bool& stop);
void TraverseAllLayerEntityList(std::function<void (Entity*, bool&)>& func,
int room_idx,
bool& stop);
private:
std::vector<std::set<Entity*>> entitys_;
std::vector<std::set<Obstacle*>> obstacles_;
std::vector<std::set<Creature*>> creatures_;
};