From 1fdbfcbdca16f8db740583693eab6fdafe2c3ab0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 29 Jul 2024 17:32:01 +0800 Subject: [PATCH] 1 --- server/gameserver/boxdrop.cc | 10 ++++++++++ server/gameserver/boxdrop.h | 4 ++++ server/gameserver/hero.cc | 2 ++ server/gameserver/obstacle.cc | 7 ++++++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/server/gameserver/boxdrop.cc b/server/gameserver/boxdrop.cc index f1a03737..13625f5d 100644 --- a/server/gameserver/boxdrop.cc +++ b/server/gameserver/boxdrop.cc @@ -16,3 +16,13 @@ void BoxDrop::UnInit() { } + +void BoxDrop::OnHeroDeadDrop(Hero* hero) +{ + +} + +void BoxDrop::OnObstacleDeadDrop(Obstacle* ob) +{ + +} diff --git a/server/gameserver/boxdrop.h b/server/gameserver/boxdrop.h index a0cc44e0..79af6dec 100644 --- a/server/gameserver/boxdrop.h +++ b/server/gameserver/boxdrop.h @@ -1,6 +1,8 @@ #pragma once class Room; +class Hero; +class Obstacle; class BoxDrop : public std::enable_shared_from_this { @@ -9,6 +11,8 @@ class BoxDrop : public std::enable_shared_from_this BoxDrop(Room* room); void Init(); void UnInit(); + void OnHeroDeadDrop(Hero* hero); + void OnObstacleDeadDrop(Obstacle* ob); private: Room* room_ = nullptr; diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 04e734ef..361d02b3 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -21,6 +21,7 @@ #include "movement.h" #include "ability.h" #include "skill.h" +#include "boxdrop.h" #include "f8/btmgr.h" @@ -332,6 +333,7 @@ void Hero::BeKill(int killer_id, const std::string& killer_name, int weapon_id) dead = true; if (meta->HasDrop() && !room->IsPveRoom()) { room->ScatterDrop(GetPos().ToGlmVec3(), meta->RandDrop(), false, &items); + room->GetBoxDrop()->OnHeroDeadDrop(this); } if (!room->IsPveRoom()) { for (int id : meta->_drop_list) { diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 5c2d0c51..61843d80 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -15,6 +15,7 @@ #include "entityfactory.h" #include "pbutils.h" #include "netdata.h" +#include "boxdrop.h" #include "mt/Equip.h" #include "mt/MapThing.h" @@ -174,7 +175,10 @@ void Obstacle::OnBulletHit(IBullet* bullet) } if (IsDead(bullet->GetRoom())) { ProcDieExplosion(bullet->GetRoom()); - bullet->GetSender().Get()->DropItems(this); + if (meta->HasDrop()) { + bullet->GetSender().Get()->DropItems(this); + bullet->GetRoom()->GetBoxDrop()->OnObstacleDeadDrop(this); + } if (meta->thing_type() == kObstacleOilBucket) { const mt::MapThing* bomb_meta = mt::MapThing::GetById(meta->_int_param1); if (bomb_meta) { @@ -225,6 +229,7 @@ void Obstacle::OnExplosionHit(Explosion* e) for (int drop_id : drops) { e->GetRoom()->ScatterDrop(GetPos().ToGlmVec3(), drop_id); } + e->GetRoom()->GetBoxDrop()->OnObstacleDeadDrop(this); } if (meta->thing_type() == kObstacleOilBucket) { const mt::MapThing* bomb_meta = mt::MapThing::GetById(meta->_int_param1);