diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 52455264..390974e1 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -45,6 +45,7 @@ #include "custom_battle.h" #include "custom_team.h" #include "custom_member.h" +#include "room_agent.h" #include "mt/Param.h" #include "mt/Hero.h" @@ -124,6 +125,8 @@ void Room::Init() air_drop_ = std::make_shared(this); air_raid_ = std::make_shared(this); batch_sync_ = std::make_shared(this); + room_agent_ = behaviac::Agent::Create(); + room_agent_->SetRoom(this); CreateSpawnPoints(); CreateWorldObjects(); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 4b2ed3b0..7854fca7 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -281,7 +281,7 @@ public: int GetMobaLeftTime(); Team* GetMobaTeamA() { return moba_team_a_; } Team* GetMobaTeamB() { return moba_team_b_; } - RoomAgent* GetRoomAgent() { return room_agent_.get(); } + RoomAgent* GetRoomAgent() { return room_agent_; } private: void ShuaAndroid(); @@ -440,7 +440,7 @@ private: Team* moba_team_a_ = nullptr; Team* moba_team_b_ = nullptr; - std::shared_ptr room_agent_; + RoomAgent* room_agent_; friend class Incubator; friend class Team; diff --git a/server/gameserver/room_agent.cc b/server/gameserver/room_agent.cc index 2bfea290..f7e4a7aa 100644 --- a/server/gameserver/room_agent.cc +++ b/server/gameserver/room_agent.cc @@ -7,7 +7,6 @@ RoomAgent::RoomAgent():BaseAgent() { - } RoomAgent::~RoomAgent() @@ -59,8 +58,3 @@ bool RoomAgent::IsGameOver() { return room_->IsGameOver(); } - -void RoomAgent::SetRoom(Room* room) -{ - room_ = room; -} diff --git a/server/gameserver/room_agent.h b/server/gameserver/room_agent.h index 48ba29a7..9cf31a8e 100644 --- a/server/gameserver/room_agent.h +++ b/server/gameserver/room_agent.h @@ -23,7 +23,8 @@ public: HeroAgent* FindHero(int hero_uniid); bool IsGameOver(); - void SetRoom(Room* room); + void SetRoom(Room* room) { room_ = room; } + virtual Room* GetRoom() { return room_; } private: Room* room_ = nullptr;