Architecture reelle des portes (sources originales)
Les portes sont des ZONES (pas des paires de zones).
Donnees dans twolev.graph.bin a doorDataOffset (1er int du header TLGT) :
[ZLiftable(36b), ZDoorWall×N(10b), -1] × N_portes, 999
ZLiftable :
– bottom/top : plage de hauteur (porte fermee/ouverte)
– zoneId : la zone qui EST la porte
– raiseCondition : 0=approche joueur, 1=toucher, 4=timer, 5=jamais
– lowerCondition : 0=timeout, 1=jamais
– openDuration : duree en ticks Amiga (50Hz)
Fixes
-
Export :
LevelJsonExporterexporte maintenant le tableaudoorsdans le JSON
avec toutes les donnees ZLiftable. -
Groupement : avant = par paire (1_5, 2_5…) -> portes ouvraient separement.
Maintenant = par zoneId porte -> tous les pans d’une porte montent ENSEMBLE. -
Hauteurs : utilise
zl_bottom/zl_topdu ZLiftable au lieu des hauteurs des murs. -
Conditions : DoorControl gere maintenant raiseCondition/lowerCondition/openDuration.
Porte LOWER_NEVER (lowerCondition=1) reste ouverte indefiniment.
Workflow
./gradlew convertLevels buildScenes run