warfactoryracine/src/modules/map/CLAUDE.md
StillHammer 076acd4812 Refactor map system and clarify meteorite impact physics
- 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>
2025-09-30 19:00:36 +08:00

2.7 KiB

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

#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

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.