# De Ultimate Stunts track editor (ustuntstrackedit)

### Inleiding

De Ultimate Stunts track editor zal u in staat stellen om nieuwe banen te maken en bestaande banen te bewerken. Op dit moment (versie 0.7.2) is de track editor nog erg beperkt: het is slechts mogelijk om tiles te plaatsen/verwijderen op de baan, en om banen te importeren vanuit het originele spel Stunts.

### Gebruik

Op dit moment is de gebruikersinterface nog vrij eenvoudig. In het hoofdvenster zijn de volgende items zichtbaar:

- Een 3D view van de baan
- De naam van de baan boven de 3D view
- Een Statusbalk onder de 3D view
- Een toolbar bovenin het scherm
- Het bewerkgereedschap aan de linkerkant

De meeste items kunnen gebruikt worden met de muis. Voor het rondbewegen in de 3D view kunnen de volgende controls gebruikt worden:

- "Slepen" met de linker muisknop: roteren van de camerapositie
- "Slepen" met de rechter muisknop: inzoomen / uitzoomen
- Pijltjestoetsen: verplaats de cursor naar links/rechts/voor/achter
- PgUp/PgDn toetsen: verplaats de cursor naar boven/beneden

De "cursor"positie is zichtbaar als de positie van de knipperende tile. De vertikale kolom van tiles op de cursorpositie is ook zichtbaar als een witte balk van lijnen:

### De baan bewerken

Het "knipperen" van de cursor laat twee toestanden van de baan zien: de huidige toestand, en hoe het er uit ziet als u op de Enter toets drukt. Soms is er geen verschil, en in deze gevallen zult u geen geknipper zien.

Ultimate Stunts zal meerdere bewerkingsgereedschappen ondersteunen, maar op dit moment (versie 0.7.2) is er slechts één gereedschap, die u in staat stelt om individuele tiles in te voegen / te verwijderen. De gebruikersinterface van dat gereedschap is te zien aan de linkerkant van het scherm, maar er zijn ook sneltoetsen.

De standaardmodus van dit gereedschap is om de tile op de cursorpositie te vervangen door de geselecteerde tile. Dus, als u op de OK-button in de gereedschaps-interface klikt (of op Enter drukt), dan wordt de geselecteerde tile op de cursorpositie geplaatst. Bestaande tiles op die positie worden daarbij verwijderd.

De "+"-knop is vergelijkbaar met de OK-knop, maar het vervangt niet de tile op de cursorpositie. In plaats daarvan combineert het de bestaande en de geselecteerde tile. De andere twee knoppen kunnen gebruikt worden om de geselecteerde tile te roteren, en om de bestaande tile op de cursorpositie te wissen.

De volgende toetsen kunnen als sneltoetsen gebruikt worden:

- Enter: plaats de tile (zoals de OK-knop).
- Insert: plaats de tile (zoals de "+"-knop).
- Delete: verwijder alle bestaande tiles op de cursorpositie (zoals de gum-knop).
- Tab: selecteer een ander tilemodel.
- Shift+Tab: selecteer een ander tilemodel (doorloopt tilemodellen in omgekeerde volgorde).
- r: roteer het tilemodel (zoals de roteer-knop).
- Ctrl+z: maak de laatste actie ongedaan.
- Ctrl+Shift+z: doe de laatste ongedaan gemaakte actie opnieuw.

Op dit moment is de beschikbare set tilemodellen beperkt tot de selectie van tiles die al gebruikt worden in de baan. Ook kunnen de afmetingen van de baan niet veranderd worden, route informatie kan niet veranderd worden, en omgevings-instellingen (achtergrond, belichting etc.) kunnen niet bewerkt worden. Op dit moment moeten deze dingen allemaal handmatig gedaan worden.

### Stunts banen importeren

Één van de opties in het track editor toolbar is om banen te importeren vanuit het originele "Stunts" (4D Sports Driving) spel. Als u vindt dat de huidige track editor nog te beperkt is, dan kunt u uw banen in Stunts maken en importeren in Ultimate Stunts. U kunt deze functie ook gebruiken om uw grote verzameling Stunts banen in Ultimate Stunts te importeren.

### Configureren van de Stunts importeer functie

De Stunts import functie kan geconfigureerd worden door een bestand te bewerken dat zich in de Ultimate Stunts data directory bevindt: misc/trackedit.conf. In dit configuratiebestand kan bijna het hele baan-importeer proces aangepast worden met de variabelen in de [trkimport] sectie. Dit importeerproces heeft de volgende stappen:

##### 1: Laad een template baan

Ultimate Stunts laadt een normaal Ultimate Stunts baanbestand, dat zal dienen als uitgangspunt voor de geconverteerde baan. Deze baan zal later bewerkt worden, afhankelijk van de inhoud van het .trk bestand. De bestandsnaam van deze templatebaan kan ingesteld worden met de templatefile variabele, bijvoorbeeld:

    templatefile = misc/trackedit.template

De template baan moet minimaal 30*30 tiles breed en lang zijn, en minimaal 2 tiles hoog, of meer, afhankelijk van de configuratie van de rest van het importeerproces. Alle tiles en textures die ooit gebruikt zullen worden in de rest van het proces moeten aanwezig zijn in de template baan. De begintoestand van de tiles moet een vlakke, horizontale grond zijn.

##### 2: Laad het terrein

Vervolgens worden de terrein en tile item bytes in het .trk bestand verwerkt. Alle bytewaarden zijn hier hexadecimale waarden, maar zonder de gebruikelijke 0x prefix. Wat hier gebeurt hangt in de eerste plaats af van het terrein:

- Als de terrein byte 00 is (vlakke grond), wordt alleen de item byte verwerkt
- Als de terrein byte tussen (inclusief) 01 en 05 zit (water), dan wordt eerst een water tile geplaatst door de terrein byte te verwerken, en dan wordt de item byte verwerkt.
- Als de terrein byte 06 is (hoge vlakke grond), dan wordt de item byte verwerkt, en daarna wordt de tile hoogte vergroot.
- Als de terrein byte tussen (inclusief) 07 en 0a zit (diagonale grond), dan wordt een tile geplaatst afhankelijk van de combinatie van terrein en tile bytes.
- Voor andere tiles wordt alleen de terrein byte verwerkt (op andere tiles heeft een Stunts baan nooit een item)

Als een terrein byte met hexadecimale waarde xy wordt verwerkt, dan wordt dat gedaan volgens de variabele terrain_xy in het configuratiebestand. Als een item byte met de waarde pq wordt verwerkt, dan wordt dat gedaan volgens de variabele tile_pq. Tot slot, voor de terrein bytes tussen 07 en 0a, het verwerken van een combinatie van terrein byte xy en item byte pq wordt gedaan volgens de variabele terrain_xy_pq.

Alle waarden van de variabelen terrain_xy, terrain_xy_pq en tile_pq hebben het zelfde formaat. Deze waarden bevatten nul of meer eenheden van de volgende vorm:

    x,y,z:tileID/rotatie/hoogte;

Elk van deze eenheden zorgt ervoor dat één tile veranderd wordt. De waarden x,y,z zeggen welke tile veranderd zal worden. tileID/rotatie/hoogte zijn de nieuwe instellingen van de tile, met de zelfde betekenis als de drie waarden in het baan-bestandsformaat. x,y en z zijn positie-relatief ten opzichte van de tile die verwerkt wordt. x en y zijn de relatieve horizontale positie in de baan, en z is de laag in de baan (de vertikale positie). Dus, 0,0,0 is de laagste tile op de verwerkte positie, 0,0,1 is de tweede-laag tile op die positie, enz.. Posities zoals 1,0,0 of 0,1,2 zijn buiten de tile die verwerkt wordt, maar hen veranderen is toegestaan voor grote tiles.

De "grote tile" item waarden fd, fe en ff worden niet verwerkt.