summaryrefslogtreecommitdiffstats
path: root/src/weapons
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-06-07 03:16:10 +0200
committerSergeanur <s.anureev@yandex.ua>2020-06-07 03:16:10 +0200
commit24bf4c2cbae67be4a0ac5f674f3fb5645e92516b (patch)
tree392d6754b618a6be48c391d86601da905299be89 /src/weapons
parenta bit of fonts (diff)
parentMerge branch 'master' into miami (diff)
downloadre3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar.gz
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar.bz2
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar.lz
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar.xz
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.tar.zst
re3-24bf4c2cbae67be4a0ac5f674f3fb5645e92516b.zip
Diffstat (limited to '')
-rw-r--r--src/weapons/Weapon.cpp25
-rw-r--r--src/weapons/Weapon.h4
2 files changed, 23 insertions, 6 deletions
diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp
index 114a2240..8aa3db39 100644
--- a/src/weapons/Weapon.cpp
+++ b/src/weapons/Weapon.cpp
@@ -31,6 +31,7 @@
#include "WeaponInfo.h"
#include "World.h"
#include "SurfaceTable.h"
+#include "Bike.h"
// TODO(Miami)
#define AUDIO_NOT_READY
@@ -386,7 +387,7 @@ CWeapon::Fire(CEntity *shooter, CVector *fireSource)
}
bool
-CWeapon::FireFromCar(CVehicle *shooter, bool left)
+CWeapon::FireFromCar(CVehicle *shooter, bool left, bool right)
{
ASSERT(shooter!=nil);
@@ -396,7 +397,7 @@ CWeapon::FireFromCar(CVehicle *shooter, bool left)
if ( m_nAmmoInClip <= 0 )
return false;
- if ( FireInstantHitFromCar(shooter, left) )
+ if ( FireInstantHitFromCar(shooter, left, right) )
{
DMAudio.PlayOneShot(shooter->m_audioEntityId, SOUND_WEAPON_SHOT_FIRED, 0.0f);
@@ -524,7 +525,22 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
}
damageEntityRegistered = 3;
- // TODO(Miami): Bike
+ if (victimPed->bInVehicle) {
+ CVehicle *victimVeh = victimPed->m_pMyVehicle;
+ if (victimVeh) {
+ if (victimVeh->IsBike()) {
+ CBike *victimBike = (CBike*)victimVeh;
+ victimBike->KnockOffRider(m_eWeaponType, localDir, victimPed, false);
+ if (victimBike->pDriver) {
+ victimBike->pDriver->ReactToAttack(shooterPed);
+ } else {
+ if (victimVeh->pPassengers[0])
+ victimVeh->pPassengers[0]->ReactToAttack(shooterPed);
+ }
+ continue;
+ }
+ }
+ }
if ( !victimPed->DyingOrDead() )
victimPed->ReactToAttack(shooterPed);
@@ -2005,8 +2021,9 @@ CWeapon::FireM16_1stPerson(CEntity *shooter)
}
bool
-CWeapon::FireInstantHitFromCar(CVehicle *shooter, bool left)
+CWeapon::FireInstantHitFromCar(CVehicle *shooter, bool left, bool right)
{
+// TODO(MIAMI): bikes
CWeaponInfo *info = GetInfo();
CVehicleModelInfo *modelInfo = shooter->GetModelInfo();
diff --git a/src/weapons/Weapon.h b/src/weapons/Weapon.h
index b6ce2903..cb1d9835 100644
--- a/src/weapons/Weapon.h
+++ b/src/weapons/Weapon.h
@@ -37,7 +37,7 @@ public:
void Shutdown();
bool Fire (CEntity *shooter, CVector *fireSource);
- bool FireFromCar (CVehicle *shooter, bool left);
+ bool FireFromCar (CVehicle *shooter, bool left, bool right);
bool FireMelee (CEntity *shooter, CVector &fireSource);
bool FireInstantHit(CEntity *shooter, CVector *fireSource);
@@ -52,7 +52,7 @@ public:
bool FireAreaEffect (CEntity *shooter, CVector *fireSource);
bool FireSniper (CEntity *shooter);
bool FireM16_1stPerson (CEntity *shooter);
- bool FireInstantHitFromCar(CVehicle *shooter, bool left);
+ bool FireInstantHitFromCar(CVehicle *shooter, bool left, bool right);
static void DoDoomAiming (CEntity *shooter, CVector *source, CVector *target);
static void DoTankDoomAiming (CEntity *shooter, CEntity *driver, CVector *source, CVector *target);