From 9b83b364ac02e8076a6483456f7ade6475f540e9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 30 May 2023 14:09:02 +0800 Subject: [PATCH] 1 --- server/gameserver/batchsync.cc | 25 ++++++++++++++++++++----- server/gameserver/batchsync.h | 4 ++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/server/gameserver/batchsync.cc b/server/gameserver/batchsync.cc index 95c7b076..5d207adc 100644 --- a/server/gameserver/batchsync.cc +++ b/server/gameserver/batchsync.cc @@ -2,6 +2,8 @@ #include "batchsync.h" +#include "creature.h" + BatchSync::BatchSync(Room* room) { room_ = room; @@ -14,25 +16,38 @@ BatchSync::~BatchSync() void BatchSync::AddGlobalObject(Creature* c) { - + if (global_object_hash_.find(c->GetUniId()) != global_object_hash_.end()) { + abort(); + } } void BatchSync::RemoveGlobalObject(int obj_uniid) { - + auto itr = global_object_hash_.find(obj_uniid); + if (itr != global_object_hash_.end()) { + f8::Timer::Instance()->Delete(std::get<0>(itr->second)); + global_object_hash_.erase(itr); + } } void BatchSync::AddTeam(Team* team) { - + if (team_hash_.find(team) != team_hash_.end()) { + abort(); + } } void BatchSync::UpdateTeam(Team* team) { - + RemoveTeam(team); + AddTeam(team); } void BatchSync::RemoveTeam(Team* team) { - + auto itr = team_hash_.find(team); + if (itr != team_hash_.end()) { + f8::Timer::Instance()->Delete(std::get<0>(itr->second)); + team_hash_.erase(itr); + } } diff --git a/server/gameserver/batchsync.h b/server/gameserver/batchsync.h index 321e3d91..c41d09b2 100644 --- a/server/gameserver/batchsync.h +++ b/server/gameserver/batchsync.h @@ -29,6 +29,6 @@ class BatchSync private: Room* room_ = nullptr; f8::Attacher timer_attacher_; - std::map global_object_hash_; - std::map> team_hash_; + std::map> global_object_hash_; + std::map>> team_hash_; };