From ab1a404ede6d338a19a8deeef0dd9a993f6f3e77 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Jul 2019 09:43:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84shot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/android.ai.cc | 2 +- server/gameserver/human.cc | 9 +++--- server/gameserver/human.h | 2 +- server/gameserver/player.cc | 57 --------------------------------- server/gameserver/player.h | 1 - 5 files changed, 6 insertions(+), 65 deletions(-) diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index d4517af..5fc1280 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -129,7 +129,7 @@ void AndroidAI::DoAttack() shot_dir.Normalize(); shot_dir.Rotate((rand() % 10) / 180.0f); sender->attack_dir = shot_dir; - sender->Shot(shot_dir); + sender->Shot(); } } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 85d29a4..a5184ab 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -188,7 +188,7 @@ void Human::FillMFTeamData(cs::MFTeamData* team_data) team_data->set_downed(downed); } -void Human::Shot(a8::Vec2& target_dir) +void Human::Shot() { if (!curr_weapon->meta) { return; @@ -203,9 +203,6 @@ void Human::Shot(a8::Vec2& target_dir) CancelAction(); } - #if 1 - float fly_distance = 5; - #endif for (auto& tuple : curr_weapon->meta->bullet_born_offset) { a8::Vec2 bullet_born_offset = a8::Vec2(std::get<0>(tuple), std::get<1>(tuple)); bullet_born_offset.Rotate(attack_dir.CalcAngle(a8::Vec2::UP)); @@ -232,7 +229,9 @@ void Human::Shot(a8::Vec2& target_dir) } bullet_dir.Rotate(bullet_angle / 180.0f); room->frame_event.AddBullet(this, bullet_born_pos, attack_dir, fly_distance); - room->CreateBullet(this, curr_weapon, bullet_born_pos, attack_dir, fly_distance); + if (room->BattleStarted()) { + room->CreateBullet(this, curr_weapon, bullet_born_pos, bullet_dir, fly_distance); + } } --curr_weapon->ammo; if (curr_weapon->ammo <= 0) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 8a87f34..2dd61e4 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -136,7 +136,7 @@ class Human : public Entity virtual void FillMFPlayerStats(cs::MFPlayerStats* stats); virtual void GetAabbBox(AabbCollider& aabb_box); void FillMFTeamData(cs::MFTeamData* team_data); - void Shot(a8::Vec2& target_dir); + void Shot(); void RecalcSelfCollider(); bool IsCollision(); bool IsCollisionInMapService(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 3fadbab..1150089 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -247,63 +247,6 @@ void Player::UpdateUseSkill() DoSkill(); } -void Player::Shot() -{ - if (!curr_weapon->meta) { - return; - } - - if (curr_weapon->ammo <= 0) { - AutoLoadingBullet(); - return; - } - - if (action_type == AT_Reload) { - CancelAction(); - } - - if (true) { - for (auto& tuple : curr_weapon->meta->bullet_born_offset) { - a8::Vec2 bullet_born_offset = a8::Vec2(std::get<0>(tuple), std::get<1>(tuple)); - bullet_born_offset.Rotate(attack_dir.CalcAngle(a8::Vec2::UP)); - a8::Vec2 bullet_born_pos = pos + bullet_born_offset; - if (room->OverBorder(bullet_born_pos, 0)) { - return; - } - } - room->frame_event.AddShot(this); - for (auto& tuple : curr_weapon->meta->bullet_born_offset) { - a8::Vec2 bullet_born_offset = a8::Vec2(std::get<0>(tuple), std::get<1>(tuple)); - bullet_born_offset.Rotate(attack_dir.CalcAngle(a8::Vec2::UP)); - a8::Vec2 bullet_born_pos = pos + bullet_born_offset; - a8::Vec2 bullet_dir = attack_dir; - float bullet_angle = std::get<2>(tuple); - if (curr_weapon->meta->i->bullet_angle() >= 0.01f) { - int angle = (int)curr_weapon->meta->i->bullet_angle() * 1000; - if (curr_weapon->upgrade_meta) { - angle -= curr_weapon->upgrade_meta->GetAttrValue(curr_weapon->weapon_lv, EA_BulletAngle) * 1000; - } - if (angle > 0) { - bullet_angle += (rand() % angle) / 1000.0f * (rand() % 2 == 0 ? 1 : -1); - } - } - bullet_dir.Rotate(bullet_angle / 180.0f); - room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance); - if (room->BattleStarted()) { - room->CreateBullet(this, curr_weapon, bullet_born_pos, bullet_dir, fly_distance); - } - } - } else { - return; - } - --curr_weapon->ammo; - if (curr_weapon->ammo <= 0) { - AutoLoadingBullet(); - } - last_shot_frameno_ = room->frame_no; - need_sync_active_player = true; -} - void Player::ProcInteraction() { for (auto obj_id : interaction_objids) { diff --git a/server/gameserver/player.h b/server/gameserver/player.h index 3089342..36051e8 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -69,7 +69,6 @@ class Player : public Human void UpdateSpectate(); void UpdateEmote(); void UpdateUseSkill(); - void Shot(); void ProcInteraction(); void ObstacleInteraction(Obstacle* entity); void LootInteraction(Loot* entity);