diff --git a/src/rwe/LoadingScene_util.cpp b/src/rwe/LoadingScene_util.cpp index 05b0070a1..46dee050c 100644 --- a/src/rwe/LoadingScene_util.cpp +++ b/src/rwe/LoadingScene_util.cpp @@ -158,6 +158,8 @@ namespace rwe weaponDefinition.burstInterval = SimScalar(tdf.burstRate); weaponDefinition.sprayAngle = SimAngle(tdf.sprayAngle); + weaponDefinition.energyPerShot = Energy(tdf.energyPerShot); + if (tdf.tracks) { weaponDefinition.physicsType = ProjectilePhysicsTypeTracking{SimScalar(tdf.turnRate)}; diff --git a/src/rwe/sim/UnitBehaviorService.cpp b/src/rwe/sim/UnitBehaviorService.cpp index 05dee2aec..5c46750d2 100644 --- a/src/rwe/sim/UnitBehaviorService.cpp +++ b/src/rwe/sim/UnitBehaviorService.cpp @@ -546,6 +546,8 @@ namespace rwe sim->events.push_back(FireWeaponEvent{weapon->weaponType, fireInfo->burstsFired, firingPoint}); + sim->addResourceDelta(id, -weaponDefinition.energyPerShot, Metal(0)); + // If we just started the burst, set the reload timer if (fireInfo->burstsFired == 0) { diff --git a/src/rwe/sim/WeaponDefinition.h b/src/rwe/sim/WeaponDefinition.h index afa804f59..e741a7d5f 100644 --- a/src/rwe/sim/WeaponDefinition.h +++ b/src/rwe/sim/WeaponDefinition.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include @@ -48,5 +49,7 @@ namespace rwe /** If true, projectile does not explode when hitting the ground but instead continues travelling. */ bool groundBounce; + + Energy energyPerShot; }; }