修复机甲机器数量

This commit is contained in:
aozhiwei 2021-06-18 13:54:38 +08:00
parent d396d12c8f
commit e47bcdd646
2 changed files with 22 additions and 6 deletions

View File

@ -1394,7 +1394,7 @@ void Creature::Shot(a8::Vec2& target_dir, bool& shot_ok, float fly_distance)
AutoLoadingBullet(); AutoLoadingBullet();
} }
last_shot_frameno_ = room->GetFrameNo(); last_shot_frameno_ = room->GetFrameNo();
if (!need_sync_active_player && IsPlayer()) { if ((IsPlayer() || IsCar())) {
room->frame_event.AddBulletNumChg(GetWeakPtrRef()); room->frame_event.AddBulletNumChg(GetWeakPtrRef());
room->frame_event.AddWeaponAmmoChg(GetWeakPtrRef()); room->frame_event.AddWeaponAmmoChg(GetWeakPtrRef());
} }

View File

@ -142,10 +142,17 @@ void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, a8::Vec2 b
void FrameEvent::AddBulletNumChg(CreatureWeakPtr& sender) void FrameEvent::AddBulletNumChg(CreatureWeakPtr& sender)
{ {
chged_bullet_nums_.push_back(sender);
int idx = chged_bullet_nums_.size() - 1;
if (sender.Get()->IsHuman()) { if (sender.Get()->IsHuman()) {
chged_bullet_nums_.push_back(sender); sender.Get()->AsHuman()->chged_bullet_nums_.push_back(idx);
int idx = chged_bullet_nums_.size() - 1; } else {
((Human*)sender.Get())->chged_bullet_nums_.push_back(idx); sender.Get()->TraverseAllLayerHumanList
(
[idx] (Human* hum, bool& stop)
{
hum->chged_bullet_nums_.push_back(idx);
});
} }
} }
@ -211,7 +218,7 @@ void FrameEvent::AddHpChg(CreatureWeakPtr& sender)
void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender) void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender)
{ {
if (sender.Get()->GetCurrWeapon() && sender.Get()->IsHuman()) { if (sender.Get()->GetCurrWeapon()) {
chged_weapon_ammo_.push_back chged_weapon_ammo_.push_back
( (
std::make_tuple(sender, std::make_tuple(sender,
@ -220,7 +227,16 @@ void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender)
) )
); );
int idx = chged_weapon_ammo_.size() - 1; int idx = chged_weapon_ammo_.size() - 1;
sender.Get()->AsHuman()->chged_weapon_ammo_.push_back(idx); if (sender.Get()->IsHuman()) {
sender.Get()->AsHuman()->chged_weapon_ammo_.push_back(idx);
} else {
sender.Get()->TraverseAllLayerHumanList
(
[idx] (Human* hum, bool& stop)
{
hum->chged_weapon_ammo_.push_back(idx);
});
}
} }
} }