From 6917e2f42be33d420964e6db6bdde471a2567c89 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 29 Aug 2019 15:44:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9D=A6=E5=85=8B=E5=8E=8B?= =?UTF-8?q?=E4=BA=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/bullet.cc | 7 +------ server/gameserver/bullet.h | 1 + server/gameserver/human.cc | 2 +- server/gameserver/room.cc | 3 ++- server/gameserver/room.h | 2 +- 5 files changed, 6 insertions(+), 9 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index d4b76f2..64fcede 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -108,12 +108,7 @@ void Bullet::ProcBomb() std::set objects; for (auto& grid : grid_list) { for (Human* hum: grid->human_list) { -#if 1 - { -#else - if (hum != player && - (hum->team_id == 0 || player->team_id != hum->team_id)) { -#endif + if (!is_tank_skin || player->team_id != hum->team_id) { if (TestCollision(hum)) { objects.insert(hum); } diff --git a/server/gameserver/bullet.h b/server/gameserver/bullet.h index 5904a05..e5400b9 100644 --- a/server/gameserver/bullet.h +++ b/server/gameserver/bullet.h @@ -25,6 +25,7 @@ class Bullet : public Entity a8::Vec2 born_pos; a8::Vec2 born_dir; float fly_distance = 0.0f; + bool is_tank_skin = false; MovementComponent* movement = nullptr; Bullet(); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 0672f83..b6a6db4 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -349,7 +349,7 @@ void Human::TankShot(a8::Vec2& target_dir) bullet_dir.Rotate(bullet_angle / 180.0f); room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance); if (room->BattleStarted() || (room->gas_data.gas_mode == GasJump && !a8::HasBitFlag(status, HS_Jump))) { - room->CreateBullet(this, &tank_weapon, bullet_born_pos, bullet_dir, fly_distance); + room->CreateBullet(this, &tank_weapon, bullet_born_pos, bullet_dir, fly_distance, true); } } --tank_weapon.ammo; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 875f818..0e94e65 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -541,7 +541,7 @@ int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv) } void Room::CreateBullet(Human* hum, Weapon* weapon, - a8::Vec2 pos, a8::Vec2 dir, float fly_distance) + a8::Vec2 pos, a8::Vec2 dir, float fly_distance, bool is_tank_skin) { Bullet* bullet = new Bullet(); bullet->player = hum; @@ -554,6 +554,7 @@ void Room::CreateBullet(Human* hum, Weapon* weapon, bullet->born_pos = pos; bullet->born_dir = dir; bullet->fly_distance = fly_distance; + bullet->is_tank_skin = is_tank_skin; bullet->entity_uniid = AllocUniid(); bullet->Initialize(); AddObjectLater(bullet); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 49dd9e8..ff107d8 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -78,7 +78,7 @@ public: Hero* CreateHero(Human* hum); int CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv); void CreateBullet(Human* hum, Weapon* weapon, - a8::Vec2 pos, a8::Vec2 dir, float fly_distance); + a8::Vec2 pos, a8::Vec2 dir, float fly_distance, bool is_tank_skin = false); void OnHumanDie(Human* hum); bool OverBorder(const a8::Vec2 pos, float radius);