From f3250e450c653948fd9ccda3463af0f5001d33d0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 12 Jul 2019 11:25:25 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 41 ------------------------------------ server/gameserver/constant.h | 7 ++++++ server/gameserver/human.cc | 7 +++++- 3 files changed, 13 insertions(+), 42 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 7a75126..bbf36cb 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -142,46 +142,12 @@ void Bullet::ProcBomb() } }//end for -#if 0 - switch (meta->i->_inventory_slot()) { - case 4: - { - //榴弹炮 - a8::Vec2 bomb_pos = pos; - room->frame_event.AddExplosionEx(player, 0, bomb_pos, 0); - OnHit(objects); - } - break; - case 5: - { - //手雷 - a8::Vec2 bomb_pos = pos; - room->frame_event.AddExplosion(this, meta->i->id(), bomb_pos); - OnHit(objects); - } - break; - case 6: - { - //烟雾弹 - a8::Vec2 bomb_pos = pos; - room->frame_event.AddSmoke(this, meta->i->id(), bomb_pos); - } - break; - } -#endif room->RemoveObjectLater(this); } bool Bullet::IsBomb() { - #if 1 return false; - #else - return - meta->i->_inventory_slot() == 4 || - meta->i->_inventory_slot() == 5 || - meta->i->_inventory_slot() == 6; - #endif } void Bullet::MapServiceUpdate() @@ -207,7 +173,6 @@ void Bullet::MapServiceUpdate() } } }//end for -#if 1 { std::set colliders; room->map_service.GetColliders(pos.x, pos.y, colliders); @@ -217,15 +182,9 @@ void Bullet::MapServiceUpdate() } } } -#endif float bullet_range = meta->i->range(); -#if 1 if (!objects.empty() || distance > bullet_range || (IsBomb() && distance >= fly_distance) -#else - if (!objects.empty() || distance > bullet_range || - (IsBomb() && meta->i->_inventory_slot() != 4 && distance >= fly_distance) -#endif ) { if (IsBomb()) { ProcBomb(); diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index db08d3e..d602f8d 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -227,6 +227,13 @@ enum EquipType_e EquipType_Bullet = 1, }; +enum BulletType_e +{ + BulletType_Normal = 1, //普通子弹 + BulletType_Missile = 2, //导弹 + BulletType_FireBomb = 3, //燃烧弹 +}; + const char* const PROJ_NAME_FMT = "game%d_gameserver"; const char* const PROJ_ROOT_FMT = "/data/logs/%s"; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2af9d28..5775be7 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -237,9 +237,14 @@ void Human::DirectShot(MetaData::Equip* bullet_meta) } bullet_dir.Rotate(bullet_angle / 180.0f); int hit_time = 0; + if (bullet_meta->i->equip_subtype() == BulletType_Missile) { + hit_time = bullet_meta->i->time() * 1000; + } room->frame_event.AddBullet(this, bullet_born_pos, attack_dir, fly_distance, hit_time); if (room->BattleStarted()) { - room->CreateBullet(this, bullet_meta, bullet_born_pos, bullet_dir, fly_distance); + if (bullet_meta->i->equip_subtype() != BulletType_Missile) { + room->CreateBullet(this, bullet_meta, bullet_born_pos, bullet_dir, fly_distance); + } } } }