From 3ffa7abaf2df66a7fabfc6f751a7179880d27e99 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 26 Oct 2022 17:29:24 +0800 Subject: [PATCH] 1 --- server/gameserver/virtualbullet.cc | 28 +++++++++++++++++++++++++--- server/gameserver/virtualbullet.h | 4 ++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/server/gameserver/virtualbullet.cc b/server/gameserver/virtualbullet.cc index 5ad15e3e..eef633ad 100644 --- a/server/gameserver/virtualbullet.cc +++ b/server/gameserver/virtualbullet.cc @@ -11,7 +11,7 @@ float VirtualBullet::GetStrengthenWall() { - return 0; + return strengthened_; } long long VirtualBullet::GetWeaponUniId() @@ -117,7 +117,6 @@ void VirtualBullet::Check(float distance) //穿物件 continue; } - #if 0 if (!obstacle->CanThroughable(this)) { if (TestCollision(room, collider)) { objects.insert(collider->owner); @@ -149,7 +148,6 @@ void VirtualBullet::Check(float distance) } } } - #endif } } } @@ -287,3 +285,27 @@ bool VirtualBullet::TestCollision(Room* room, ColliderComponent* b) { return false; } + +void VirtualBullet::OnStrengthen(Obstacle* ob) +{ + if (ob->IsRoomObstacle()) { + RoomObstacle* room_ob = ob->AsRoomObstacle(); + if (room_ob->skill_meta) { + MetaData::Skill* skill_meta = room_ob->skill_meta; + if (skill_meta && skill_meta->number_meta) { + switch (skill_meta->GetMagicId()) { + case MAGIC_WLFB: + { + strengthen_wall = skill_meta->number_meta->float_ratio2; + } + break; + default: + { + + } + break; + } + } + } + } +} diff --git a/server/gameserver/virtualbullet.h b/server/gameserver/virtualbullet.h index 41ea534c..d8feae61 100644 --- a/server/gameserver/virtualbullet.h +++ b/server/gameserver/virtualbullet.h @@ -8,6 +8,7 @@ namespace MetaData struct GridCell; class Room; +class Obstacle; class VirtualBullet : public IBullet, public ITask { public: @@ -23,6 +24,7 @@ class VirtualBullet : public IBullet, public ITask a8::Vec2 dir; a8::Vec2 born_pos; a8::Vec2 born_dir; + float strengthen_wall = 0; virtual float GetStrengthenWall() override; virtual long long GetWeaponUniId() override; @@ -49,11 +51,13 @@ class VirtualBullet : public IBullet, public ITask std::set& GetGridList() { return grid_list_; }; bool TestCollision(Room* room, Entity* b); bool TestCollision(Room* room, ColliderComponent* b); + void OnStrengthen(Obstacle* ob); private: bool later_removed_ = false; a8::Vec2 pos_; std::set grid_list_; std::set hit_objects_; + float strengthened_ = 0.0f; };