fix issue where shipyard did not produce anything

This commit is contained in:
2026-04-21 22:17:48 +02:00
parent 2523cd6a1b
commit 393c49e1bb
12 changed files with 393 additions and 16 deletions

View File

@@ -18,6 +18,7 @@
#include "EntityId.h"
#include "GameConfig.h"
#include "Rotation.h"
#include "ShipsConfig.h"
#include "Tick.h"
// Manages building placement, construction queuing, and the per-tick
@@ -31,6 +32,7 @@ public:
BeltSystem& belts,
std::function<EntityId()> allocateId,
std::function<void(int)> addBuildingBlocks,
std::function<void(const std::string&, QVector2D)> spawnShip,
std::mt19937& rng);
// -- Placement / demolish ------------------------------------------------
@@ -52,6 +54,7 @@ public:
void tickConstruction(Tick currentTick);
void tickBeltPull();
void tickProduction(Tick currentTick);
void tickShipyardProduction(Tick currentTick);
void tickBeltPush();
// -- Queries -------------------------------------------------------------
@@ -113,15 +116,18 @@ private:
const BuildingDef* findBuildingDef(BuildingType type) const;
const RecipeDef* findRecipe(const std::string& id, BuildingType type) const;
const ShipDef* findShipDef(const std::string& id) const;
void initBuffers(Building& b, const RecipeDef& recipe) const;
void initShipyardBuffers(Building& b) const;
std::vector<Port> computeInputPorts(const Building& b) const;
std::vector<Item> rollReprocessingOutput(const RecipeDef& recipe);
const GameConfig& m_config;
BeltSystem& m_belts;
std::function<EntityId()> m_allocateId;
std::function<void(int)> m_addBuildingBlocks;
std::mt19937& m_rng;
const GameConfig& m_config;
BeltSystem& m_belts;
std::function<EntityId()> m_allocateId;
std::function<void(int)> m_addBuildingBlocks;
std::function<void(const std::string&, QVector2D)> m_spawnShip;
std::mt19937& m_rng;
std::vector<Building> m_buildings;
std::deque<ConstructionSite> m_constructionQueue;