Refactoring: ECS-Systeme in GameWorldSystems bündeln #5

Closed
opened 2026-04-16 19:34:23 +00:00 by sebastian · 0 comments
Owner

Statt 6 Systeme lose in GameLayer zu halten:

// GameWorldSystems.h
class GameWorldSystems {
public:
    void update(EntityManager&, GameMode&, MousePicker&,
                Camera&, GameInputUser&, TurnState&);
private:
    TileHighlightSystem   tileHighlight;
    BuildPreviewSystem    buildPreview;
    SelectionSystem       selection;
    UpgradeSystem         upgrade;
    BuildingPlacementSystem buildingPlacement;
    CollectResourceSystem collectResource;
};

Ergebnis: GameLayer als dünner Koordinator

class GameLayer : public Layer {
    std::unique_ptr<Camera>          camera;
    std::unique_ptr<Light>           light;
    std::unique_ptr<MousePicker>     mousePicker;
    std::unique_ptr<MasterRenderer>  renderer;
    std::unique_ptr<Map>             map;
    std::unique_ptr<EntityManager>   entityManager;
    std::unique_ptr<TurnSystem>      turnSystem;
    std::unique_ptr<TurnState>       turnState;
    std::unique_ptr<GameInputUser>   gameInputUser;
    std::unique_ptr<GameWorldSystems> worldSystems;  // NEU
};
Statt 6 Systeme lose in GameLayer zu halten: ``` // GameWorldSystems.h class GameWorldSystems { public: void update(EntityManager&, GameMode&, MousePicker&, Camera&, GameInputUser&, TurnState&); private: TileHighlightSystem tileHighlight; BuildPreviewSystem buildPreview; SelectionSystem selection; UpgradeSystem upgrade; BuildingPlacementSystem buildingPlacement; CollectResourceSystem collectResource; }; ``` Ergebnis: GameLayer als dünner Koordinator ``` class GameLayer : public Layer { std::unique_ptr<Camera> camera; std::unique_ptr<Light> light; std::unique_ptr<MousePicker> mousePicker; std::unique_ptr<MasterRenderer> renderer; std::unique_ptr<Map> map; std::unique_ptr<EntityManager> entityManager; std::unique_ptr<TurnSystem> turnSystem; std::unique_ptr<TurnState> turnState; std::unique_ptr<GameInputUser> gameInputUser; std::unique_ptr<GameWorldSystems> worldSystems; // NEU }; ```
sebastian added the
refactoring
label 2026-04-16 19:34:23 +00:00
sebastian added the
engine
label 2026-04-16 19:38:42 +00:00
sebastian added this to the Event-System milestone 2026-04-16 19:51:32 +00:00
sebastian removed this from the Event-System milestone 2026-04-16 19:51:35 +00:00
sebastian added this to the Dicewars project 2026-04-16 20:50:52 +00:00
sebastian started working 2026-04-17 05:41:05 +00:00
sebastian stopped working 2026-04-17 06:07:50 +00:00
26 minutes 45 seconds
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Total Time Spent: 26 minutes 45 seconds
sebastian
26 minutes 45 seconds
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sebastian/Dicewars-Siedler#5
No description provided.