Advanced Sprite Layout
en
EN
pl
PL

Contents

Advanced sprite layout using register offsets

<Sprite-number> * <Length> 02 07/09/0F/11 <set-id> <0x40 + num-sprites>
     <groundsprite> <flags> [<register/value>]...
     [ <buildingsprite> <flags>
         ( <xoffset> <yoffset> <zoffset> <xextent> <yextent> <zextent>
         | <xpixeloffset> <ypixeloffset> 80)
       [<register/value>]...
     ]...

Obsługiwane przez OpenTTD 1.2 (r22518)1.2 Nieobsługiwane przez TTDPatch Spritelayout definiuje stałe zestawy ikon do użycia z Akcji 1. Rejestry mogą być używane do indywidualnego wyboru 'sprites' z zestawów ikon, zamiast zawsze korzystania z etapu budowy. Rejestry są oceniane, a ich wartości są zapisywane podczas oceny układu ikonki Action 2. Inne wywołania zwrotne wywoływane podczas rysowania (jak CB 1E) nie mają wpływu na używane wartości rejestrów.

Element Rozmiar Opis
<Sprite-number> dec Kolejny numer 'sprite'
<length> dec Całkowita liczba bajtów użytych w tej akcji
02 B Definiuje akcję 02
04/07/09/0F/11 B cecha 4=stacje, 7=budynki miejskie, 9=kafle przemysłu, 0F = obiekty lub 11 = kafle lotnisk
<set-id> B ID tej definicji
40 + <num-sprites> B Liczba kolejnych sprite'ów budujących (nie można liczyć głównego podłoża). Dozwolony zakres: od 1 do 63 (0x01 do 0x3F).
<groundsprite> D 'Primary' 'sprite' naziemny dla budynku (patrz format poniżej)
<flags> W Flagi dla pierwszego 'sprite' naziemnego (zobacz format poniżej)
<register/value> V Rejestry / wartości do wykorzystania. Zależy od <flags> (zobacz format poniżej)
<buildingsprite> D Sprite do narysowania. W przeciwieństwie do podstawowego formatu, zero nie jest tutaj dozwolone.
<flags> W Flagi dla 'sprite' budynku (patrz format poniżej)
-- dla 'sprites' definiujących nowe obwiednię --
<xofs> B Przesunięcie x od północnego rogu kafla (jako 'signed' bajt)
<yofs> B Przesunięcie y od północnego rogu kafla (jako 'signed' bajt)
<zofs> B z-offset od ziemi
<xextent> B rozmiar sprite'a w kierunku x
<yextent> B rozmiar sprite'a w kierunku x
<zextent> B rozmiar sprite'a w kierunku z
-- dla 'sprites' dzielących obwiednię z poprzednim 'sprite' --
<xpixeloffset> B x 'odsunięcie' od lewego górnego rogu poprzedniego 'sprite'
<ypixeloffset> B y odsunięty od lewego górnego rogu poprzedniego 'sprite'
80 B dosłowny bajt 80-godzinny do odróżnienia od definicji nowego pola ograniczającego
 
<register/value> V Registers / values do wykorzystania. W zależności od <flags> (zobacz format poniżej)

Opisy elementów

Numer-sprite'a

To tylko numer, na którym jesteś.

Długość

Policz liczbę bajtów w tej akcji.

Set-id

'Set-ID', który chcesz zdefiniować dla tego zestawu. Możesz wybrać dowolną wartość z przedziału od 00 do FF, i możesz użyć ich ponownie w pliku grf w późniejszym momencie (jeśli jest równy istniejącemu set-ID, istniejący jest zastępowany i używany jest nowy).

Definicja sprite'a dla sprite'ów naziemnych i budowlanych

Pola 'sprite' ziemi i budynku mają następujący format:

Bity Wersja 'Content'
0-13 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Numer sprite'a, dokładne znaczenie określone przez bit 31
14-15 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 0: rysuj sprite normalnie, 1: rysuj sprite'a w trybie przezroczystym, 2: zmieniaj kolor sprite
16-29 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Numer specjalnego sprite'a translacji koloru, patrz poniżej
30 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.5 (alpha 57)2.5 Jeśli jest ustawiona, sprite jest rysowany normalnie, nawet w trybie przezroczystych budynków (tylko dla budowania 'sprites')
31 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Typ sprite'a, patrz poniżej

Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.5 (alpha 57)2.5 Od wersji TTDPatch 2.0.1 alpha 57 wartość dna może być zerowa, jeśli 'sprite' nie jest potrzebny (jest to przydatne, jeśli trzeba narysować niestandardowe fundamenty, patrz example). Naziemne 'sprite' są zawsze rysowane normalnie, więc bit 30 jest dla nich ignorowany. Bit 30 może mieć inne znaczenie dla naziemnych 'sprites' w późniejszej wersji TTDPatch, więc na razie pozostaw to zero. Nie dotyczy to dodatkowych usług naziemnych korzystających z "<xpixeloffset> <ypixeloffset> 80"-'składnia' (patrz wyżej); dla tych bitów 30 ma to samo znaczenie, co dla budowania 'sprites' .

Specjalny numer sprite w translacji koloru

Jest to używane tylko wtedy, gdy bity 14 lub 15 są niezerowe. Bity 16–29 muszą być liczbą zwykłego 'sprite' TTD zawierającego tabelę translacji kolorów (dostępne tabele tłumaczeń znajdują się poniżej). W trybie przezroczystym potrzebna jest odpowiednia tabela translacji, np. z 'sprite' TTD o numerze 802 (s.b.). Zobacz RecolorSprites, aby uzyskać więcej informacji na temat używania przezroczystych i zmieniających kolor 'sprites' .

W przypadku domów, jeśli nie podano sprite'a zmieniającego kolor, ale zmiana koloru jest włączona w bitach 14-15, istnieją dwie możliwości:

Zobacz RecolorSprites, aby uzyskać listę dostępnych tłumaczeń kolorów.

W przypadku kafli branżowych, jeśli to pole jest równe zero, ale zmiana koloru jest włączona w bitach 14 lub 15, automatycznie zostanie zastosowany kolor branży zawierającej.

Zmielony 'sprite' powinien mieć dokładnie ten sam rozmiar i kształt co płaski kafel TTD. Ogólnie rzecz biorąc, nie powinien zawierać niczego, co ma wymiar Z, ponieważ zakryje go dowolny niemielony 'sprite' .

Przydatne wartości dla 'sprite' naziemnych:

Numer sprite'a ('dziesiętny') 'Contents'
3924 'teren'
3981 trawnik
4061 woda
4550 śnieg lub pustynia (w zależności od klimatu)
1420 'beton'

Pamiętaj, że wszystkie 'sprites' naziemne stają się widoczne w trybie "przezroczystych budynków" , dlatego powinieneś rysować również części, które wydają się być ukryte.

Typ sprite'a

Jeśli bit 31 jest wyraźny, dolne 14 bitów zawiera regularną liczbę 'sprites' TTD.

Jeśli ustawiony jest bit 31, dolne 14 bitów zawiera pewną liczbę zestawów 'sprites' w najnowszej akcji 1, a o używanym 'sprite' decyduje się zgodnie z bieżącym stanem konstrukcyjnym i liczbą 'sprites' w zestawie:

Flagi w zaawansowanych układach sprite'ów

<flags> jest zbiorem rozmiaru słowa o tych znaczeniach:

Bit 'Hex' 'Parentsprite' 'Gruntsprite/Podrzędnysprite'
0 0001 Pominięcie bounding box w tym child sprites Pominięcie 'sprite'
1 0002 Dodanie offset do 'sprite', wyłącza domyślne wykorzystanie konstrukcji lub railtype-offset
2 0004 Dodanie offset do recoloursprite
3 0008 Recolour 'sprite' jest z Action 1 (będzie 'dotknięte' (affected) tą samą fazą (stage ) konstrukcji resp. railtype-offsets jako sprites, chyba że bit 2 jest ustawiony)
4 0010 Dodanie offset dla <xoffset> i <yoffset> Dodanie offset dla <xpixeloffset>
5 0020 Dodanie offset dla <zoffset> Dodanie offset dla <ypixeloffset>
6 0040 Rozwiązywać sprite z Zmienną 10 ustawioną na określoną wartość[1]
7 0080 Rozwiązywanie problemu ponownego odbarwiania za pomocą Zmiennej 10 ustawionej na określoną wartość[1]
8..15

Zarezerwowane, powinno być zero. Jeśli GRF ustawi nieznane bity, to zostanie wyłączony..
  1. 1.0  1.1  Ważne tylko dla stacji: Łańcuch Action 1/2/3 jest rozwiązywany wielokrotnie, 'sprites' mogą być częścią różnych Action 1: Związana z tym wartość w <register/value> jest wartością surową (nie rejestrem!), którą należy wpisać do zmiennej 10 podczas rozwiązywania 'sprites'.
  • tylko dozwolone wartości obecnie 0-7
  • wartość '2' jest stosowana przy rozwiązywaniu fundowania niestandardowego, (a więc nie należy z tym kolidować))
  • nawet jeśli sprite nie pochodzi z Action 1, wartość nadal określa, które łańcuchy Action2 definiują wartości dla rejestrów, do których się odwołują.
  • Rejestr dla "Dodaj offset do rekoloryzacji" jest określony przez działanie 1/2/3 łańcucha ze zmienną 10, jak określono dla 'spritu' odbarwionego.
  • Pozostałe rejestry są określone przez działanie 1/2/3 łańcucha ze zmienną 10, jak określono dla 'sprite'.
  • Jeżeli nie jest zdefiniowana zmienna 10 wartości, to właściwość stacji 13 bit 0 staje się skuteczna; tj. zmienna 10 jest ustawiona na 0 lub 1 w zależności od bitu i tego, czy 'rozwiązany' jest pierwszy 'spritenaziemny', czy też inny 'sprite'. Odnosi się to zarówno do 'groundsprite', jak i do palety 'groundsprite'.
  • Rejestr lub wartość w zaawansowanych układach sprite

    Są to rejestry tymczasowego przechowywania, które można dodać do poszczególnych części. Wartości rejestru uważa się za podpisane. Kolejność rejestrów jest taka sama jak bitów w <flags>. Jeśli bit nie jest ustawiony, nie pojawiają się dla niego rejestry. Większość bitów wymaga jednego rejestru.