diff --git a/TombEngine/Game/Lara/lara_fire.cpp b/TombEngine/Game/Lara/lara_fire.cpp index f1f7d6efc..bbaeb03ff 100644 --- a/TombEngine/Game/Lara/lara_fire.cpp +++ b/TombEngine/Game/Lara/lara_fire.cpp @@ -837,7 +837,7 @@ void AimWeapon(ItemInfo& laraItem, ArmInfo& arm, const WeaponInfo& weaponInfo) } // TODO: Include snowmobile gun in GetAmmo(), otherwise the player won't be able to shoot while controlling it. -- TokyoSU 2023.04.21 -FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo& targetEntity, ItemInfo& laraItem, const EulerAngles& armOrient) +FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo* targetEntity, ItemInfo& laraItem, const EulerAngles& armOrient) { auto& player = *GetLaraInfo(&laraItem); auto& ammo = GetAmmo(player, weaponType); @@ -872,14 +872,14 @@ FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo& targetEntity, Ite GetFloor(pos.x, pos.y, pos.z, &roomNumber); vOrigin.RoomNumber = roomNumber; - if (&targetEntity == nullptr) + if (targetEntity == nullptr) { auto vTarget = GameVector(target); GetTargetOnLOS(&vOrigin, &vTarget, false, true); return FireWeaponType::Miss; } - auto spheres = targetEntity.GetSpheres(); + auto spheres = targetEntity->GetSpheres(); int closestJointIndex = NO_VALUE; float closestDist = INFINITY; for (int i = 0; i < spheres.size(); i++) @@ -909,7 +909,7 @@ FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo& targetEntity, Ite // NOTE: It seems that entities hit by the player in the normal way must have GetTargetOnLOS return false. // It's strange, but this replicates original behaviour until we fully understand what is happening. if (!GetTargetOnLOS(&vOrigin, &vTarget, false, true)) - HitTarget(&laraItem, &targetEntity, &vTarget, weapon.Damage, false, closestJointIndex); + HitTarget(&laraItem, targetEntity, &vTarget, weapon.Damage, false, closestJointIndex); return FireWeaponType::PossibleHit; } diff --git a/TombEngine/Game/Lara/lara_fire.h b/TombEngine/Game/Lara/lara_fire.h index 51a6a1934..61822d8a5 100644 --- a/TombEngine/Game/Lara/lara_fire.h +++ b/TombEngine/Game/Lara/lara_fire.h @@ -61,7 +61,7 @@ GAME_OBJECT_ID GetWeaponObjectMeshID(ItemInfo& laraItem, LaraWeaponType weapon void HandleWeapon(ItemInfo& laraItem); void AimWeapon(ItemInfo& laraItem, ArmInfo& arm, const WeaponInfo& weaponInfo); -FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo& targetEntity, ItemInfo& laraItem, const EulerAngles& armOrient); +FireWeaponType FireWeapon(LaraWeaponType weaponType, ItemInfo* targetEntity, ItemInfo& laraItem, const EulerAngles& armOrient); void FindNewTarget(ItemInfo& laraItem, const WeaponInfo& weaponInfo); void LaraTargetInfo(ItemInfo& laraItem, const WeaponInfo& weaponInfo); diff --git a/TombEngine/Game/Lara/lara_one_gun.cpp b/TombEngine/Game/Lara/lara_one_gun.cpp index b4a494ec3..9fb37faa9 100644 --- a/TombEngine/Game/Lara/lara_one_gun.cpp +++ b/TombEngine/Game/Lara/lara_one_gun.cpp @@ -395,7 +395,7 @@ void FireShotgun(ItemInfo& laraItem) armOrient.y + scatter * (GetRandomControl() - ANGLE(90.0f)) / 65536, 0); - if (FireWeapon(LaraWeaponType::Shotgun, *player.TargetEntity, laraItem, wobbledArmOrient) != FireWeaponType::NoAmmo) + if (FireWeapon(LaraWeaponType::Shotgun, player.TargetEntity, laraItem, wobbledArmOrient) != FireWeaponType::NoAmmo) hasFired = true; // HACK: Compensate for spending 6 units of shotgun ammo. -- Lwmte, 18.11.22 @@ -1152,7 +1152,7 @@ void FireHK(ItemInfo& laraItem, bool inaccurateMode) Weapons[(int)LaraWeaponType::HK].Damage = damage / 3; } - if (FireWeapon(LaraWeaponType::HK, *player.TargetEntity, laraItem, angles) != FireWeaponType::NoAmmo) + if (FireWeapon(LaraWeaponType::HK, player.TargetEntity, laraItem, angles) != FireWeaponType::NoAmmo) { player.LeftArm.GunSmoke = 12; diff --git a/TombEngine/Game/Lara/lara_two_guns.cpp b/TombEngine/Game/Lara/lara_two_guns.cpp index 303a6ba57..fbd854a3f 100644 --- a/TombEngine/Game/Lara/lara_two_guns.cpp +++ b/TombEngine/Game/Lara/lara_two_guns.cpp @@ -154,7 +154,7 @@ static void AnimateWeapon(ItemInfo& laraItem, LaraWeaponType weaponType, bool& h arm.Orientation.y + laraItem.Pose.Orientation.y, 0); - if (FireWeapon(weaponType, *player.TargetEntity, laraItem, armOrient) != FireWeaponType::NoAmmo) + if (FireWeapon(weaponType, player.TargetEntity, laraItem, armOrient) != FireWeaponType::NoAmmo) { arm.GunSmoke = 28; TriggerGunShell(isRightWeapon ? true : false, ID_GUNSHELL, weaponType); diff --git a/TombEngine/Objects/TR2/Vehicles/skidoo.cpp b/TombEngine/Objects/TR2/Vehicles/skidoo.cpp index 71cbd746b..8f620b4f9 100644 --- a/TombEngine/Objects/TR2/Vehicles/skidoo.cpp +++ b/TombEngine/Objects/TR2/Vehicles/skidoo.cpp @@ -680,8 +680,8 @@ namespace TEN::Entities::Vehicles lara->RightArm.Orientation.y + laraItem->Pose.Orientation.y, 0); - FireWeapon(LaraWeaponType::Snowmobile, *lara->TargetEntity, *laraItem, angles); - FireWeapon(LaraWeaponType::Snowmobile, *lara->TargetEntity, *laraItem, angles); + FireWeapon(LaraWeaponType::Snowmobile, lara->TargetEntity, *laraItem, angles); + FireWeapon(LaraWeaponType::Snowmobile, lara->TargetEntity, *laraItem, angles); SoundEffect(weapon.SampleNum, &laraItem->Pose); skidooItem->ItemFlags[0] = 4; } diff --git a/TombEngine/TombEngine.vcxproj b/TombEngine/TombEngine.vcxproj index 590494973..a4c2ca9e1 100644 --- a/TombEngine/TombEngine.vcxproj +++ b/TombEngine/TombEngine.vcxproj @@ -297,7 +297,7 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings. stdcpp17 framework.h ProgramDatabase - Disabled + MinSpace Default AnySuitable true @@ -377,7 +377,7 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings. stdcpp17 framework.h ProgramDatabase - Disabled + MinSpace Default AnySuitable true