move ecs related code to own folder

This commit is contained in:
2026-05-25 08:46:58 +02:00
parent 8ad7530740
commit 25ff3c56c5
54 changed files with 877 additions and 680 deletions

View File

@@ -10,10 +10,15 @@
#include "ArenaSimulation.h"
#include "Building.h"
#include "BuildingSystem.h"
#include "DynamicBodyComponent.h"
#include "EcsComponents.h"
#include "FacingComponent.h"
#include "FactionComponent.h"
#include "HealthComponent.h"
#include "PositionComponent.h"
#include "RepairToolComponent.h"
#include "SalvageCargoComponent.h"
#include "ScrapSystem.h"
#include "Ship.h"
#include "ShipIdentityComponent.h"
#include "StationBodyComponent.h"
namespace
{
@@ -101,9 +106,9 @@ void ArenaView::onFrame()
{
float maxRadius = 0.125f;
if (m_sim->admin().isValid(fe.target)
&& m_sim->admin().hasAll<StationBody>(fe.target))
&& m_sim->admin().hasAll<StationBodyComponent>(fe.target))
{
const StationBody& sb = m_sim->admin().get<StationBody>(fe.target);
const StationBodyComponent& sb = m_sim->admin().get<StationBodyComponent>(fe.target);
const int shorter = std::min(sb.footprint.width(),
sb.footprint.height());
maxRadius = shorter / 2.0f;
@@ -197,11 +202,11 @@ QRectF ArenaView::tileRect(QPoint tile) const
std::optional<QVector2D> ArenaView::entityPosition(entt::entity entity) const
{
if (!m_sim->admin().isValid(entity) || !m_sim->admin().hasAll<Position>(entity))
if (!m_sim->admin().isValid(entity) || !m_sim->admin().hasAll<PositionComponent>(entity))
{
return std::nullopt;
}
return m_sim->admin().get<Position>(entity).value;
return m_sim->admin().get<PositionComponent>(entity).value;
}
// ---------------------------------------------------------------------------
@@ -273,8 +278,8 @@ void ArenaView::drawScrap(QPainter& painter)
void ArenaView::drawStations(QPainter& painter)
{
m_sim->admin().forEach<StationBody, Faction, Health>(
[&](entt::entity /*e*/, const StationBody& sb, const Faction& f, const Health& h)
m_sim->admin().forEach<StationBodyComponent, FactionComponent, HealthComponent>(
[&](entt::entity /*e*/, const StationBodyComponent& sb, const FactionComponent& f, const HealthComponent& h)
{
const BuildingType visType = f.isEnemy
? BuildingType::EnemyDefenceStation
@@ -315,12 +320,14 @@ void ArenaView::drawStations(QPainter& painter)
void ArenaView::drawShips(QPainter& painter)
{
m_sim->admin().forEach<ShipIdentity, Position, Facing, Faction>(
[&](entt::entity e, const ShipIdentity& /*si*/, const Position& pos,
const Facing& facing, const Faction& fac)
m_sim->admin().forEach<ShipIdentityComponent, PositionComponent, FacingComponent,
FactionComponent>(
[&](entt::entity e, const ShipIdentityComponent& /*si*/,
const PositionComponent& pos, const FacingComponent& facing,
const FactionComponent& fac)
{
const bool hasCargo = m_sim->admin().hasAll<SalvageCargo>(e);
const bool hasRepair = m_sim->admin().hasAll<RepairTool>(e);
const bool hasCargo = m_sim->admin().hasAll<SalvageCargoComponent>(e);
const bool hasRepair = m_sim->admin().hasAll<RepairToolComponent>(e);
const ShipRole role = shipRoleFromComponents(fac.isEnemy, hasCargo, hasRepair);
const std::map<ShipRole, ShipVisuals>::const_iterator it =
m_visuals->ships.find(role);