Sprite Layout
en
EN
pl
PL

nfo

Contents

Układ Sprite Action2

Cecha Wersja
Domy Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5
Kafle Przemysłu Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5
Obiekty Obsługiwane przez OpenTTD 1.11.1 Obsługiwane przez TTDPatch 2.6 (alpha r2023)2.6
Kafle Lotniska Obsługiwane przez OpenTTD 1.11.1 Nieobsługiwane przez TTDPatch

Ta Action2 definiuje spriteayout dla kafla. Dostępne są trzy formaty:

Bazowy format dla kafli z pojedynczym sprite budynku

 <Sprite-number> * <Length> 02 07/09/0F/11 <set-id> 00 <groundsprite> <buildingsprite> <xoffset> <yoffset> <xextent> <yextent> <zextent>
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
07/09/0F/11 B cecha 7=budynki miejskie, 9=kafle przemysłu, 0F=obiekty lub 11 kafli lotnisk
<set-id> B ID tej definicji
00 B Dosłowne 0 (aby odróżnić tę definicję od list losowych/wariacyjnych)
<groundsprite> D 'Sprite' naziemny dla budynku (patrz format poniżej)
<buildingsprite> D Duszek budynku (patrz format poniżej) może mieć wartość zero, aby wskazać, że nie powinien być wyświetlany żaden duszek budynku (przydatne na wczesnych etapach budowania)
<xofs> B Przesunięcie x od północnego rogu kafla (jako 'signed' bajt)
<yofs> B Przesunięcie y od północnego narożnika kafla (jako 'signed' bajt)
<xextent> B rozmiar sprite'a w kierunku x
<yextent> B rozmiar sprite'a w kierunku y
<zextent> B rozmiar sprite'a w kierunku z

Na powyższym xofs, yofs, xextent, yextent i zextent definiują obwiednię 3D 'sprite' budynku, nie uwzględniając 'sprite' ziemi. Przesunięcie Z wynosi zawsze zero dla budynków (TTD nie obsługuje budynków pływających). Uwaga: pary xofs/xextent i yofs/yextent, które umieszczają obwiednię poza kaflem, nie są zalecane.

Rozszerzony format wykorzystujący wiele połączonych sprites

Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.5 (2.0.1 alpha 55 vcs 3)2.5 Ponieważ TTDPatch 2.0.1 alpha 55 vcs 3, domy, kafle przemysłowe (i obiektowe) obsługują również rozszerzoną składnię, która wygląda następująco:

<Sprite-number> * <Length> 02 07/09/0F/11 <set-id> <num-sprites> <groundsprite> [<buildingsprite> (<xoffset> <yoffset> <zoffset> <xextent> <yextent> <zextent>) | (<xpixeloffset> <ypixeloffset> 80)] ...
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
07/09/0F/11 B cecha 7=budynki miejskie, 9=kafle przemysłu, 0F=obiekty lub 11=kafle lotnisk
<set-id> B ID tej definicji
<num-sprites> B Liczba kolejnych sprite'ów budujących (nie liczy się gruntu). Dozwolony zakres: od 1 do 63 (0x01 do 0x3F). Obsługiwane przez OpenTTD 1.2 (r22518)1.2 Nieobsługiwane przez TTDPatch Dodanie 0x40 powoduje, że układ staje się zaawansowanym układem Spritelayout z modyfikatorami rejestru ( patrz poniżej ).
<groundsprite> D Duszek naziemny dla budynku (patrz format poniżej)
<buildingsprite> D Sprite do narysowania. W przeciwieństwie do podstawowego formatu, zero nie jest tutaj dozwolone.
-- 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 y
<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

Note: ograniczenia dla 'sprites' dzielących ich obwiednię są takie same, jak wyjaśniono dla station tiles.

Obsługiwane przez OpenTTD 0.7 (r18959)0.7 Od OpenTTD r18959 możesz narysować wiele 'sprite' ziemi na kafla, co jest przydatne, jeśli chcesz użyć zwykłego 'kafla gruntowego' z trawy/wody/betonu (grass/water/concrete) , ale nadal musisz dodać do niej funkcje bez korzystania z nowej ramki ograniczającej. Aby to zrobić, użyj składni ikonek współużytkujących poprzednią ramkę ograniczającą, ale użyj jej przed definicją pierwszej ramki ograniczającej. xpixeloffset i ypixeloffset odnoszą się do zwykłego miejsca 'kafli naziemnych'.

Obsługiwane przez TTDPatch 2.6 (r2313)2.6 Ta sama funkcja jest również częściowo obsługiwana w TTDPatch, ponieważ TTDPatch 2.6 r2313: TTDPatch ignoruje pola xpixeloffset i ypixeloffset i zawsze używa (0,0) dla offsetu. Jeśli tworzysz GRF, który musi być zgodny zarówno z OpenTTD, jak i TTDPatch, zawsze powinieneś zachować zero xpixeloffset i ypixeloffset zero, aby uzyskać ten sam efekt w obu grach.

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.