switch to using own event system
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#include "ConfigLoader.h"
|
||||
#include "EntityAdmin.h"
|
||||
#include "FactionComponent.h"
|
||||
#include "FireEvent.h"
|
||||
#include "WeaponFiredEvent.h"
|
||||
#include "HealthComponent.h"
|
||||
#include "HqProxyComponent.h"
|
||||
#include "ModuleOwnerComponent.h"
|
||||
@@ -111,7 +111,7 @@ TEST_CASE("CombatSystem: ship fires when cooldown=0 and target in range", "[comb
|
||||
|
||||
const float hpBefore = f.admin.get<HealthComponent>(player).hp;
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
f.combat.applyPendingDamage(5, f.admin);
|
||||
|
||||
@@ -135,16 +135,16 @@ TEST_CASE("CombatSystem: cooldown prevents firing before it expires", "[combat]"
|
||||
f.admin.get<WeaponComponent>(wc).cooldownTicks = 3.0f; // override to 3
|
||||
}
|
||||
|
||||
auto enemyFiredIn = [&enemy](const std::vector<FireEvent>& evts)
|
||||
auto enemyFiredIn = [&enemy](const std::vector<WeaponFiredEvent>& evts)
|
||||
{
|
||||
for (const FireEvent& evt : evts)
|
||||
for (const WeaponFiredEvent& evt : evts)
|
||||
{
|
||||
if (evt.shooter == enemy) { return true; }
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
REQUIRE_FALSE(enemyFiredIn(events));
|
||||
|
||||
@@ -165,7 +165,7 @@ TEST_CASE("CombatSystem: no fire when target is out of range", "[combat]")
|
||||
const entt::entity player = f.ships.spawn(combatDef->id, 1, QVector2D(500.0f, 0.0f), false);
|
||||
f.wireEnemyTarget(enemy, player);
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
REQUIRE(events.empty());
|
||||
}
|
||||
@@ -204,9 +204,9 @@ TEST_CASE("CombatSystem: player station fires at enemy ship in range", "[combat]
|
||||
|
||||
sim.tick();
|
||||
|
||||
const std::vector<FireEvent> events = sim.drainFireEvents();
|
||||
const std::vector<WeaponFiredEvent> events = sim.drainWeaponFiredEvents();
|
||||
bool stationFired = false;
|
||||
for (const FireEvent& evt : events)
|
||||
for (const WeaponFiredEvent& evt : events)
|
||||
{
|
||||
if (evt.shooter == stationEntity) { stationFired = true; }
|
||||
}
|
||||
@@ -242,9 +242,9 @@ TEST_CASE("CombatSystem: enemy station fires at player ship in range", "[combat]
|
||||
|
||||
sim.tick();
|
||||
|
||||
const std::vector<FireEvent> events = sim.drainFireEvents();
|
||||
const std::vector<WeaponFiredEvent> events = sim.drainWeaponFiredEvents();
|
||||
bool stationFired = false;
|
||||
for (const FireEvent& evt : events)
|
||||
for (const WeaponFiredEvent& evt : events)
|
||||
{
|
||||
if (evt.shooter == stationEntity) { stationFired = true; }
|
||||
}
|
||||
@@ -280,9 +280,9 @@ TEST_CASE("CombatSystem: player ship fires at enemy station in range", "[combat]
|
||||
|
||||
sim.tick();
|
||||
|
||||
const std::vector<FireEvent> events = sim.drainFireEvents();
|
||||
const std::vector<WeaponFiredEvent> events = sim.drainWeaponFiredEvents();
|
||||
bool playerFiredAtStation = false;
|
||||
for (const FireEvent& evt : events)
|
||||
for (const WeaponFiredEvent& evt : events)
|
||||
{
|
||||
if (evt.shooter == playerShip && evt.target == stationEntity)
|
||||
{
|
||||
@@ -308,7 +308,7 @@ TEST_CASE("CombatSystem: damage not applied before impact tick", "[combat]")
|
||||
|
||||
const float hpBefore = f.admin.get<HealthComponent>(player).hp;
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
|
||||
for (Tick t = 1; t < 5; ++t)
|
||||
@@ -330,7 +330,7 @@ TEST_CASE("CombatSystem: damage applied exactly at impact tick", "[combat]")
|
||||
|
||||
const float hpBefore = f.admin.get<HealthComponent>(player).hp;
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
f.combat.applyPendingDamage(5, f.admin);
|
||||
|
||||
@@ -347,7 +347,7 @@ TEST_CASE("CombatSystem: damage silently dropped if target already dead", "[comb
|
||||
const entt::entity player = f.ships.spawn(combatDef->id, 1, QVector2D(4.0f, 5.0f), false);
|
||||
f.wireEnemyTarget(enemy, player);
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
|
||||
f.ships.despawn(player);
|
||||
@@ -370,7 +370,7 @@ TEST_CASE("CombatSystem: damage still applied if shooter already dead", "[combat
|
||||
|
||||
const float hpBefore = f.admin.get<HealthComponent>(player).hp;
|
||||
|
||||
std::vector<FireEvent> events;
|
||||
std::vector<WeaponFiredEvent> events;
|
||||
f.combat.tick(0, f.admin, f.buildings, events);
|
||||
|
||||
f.ships.despawn(enemy);
|
||||
|
||||
@@ -43,22 +43,22 @@ TEST_CASE("Simulation::tick 10 times yields currentTick == 10", "[simulation]")
|
||||
REQUIRE(sim.currentTick() == 10);
|
||||
}
|
||||
|
||||
TEST_CASE("Simulation::drainFireEvents returns empty initially", "[simulation]")
|
||||
TEST_CASE("Simulation::drainWeaponFiredEvents returns empty initially", "[simulation]")
|
||||
{
|
||||
Simulation sim(loadConfig());
|
||||
|
||||
REQUIRE(sim.drainFireEvents().empty());
|
||||
REQUIRE(sim.drainWeaponFiredEvents().empty());
|
||||
}
|
||||
|
||||
TEST_CASE("Simulation::drainFireEvents clears queue on drain", "[simulation]")
|
||||
TEST_CASE("Simulation::drainWeaponFiredEvents clears queue on drain", "[simulation]")
|
||||
{
|
||||
Simulation sim(loadConfig());
|
||||
|
||||
// First drain: empty.
|
||||
sim.drainFireEvents();
|
||||
sim.drainWeaponFiredEvents();
|
||||
|
||||
// Second drain must also be empty (not a double-return).
|
||||
REQUIRE(sim.drainFireEvents().empty());
|
||||
REQUIRE(sim.drainWeaponFiredEvents().empty());
|
||||
}
|
||||
|
||||
TEST_CASE("Simulation::hasSchematicChoicesPending returns false initially", "[simulation]")
|
||||
|
||||
Reference in New Issue
Block a user