From b782a52206b92aa00eef6afef921ef0023c03c76 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Jul 2019 11:31:09 +0800 Subject: [PATCH] remove warning --- server/gameserver/collider.cc | 12 ++++++++++++ server/gameserver/entity.cc | 2 ++ server/gameserver/human.cc | 9 +++++++-- server/gameserver/human.h | 2 +- server/gameserver/obstacle.cc | 8 ++++++-- server/gameserver/obstacle.h | 1 + 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/server/gameserver/collider.cc b/server/gameserver/collider.cc index f322d71..786bf36 100644 --- a/server/gameserver/collider.cc +++ b/server/gameserver/collider.cc @@ -28,6 +28,8 @@ bool ColliderComponent::IntersectSegment(a8::Vec2& p0, a8::Vec2& p1) a_circle->rad); } break; + default: + break; } return false; } @@ -62,6 +64,8 @@ bool ColliderComponent::Intersect(ColliderComponent* b) b_circle->rad); } break; + default: + break; } }; break; @@ -121,9 +125,13 @@ bool ColliderComponent::Intersect(ColliderComponent* b) b_circle->rad); } break; + default: + break; } } break; + default: + break; } return false; } @@ -157,6 +165,8 @@ bool ColliderComponent::CalcSafePoint(ColliderComponent* b, a8::Vec2& new_pos) new_pos); } break; + default: + break; } } break; @@ -186,6 +196,8 @@ bool ColliderComponent::CalcSafePoint(ColliderComponent* b, a8::Vec2& new_pos) new_pos); } break; + default: + break; } } break; diff --git a/server/gameserver/entity.cc b/server/gameserver/entity.cc index 9791e85..8e748e5 100644 --- a/server/gameserver/entity.cc +++ b/server/gameserver/entity.cc @@ -103,6 +103,8 @@ void Entity::FindLocationWithTarget(Entity* target) } } break; + default: + break; } if (building) { break; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 7d3f59a..782cd69 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1734,10 +1734,15 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase) if (obstacle) { obstacle->master_id = entity_uniid; room->xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 5, - a8::XParams(), + a8::XParams() + .SetSender(obstacle), [] (const a8::XParams& param) { - + Obstacle* obstacle = (Obstacle*)param.sender.GetUserData(); + if (!obstacle->dead) { + obstacle->dead = true; + obstacle->Explosion(); + } }, &obstacle->xtimer_attacher.timer_list_); } diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 2dd61e4..83452e5 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -119,7 +119,7 @@ class Human : public Entity std::map skin_configs; bool use_skill = false; - int curr_skill_phase = 0; + size_t curr_skill_phase = 0; int skill_target_id = 0; a8::Vec2 skill_dir; a8::Vec2 skill_target_pos; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index ac49460..ca33091 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -162,6 +162,9 @@ void Obstacle::GetCircleBox(CircleCollider& circle_box) void Obstacle::Explosion() { + if (explosioned) { + return; + } float old_rad = self_collider_->rad; if (self_collider_) { self_collider_->rad = meta->i->damage_dia(); @@ -231,8 +234,8 @@ void Obstacle::Explosion() } } break; - default: - break; + default: + break; } } @@ -240,4 +243,5 @@ void Obstacle::Explosion() if (self_collider_) { self_collider_->rad = old_rad; } + explosioned = true; } diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index 13f85fc..3bdfe43 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -33,6 +33,7 @@ class Obstacle : public Entity Building* building = nullptr; int door_house_uniid = 0; int master_id = 0; + bool explosioned = false; const metatable::DoorObjJson* door_state0 = nullptr; const metatable::DoorObjJson* door_state1 = nullptr;