#include "EntityAdmin.h" #include "EcsComponents.h" #include "MovementIntent.h" entt::entity EntityAdmin::createEntity() { return m_registry.create(); } bool EntityAdmin::isValid(entt::entity entity) const { return m_registry.valid(entity); } void EntityAdmin::destroy(entt::entity entity) { m_registry.destroy(entity); } void EntityAdmin::clear() { m_registry.clear(); } entt::entity EntityAdmin::spawnShip(QVector2D position, float hp, float maxHp, float maxSpeedPerTick, float mainAccelPerTick, float maneuveringAccelPerTick, float angularAccelPerTick, float maxRotationSpeedPerTick, float sensorRange, int level, const std::string& schematicId, bool isEnemy) { entt::entity entity = createEntity(); add(entity, Position{position}); add(entity, Health{hp, maxHp}); add(entity, Faction{isEnemy}); add(entity, Velocity{QVector2D(0.0f, 0.0f)}); add(entity, Facing{0.0f, 0.0f}); add(entity, ShipDynamics{ maxSpeedPerTick, mainAccelPerTick, maneuveringAccelPerTick, angularAccelPerTick, maxRotationSpeedPerTick}); add(entity, SensorRange{sensorRange}); add(entity, ShipIdentity{level, schematicId}); add(entity, MovementIntent{0, QVector2D(0.0f, 0.0f)}); return entity; } entt::entity EntityAdmin::spawnStation(QPoint anchor, QSize footprint, const std::vector& bodyCells, float hp, float maxHp, bool isEnemy) { entt::entity entity = createEntity(); QVector2D center(anchor.x() + footprint.width() / 2.0f, anchor.y() + footprint.height() / 2.0f); add(entity, Position{center}); add(entity, Health{hp, maxHp}); add(entity, Faction{isEnemy}); add(entity, StationBody{anchor, footprint, bodyCells}); return entity; } entt::entity EntityAdmin::spawnScrap(QVector2D position, int amount, Tick despawnAt) { entt::entity entity = createEntity(); add(entity, Position{position}); add(entity, ScrapData{amount}); add(entity, DespawnAt{despawnAt}); return entity; } entt::entity EntityAdmin::spawnHqProxy(QVector2D position, float hp, float maxHp) { entt::entity entity = createEntity(); add(entity, Position{position}); add(entity, Health{hp, maxHp}); add(entity, Faction{false}); add(entity); return entity; }