From 47e52d9eaed000f4071ec35c80d8d5da82f60104 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Aug 2021 08:22:36 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 13 +++++++++++-- server/gameserver/hero.cc | 7 +++++++ server/gameserver/hero.h | 1 + server/gameserver/room.cc | 16 ++++++++++------ server/gameserver/roomobstacle.cc | 7 +++++++ server/gameserver/roomobstacle.h | 1 + 6 files changed, 37 insertions(+), 8 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 5a3cf20..db5c01d 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2105,7 +2105,7 @@ void Creature::SummonHero(Buff* buff, hero = InternalSummonHero(hero_meta, GetAttackDir(), GetPos(), - through_wall); + through_wall); #ifdef DEBUG SendDebugMsg(a8::Format("second summon hero id:%d pos:%f,%f rad:%d ok:%d", { @@ -2760,5 +2760,14 @@ Weapon* Creature::ChooseNextSpecWeapon(int curr_weapon_slot_id) void Creature::OnBattleStart(Room* room) { - + std::vector del_buffs; + del_buffs.reserve(buff_list_.size()); + for (auto& buff : buff_list_) { + if (!buff.meta->i->post_battle_valid()) { + del_buffs.push_back(buff.buff_uniid); + } + } + for (auto itr = del_buffs.rbegin(); itr != del_buffs.rend(); ++itr) { + RemoveBuffByUniId(*itr); + } } diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 5f0449b..3f2a59a 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -340,3 +340,10 @@ void Hero::InitAI() ((HeroAI*)ai)->ForceRandomWalk(time, idle_time); } } + +void Hero::OnBattleStart(Room* room) +{ + if (master.Get()) { + + } +} diff --git a/server/gameserver/hero.h b/server/gameserver/hero.h index 3a2e973..f8d80fb 100644 --- a/server/gameserver/hero.h +++ b/server/gameserver/hero.h @@ -38,6 +38,7 @@ public: virtual void GetHitAabbBox(AabbCollider& aabb_box) override; virtual void OnAddToTargetPartObject(Entity* target) override; virtual void OnRemoveFromTargetPartObject(Entity* target) override; + virtual void OnBattleStart(Room* room) override; void DetachFromMaster(); protected: diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c184a6c..e752554 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1252,7 +1252,10 @@ void Room::UpdateGasInactive() CreateAndroid(GetRoomMaxPlayerNum() - human_hash_.size()); NotifyUiUpdate(); } + battle_start_frameno_ = GetFrameNo(); CombineTeam(); + ClearPostBattleAutoFreeList(); + OnBattleStart(); ShuaPlane(); NotifyWxVoip(); InitAndroidAI(); @@ -1287,7 +1290,12 @@ void Room::UpdateGasInactive() }); } }, - &xtimer_attacher_.timer_list_); + &xtimer_attacher_.timer_list_, + [] (const a8::XParams& param) + { + Room* room = (Room*)param.sender.GetUserData(); + room->auto_jump_timer_ = nullptr; + }); #if 1 a8::XPrintf("max_run_delay:%d %d\n", {PerfMonitor::Instance()->max_run_delay_time, a8::XGetTickCount() - begin_tick}); @@ -1389,9 +1397,7 @@ void Room::UpdateGasJump() if (map_meta_->i->init_gas_ring() > 0) { ForwardGasRing(map_meta_->i->init_gas_ring()); } - battle_start_frameno_ = GetFrameNo(); xtimer.DeleteTimer(auto_jump_timer_); - auto_jump_timer_ = nullptr; NotifyGameStart(); NotifyUiUpdate(); NotifyWxVoip(); @@ -1399,8 +1405,6 @@ void Room::UpdateGasJump() InitAirDrop(); InitAirRaid(); } - ClearPostBattleAutoFreeList(); - OnBattleStart(); } } @@ -2418,7 +2422,7 @@ ObstacleData* Room::GetPermanentObstacleData(int obstacle_uniid) long long Room::GetGasInactiveTime() { #ifdef DEBUG - return f8::IsOnlineEnv() ? 10 : 50; + return f8::IsOnlineEnv() ? 10 : 10; #endif if (room_mode_ == kZombieMode) { #if DEBUG diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 40ca0c2..3cb51f1 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -574,3 +574,10 @@ RoomObstacleWeakPtr& RoomObstacle::GetWeakPtrRef() } return weak_ptr_; } + +void RoomObstacle::OnBattleStart(Room* room) +{ + if (master.Get()) { + + } +} diff --git a/server/gameserver/roomobstacle.h b/server/gameserver/roomobstacle.h index 46b7551..51af798 100644 --- a/server/gameserver/roomobstacle.h +++ b/server/gameserver/roomobstacle.h @@ -23,6 +23,7 @@ class RoomObstacle : public Obstacle virtual void RecalcSelfCollider() override; virtual bool IsTerminatorAirDropBox(Room* room) override { return is_terminator_airdrop_box; } virtual bool DoInteraction(Human* sender) override; + virtual void OnBattleStart(Room* room) override; void ActiveTimerFunc(); void UpdateTimerFunc(); void Active();