Aller au contenu principal

Session 39 — Portes : refonte complete basee sur ZLiftable

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

  1. Export : LevelJsonExporter exporte maintenant le tableau doors dans le JSON
    avec toutes les donnees ZLiftable.

  2. Groupement : avant = par paire (1_5, 2_5…) -> portes ouvraient separement.
    Maintenant = par zoneId porte -> tous les pans d’une porte montent ENSEMBLE.

  3. Hauteurs : utilise zl_bottom/zl_top du ZLiftable au lieu des hauteurs des murs.

  4. Conditions : DoorControl gere maintenant raiseCondition/lowerCondition/openDuration.
    Porte LOWER_NEVER (lowerCondition=1) reste ouverte indefiniment.

Workflow

./gradlew convertLevels buildScenes run

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *