Skip to content

stationFunctions3

extrazi edited this page Jun 26, 2023 · 5 revisions
original    original
EN     PL

Table of Contents

zaawansowany układ 'sprites'

Przykład 4 pokazuje, jak skorzystać z 'zaawansowanego układu sprite' w przypadku powtarzających się układów stacji. Dobrym przykładem może być układ stacji z koniecznością powtarzania się, tylko dla różnych sprite'ów ładunkowych, co można by przedstawić poprzez zmianę koloru sprite'a próbki ładunku. Zaawansowany układ sprite'ów dla stacji daje możliwość prostego dodania zmienionych kolorów sprite'ów do ich własnego bloku sprite'ów i łatwy dostęp do nich za pomocą funkcji układu.

 Przykład 4 (użycie rejestrów i zmiana koloru sprite'ów):
 asl_on()
 layout(ADVTEST,
  tile(
    ground(1012)
    recolour(0, xyz(8,8,0), dxdydz(8,8,8), 0, aslflags({OFFSET_RCSPRITE,
 	CUSTOM_RCSPRITE, RESOLVE_RCSPRITE}), registers({11,4}))
  )
  tile(
    ...
  )
 )
 // budowanie sprite'ów
 spriteblock(
  set(
    sprite(advtest.pcx 10 10 09 22 32 -14 -16)
  )
 )
 def(0) spriteset(little(0))
 // <span title=odbarwienie>recolour</span> 'sprites' - pomarańczowe i niebieskie
 spriteblock(ALLOCATE,
  set(
    colourtable(DOSMAP,
      62 .. 67, C0 .. C5,
    )
    colourtable(DOSMAP,
      62 .. 67, 92 .. 97,
    )
  )
 )
 def(1) spriteset(little(0))
 def(2) spritetype(
 	ref(1) if(4) // odświeża 'sprites'
 	ref(0) else  // budowanie sprite'ów
 )
 def(3) setregisters(11,1,ref(2)) // 2. wpis zmiany koloru: niebieski
 def(4) callback(
 	cbr(0) if(CB_LAYOUT)
 	ref(3) else // grafika
 )
 makestation(ADVTEST,
 	default(ref(4))
 )

Należy odnotować, że rejestry używane w zaawansowanym układzie sprite'ów muszą być ustawione wewnątrz łańcucha grafiki, a nie w łańcuchu wywołań zwrotnych. Odbywa się to w def(3), gdzie funkcja setregisters() ustawia rejestr '11' na wartość '1', tj. Drugi wpis 'sprite' zmieniającego kolor. W def(2) łańcuch grafiki jest podzielony na łańcuch dla sprite'ów budynku, def(0) i dodatkowy łańcuch dla sprite'ów zmiany koloru, def(1).

W layoucie 'sprite' jest definiowana do zmiany koloru za pomocą funkcji recolour(), przy czym pierwszy parametr ustawia 'sprite' budynku, a czwarty parametr ustawia 'sprite' recolour, w tym przypadku oba na '0' . Parametr 5 określa flagi OFFSET_RCSPRITE, CUSTOM_RCSPRITE i RESOLVE_RCSPRITE, a parametr 6 określa rejestr, który ma być użyty do zdefiniowania przesunięcia 'sprite' ponownego koloru, oraz łańcuch grafiki do rozpoznawania sprite'ów 'ponownego kolorowania' (4).

copylayout(<Station-ID>, <Station-ID> {,<Station-ID>})

Ta funkcja umożliwia skopiowanie definicji układu kafli. Pierwszy argument to ID-stacji, dla której zdefiniowano układ kafli, pozostałe argumenty to ID stacji, do których należy skopiować układ kafli.

copytilelayout(<Station-ID>, <Station-ID> {,<Station-ID>})

Tak samo jak powyżej, ale ta funkcja umożliwia skopiowanie niestandardowej definicji układu kafla TTD . Pierwszy argument to ID-stacji, dla którego zdefiniowano niestandardowy układ kafli TTD, pozostałe argumenty to ID-stacji, do których mają zostać skopiowane niestandardowe układy kafli.

Funkcje do działania stacji

Funkcje te służą do oceny zmiennych związanych z grą i udostępniania ich funkcji aktywacji stacji . Typowa aplikacja wykorzystywałaby wiele tych funkcji połączonych ze sobą, tworząc "łańcuch", łączący 'sprites' graficzne stacji z jej funkcją aktywacji. Zobacz tutaj przykład .

Funkcja Opis
anim_frame ([,] <block>) Pobierz ramkę animacji
anim_trigger (<block>) Pobierz aktualny wyzwalacz animacji
callback (<block>) Sprawdź rodzaj oddzwonienia
cargotrigger (<block>) Pobierz typ ładunku dla wyzwalacza animacji
cargowaiting (<Cargo-ID>, <block>) Ilość oczekującego ładunku
else To naprawdę próżne stwierdzenie
Exclusiveiverights (<block>) Liczba miesięcy wyłączne prawa transportowe będą obowiązywać
iswaypoint (<block>) Stacja waypoint nie odbierze żadnego ładunku
pbsinfo (<block>) Informacje sygnalizacyjne oparte na ścieżce
plt_axis([<shift-mask>,]]
plt_edges(<block>)
plt_even([<shift-mask>,]]bieżących kaflach platform
test_pos(<block>)
test_posrev(<block>)
test_num(<block>)
test_numrev(<block>)
test_length(<block>)
test_total(<block>)
test_axis(< lblock>)
test_position(<block>)
test_size(<block>)
test_tiletype([<shift-mask>,]]]
}

Opis

anim_frame([<Coordinate>,]]

Ta funkcja zwraca rzeczywistą wartość licznika animacji bieżącego kafla, aby zdecydować o wyświetleniu klatki. Wartość zwracana jest z zakresu od zera do liczby klatek animacji określonej we właściwości anim_info() definicji stacji roboczej .

W przypadku podania dodatkowego parametru współrzędnej zwracana jest aktualna wartość licznika animacji danego kafla. Prośba odnotowania, że współrzędne muszą być podane przez funkcję pomocniczą pos(, ,)


Clone this wiki locally