- Create header-only map module with clean separation of concerns - Move GMap, GTile, RegionManager to dedicated map module - Remove volcanic/impact methods from GMap (wrong responsibilities) - Add fragmentation specification to MeteoriteImpact::calculateImpactRadius() - Define heat conservation formula for MeteoriteImpact::calculateHeatGeneration() - Clean world-generation-realist includes and dependencies - Add comprehensive implementation analysis report 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# Map Module
|
|
|
|
**Responsabilité**: Structures de données pour cartes, régions et tiles du système de génération de monde.
|
|
|
|
## Description
|
|
|
|
Ce module contient les structures de données fondamentales pour la représentation géographique du monde : cartes, tiles, régions et leur gestion. Conçu pour être utilisé par les modules de génération de monde et autres systèmes nécessitant des données géographiques.
|
|
|
|
## Structures Incluses
|
|
|
|
### Core Map Data
|
|
- **GMap**: Structure principale de carte avec dimensions et données de tiles
|
|
- **GTile**: Représentation d'une tile individuelle avec propriétés géographiques
|
|
- **IRegion**: Interface pour toutes les régions géographiques
|
|
|
|
### Region Management
|
|
- **RegionManager**: Gestionnaire pour collections de régions avec opérations spatiales
|
|
- **ResourceRegion**: Région spécialisée pour dépôts de ressources minérales
|
|
|
|
## Architecture
|
|
|
|
### Interfaces
|
|
- **IRegion**: Interface commune pour tous types de régions
|
|
- Position (x, y)
|
|
- Masse/influence
|
|
- Type de région
|
|
- Opérations de fusion
|
|
|
|
### Types de Régions
|
|
- **ResourceRegion**: Dépôts minéraux avec mapping ressource → quantité
|
|
- **TectonicRegion**: Plaques tectoniques (dans world-generation-realist)
|
|
- **ClimateRegion**: Zones climatiques (dans world-generation-realist)
|
|
|
|
## Utilisation
|
|
|
|
### Dans world-generation-realist
|
|
```cpp
|
|
#include "map/GMap.h"
|
|
#include "map/ResourceRegion.h"
|
|
|
|
// Génération de carte
|
|
GMap heightmap(width, height);
|
|
|
|
// Création de régions de ressources
|
|
ResourceRegion iron_deposit("iron_ore", x, y, total_mass);
|
|
```
|
|
|
|
### Duck Typing Support
|
|
Toutes les régions supportent l'interface duck typing pour UniversalRegionFusionFunction:
|
|
- `std::string getNameType() const`
|
|
- `float getX() const, float getY() const`
|
|
- `float getMass() const`
|
|
- `void setPosition(float x, float y)`
|
|
- `void addMass(float mass)`
|
|
|
|
## Contraintes Modules
|
|
- **Header-only**: Pas d'implémentations .cpp (structures de données simples)
|
|
- **Template-friendly**: Compatible avec les templates C++ pour type safety
|
|
- **Autonomous**: Pas de dépendances externes aux interfaces core
|
|
- **Hot-reload compatible**: Structures sérialisables
|
|
|
|
## Build System
|
|
|
|
### Commands
|
|
```bash
|
|
cd src/modules/map/
|
|
cmake . # Configuration autonome
|
|
make warfactory-map-module # Build module (headers only)
|
|
```
|
|
|
|
### Dependencies
|
|
- **Core**: Aucune dépendance core/ requise
|
|
- **Standards**: C++20 pour features modernes
|
|
- **Compatibility**: Utilisable par tous autres modules
|
|
|
|
---
|
|
|
|
**État actuel**: Module créé avec structures de données déplacées depuis world-generation-realist. Fichiers .cpp inclus dans build system. |