Aller au contenu

Surface de contrôle test/debug

Fichier optionnel DynamicMission_TestUtils.lua, chargé séparément.

Activée par DM.Config.TEST_MODE — le simple chargement du fichier active ce mode par défaut si le flag n'est pas déjà défini, sans action requise du mission-maker. Expose un menu F10 F10 → DynamicMission Test Utils avec 9 sous-menus paginés (limite DCS de 9 entrées par page gérée automatiquement), pour un total d'environ 30 fonctions.

Désynchronisation confirmée avec le modèle de données actuel

Ce fichier référence un schéma de propriétés antérieur à celui de DM.Region/DM.Airbase actuel. Comparaison directe des noms de champs :

  • region.cycleCount / region.lastDetectionTime lus/écrits partout — le champ réel est region.spawnCycles, et lastDetectionTime n'existe pas du tout.
  • region.visibility — le champ réel est region.isMapVisible.
  • region.forceBalancing — le champ réel est region.modeFB.
  • region.modelGroups / region.spawnZones (tableaux à plat) — les structures réelles sont region._mgTemplatesByTag / region._szZonesByTag (indexées par tag).
  • region.vertices — les champs réels sont region.vertices2D / region.verticesRaw.
  • airbase.position — le champ réel est airbase.point.
  • airbase.jerrycanStatics (pluriel) — le champ réel est airbase.jerrycanStatic (singulier).
  • forceSpawnInRegion appelle une fonction externe mist.cloneInZone(...) non liée au moteur de spawn interne du script (DM.utils.cloneInZone) — elle ne fonctionne que si un fichier tiers fournissant cette fonction est chargé séparément par la mission.

Effet net : les fonctions touchant ces champs obsolètes (printRegionInfo, printAirbaseInfo, forceSpawnInRegion, resetRegion, resetMission, fastForwardCycles, setRegionFrequency, toggleRegionVisibility, refreshRegionMarks, teleportPlayerToRegion, la branche de rafraîchissement de captureAirbase) liront nil là où une valeur est attendue — sortie vide/incohérente dans la plupart des cas, erreur d'exécution dans quelques-uns (ex. arithmétique sur nil dans fastForwardCycles). Constat de lecture de code, pas de test d'exécution en direct.

Inventaire des fonctions, par section de menu

1 — Défenses de base (4)

Fonction Effet
clearAirbaseDefenses Détruit tous les groupes de défense AD_ et le Jerrycan d'une base.
forceSpawnDefenses Purge puis force le spawn de N groupes (1-6) pour une coalition donnée.
clearAllDefenses Applique clearAirbaseDefenses à toutes les bases de la mission.
respawnDefenses Purge puis respawn 6 groupes pour la coalition actuelle de la base.

2 — Coalition de base (3)

Fonction Effet
setAirbaseCoalition Change la coalition DCS brute, sans défenses ni événement.
setAirbaseNeutral Raccourci vers coalition neutre.
captureAirbase Capture simulée complète : purge défenses, change coalition, spawn 6 nouvelles défenses, re-check CLEARED.

3 — Gestion de région (6)

Fonction Effet
forceActivateRegion Contourne les conditions d'activation ; refuse si CLEARED.
forceInactivateRegion Arrêt forcé du scheduler.
setRegionState Force directement IDLE/ACTIVE/CLEARED ; refuse CLEARED → ACTIVE.
clearRegionGroups Détruit tous les groupes actifs d'une région.
forceSpawnInRegion Force 1-20 spawns en ignorant tous les plafonds. ⚠️ Champs obsolètes
resetRegion Purge + IDLE forcé + compteurs à zéro + F10 effacé. ⚠️ Champs obsolètes

4 — Debug / inspection (5)

Fonction Effet
printRegionInfo Dump multi-ligne F10 de l'état/config d'une région. ⚠️ Champs obsolètes
printAirbaseInfo Dump multi-ligne F10 d'une base. ⚠️ Champs obsolètes
printAllRegionsStatus Tableau récapitulatif une ligne par région.
printActiveGroups Liste les groupes actifs d'une région (nom/coalition/effectif).
printManagerStatus Compteurs globaux (régions par état, bases, groupes actifs, file de messages, journal d'erreurs).

5 — Téléportation (3)

Fonction Effet
teleportPlayerToZone Téléporte au centre d'une zone trigger, altitude conservée.
teleportPlayerToAirbase Téléporte au-dessus d'une base (altitude par défaut 3000 m).
teleportPlayerToRegion Téléporte au centroïde d'une région à 3000 m. ⚠️ Champs obsolètes

6 — Marques F10 (3)

Fonction Effet
clearAllMarks Retire tous les polygones de région.
refreshRegionMarks Redessine les régions visibles non-IDLE. ⚠️ Champs obsolètes
toggleRegionVisibility Bascule le flag de visibilité. ⚠️ N'agit pas sur le vrai champ isMapVisible

7 — Simulation d'événements (2)

Fonction Effet
simulateBaseCaptured Enveloppe fine de captureAirbase.
simulateLanding Spawn de défenses comme si un atterrissage venait d'avoir lieu sur base neutre.

8 — Temps / cycles (2)

Fonction Effet
fastForwardCycles Invoque manuellement runCycle() N fois (1-50), arrêt anticipé si CLEARED. ⚠️ Champs obsolètes
setRegionFrequency Change la fréquence de cycle (10-300 s) à chaud, redémarre le scheduler si actif.

9 — Réinitialisation globale (4)

Fonction Effet
resetMission Purge tous les groupes de toutes les régions et défenses de toutes les bases, remet tout à IDLE.
stopAllRegions Désactive toutes les régions ACTIVE.
reloadCode Recharge à chaud les deux fichiers via dofile(). Chemin codé en dur — ne fonctionne que sur la machine d'origine.
forceRegionCleared La plus élaborée : purge et respawn les défenses adverses sur chaque base de la région, puis planifie un suivi à 10 s qui resynchronise les coalitions et force CLEARED si checkClearedStatus() confirme.