Documentation développeur¶
Cette section est la référence technique pour travailler sur CTLD — son architecture, ses sous-systèmes, son outillage de build et de test, son modèle d'événements, son internationalisation et le workflow de développement utilisé pour mener le projet. Si vous intégrez CTLD dans une mission plutôt que de le modifier, consultez plutôt le guide Mission Maker.
Organisation de cette section¶
| Page | Ce que vous y trouverez |
|---|---|
| Workflow de développement | Processus de backlog, Git Flow, TDD, quality gates, écriture de skills |
| Architecture | Structure du dépôt, pattern manager, séquence d'init, bibliothèques internes |
| Sous-systèmes | Scenes, crates, troops/JTAC, zones, véhicules, beacons, recon, menu, joueurs, AA |
| Événements | Le bus d'événements interne et le catalogue complet des événements |
| Internationalisation | Fonctionnement de l'i18n, ajout de clés et de langues, overrides mission-maker |
| Build & tests | Pipeline de build, busted, couverture, logging, configuration de debug |
| Migration v1 → v2 | Principe du wrapper legacy, table de migration, exemple concret |
| Référence API | Méthodes publiques de chaque manager |
| Spécification de conception | La justification derrière l'architecture v2 |
L'architecture en un coup d'œil¶
CTLD v2 est une réécriture modulaire et testable du script monolithique d'origine. Le source
Lua 5.1 pur vit sous src/ (une classe par fichier) et est fusionné dans l'unique livrable
CTLD.lua par un build PowerShell.
Le runtime utilise un pattern de manager singleton : un manager par domaine, chacun obtenu
via Manager.getInstance(). Les managers n'appellent jamais directement les rouages internes des
autres pour les préoccupations transverses — ils communiquent à travers le bus d'événements
interne, EventDispatcher.
CTLDCoreManager ← orchestrator, owns the init sequence
CTLDPlayerManager ← tracks connected players, owns the F10 menu
CTLDZoneManager ← pickup / extract / waypoint / logistic zones
CTLDTroopManager ← troops boarding / deploying / extracting
CTLDCrateManager ← crate spawn / load / unload / assembly
CTLDVehicleSpawner ← vehicle request / pack
CTLDFOBManager ← FOB construction pipeline
CTLDBeaconManager ← radio beacons
CTLDJTACManager ← JTAC auto-lase / orbit
CTLDReconManager ← recon layer + F10 map marks
CTLDCrateAssemblyManager ← AA system assembly
CTLDSceneManager ← scene engine (FARP, FOB, minefield…)
CTLDDCSEventBridge ← single DCS event handler, routes to managers
La configuration est en lecture seule et accédée via ctld.gs("paramName") — n'appelez
jamais config:getSetting() directement.
Consultez Architecture pour la structure du dépôt, l'idiome
manager/singleton, la séquence d'init de CTLDCoreManager et les bibliothèques internes.