Skip to content

initialisation

extrazi edited this page Jul 1, 2023 · 6 revisions
original    original
EN     PL

Manual  M4nfo  i  Raport  Techniczny

newGRF Initialisation

Inicjalizacja pliku newGRF

Każdy plik newGRF wymaga funkcji inicjalizacyjnej, głównie w celu zapewnienia unikalnego newGRF-ID, oprócz dostarczania dodatkowych informacji, takich jak nazwa newGRF, krótki opis, typ używanej palety, informacje o wersji i (prawdopodobnie) informacje o parametrach.

Ta funkcja inicjalizacji musi być uwzględniona raz na newGRF (tj. Nie na plik, w przypadku rozproszonych plików źródłowych) i musi to być jedna z pierwszych funkcji, które mają być użyte w newGRF. Jednakże ważne jest, aby mieć przed sobą ograniczony typ innych funkcji (szczególnie funkcje błędów lub funkcje przepływu kontroli ), z wyjątkiem tych, które definiują nowe sprite'y lub właściwości funkcji.

Format

grfinit(<grf-ID>,<block>)
<block> ::= {grfdescription(<language-ID>,<String>) | grfminversion(<Dword>) | grfblitter(BPP8 | BPP32) | grfname(<language-ID>,<String>) | grfpalette(DOS | WINDOWS | ANY) | grfparameter(<param- block>) | grfurl(<language-ID>,"{"<String>"}") | grfversion(<Dword>)}
<param-block> ::= {grfsetting(<set-block>)}
<set-block> ::= {setdescription({<language-ID>,<String>}) | setname({<language-ID>,<String>}) | settype(BOOL | ENUM, <grf-parameter>,<bit>,<num-bits>) | setlimits(<Dword>,<Dword>) | setdefault(<Dword>) | setvalues(<menuvalue-block>)}
<menuvalue-block> ::= {menuvalue({<Dword>,<language-ID>,<String>})}
Element Rozmiar Opis
<grf-ID> Label ID tego nowego pliku GRF
<language-ID> String ID języka tego konkretnego ciągu tekstowego
<grf-parameter> Byte Parametr grf (tj. Zwykle ustawiany jako opcja w pliku newgrf.cfg)
Funkcja Opis
grfinit(<grf-ID>,<block>) newGRF initialisation
  grfblitter(BPP8 | BPP32) Preferowany blitter
grfdescription({<language-ID>,<String>}) Opis newGRF
grfminversion(<Dword>) wersja minimalna newGRF
grfname({<language-ID>,<String>}) Nazwa newGRF
grfpalette(DOS | WINDOWS | ANY) Paleta do wykorzystania
grfurl(<language-ID>,"{"<String>"}") Dołączanie adresu URL do opisu newGRF
grfversion(<Dword>) Ustawienie wersji newGRF
grfparameter(<param-block>) Ustawianie parametrów dla tego nowego GRF
  grfsetting(<set-block>) Definiowanie "ustawienia" parametru
  setdescription({<language-ID>,<String>}) Definiowanie tekstu opisu ustawienia
setname({<language-ID>,<String>}) Definiowanie nazwy ustawienia
settype(BOOL | ENUM, <grf-parameter>,<bit>,<num-bits>) Definiowanie typu i mapowania parametrów dla ustawienia
setlimits(<Dword>,<Dword>) Min and max allowed value for integer/enumeration settings
setdefault(<Dword>) Wartość domyślna ustawienia
setvalues(<menuvalue-block>) Definiuje blok ustawień "menuvalue", patrz poniżej.
  menuvalue({<Dword>,<language-ID>,<String>} Definiuje tekst(y) wyświetlane zamiast wartości

Opis

grfinit(<grf-ID>,<block>)

Pierwszym parametrem funkcji inicjalizacyjnej jest etykieta reprezentująca ID newGRF. Może być zapisany jako ciąg (np. "mb12" ) lub w notacji szesnastkowej (6D 62 31 32). Zgodnie z konwencją używa pierwszych dwóch znaków jako inicjałów twórcy. Ostatnie dwa znaki powinny być liczbami, zazwyczaj pierwszy numer określający, który z zestawów autora to jest, a drugi numer to numer wersji.

Zasadniczo możesz użyć nowego identyfikatora GRF-ID, o ile masz pewność, że jest on unikalny, ale ogólnie najlepiej postępować zgodnie z powyższymi wskazówkami.

Należy odnotować, że newGRF-ID zaczynające się od liczby szesnastkowej 0xFF (tj. Pierwszy bajt to "FF" , tak jak w FF123456) są zarezerwowane do celów wewnętrznych i nie powinny być używane przez zwykłe pliki newGRF. Nowy GRF-ID FFFFFFFF to specjalny przypadek dla nowego pliku GRF, który jest używany do grafik TTDPatch specyficznych dla funkcji, takich jak zelektryfikowane linie kolejowe lub sygnały wstępne. Te nowe pliki GRF są zawsze aktywne i nie można ich dezaktywować i są oznaczone niebieską flagą w Oknie Statusu GRF .

Dodatkowy plik newGRF, część podstawowych zestawów OpenTTD, musi mieć nowy identyfikator GRF zaczynający się od FF "OT" . Czwarta litera nie może być "W" ani "D" , które są zarezerwowane dla pliku openttdd.grf. OpenGFX definiuje 01 dla swojego dodatkowego newgrf.

grfminversion(<Dword>)

Ta funkcja określa minimalną wersję newGRF z tym samym newGRF-ID, z którym ten newGRF jest nadal kompatybilny. Wersja minimalna musi być ustawiona po bierzącej wersji newGRF, a wersja minimalna musi być mniejsza lub równa aktualnej wersji newGRF.

Podczas ładowania gry, która korzystała ze starszej wersji aktualnego newGRF, która nie jest już zainstalowana, zostanie załadowana najnowsza zainstalowana wersja tego newGRF, która nadal jest zgodna z wersją używaną wcześniej. Starsze newGRFy nigdy nie są jednak uważane za zgodne z newGRF z nowszym numerem wersji.

Jeśli minimalny numer wersji nie jest ustawiony, newGRF jest uznawany za zgodny tylko z newGRF o tym samym numerze wersji. Jeśli minimalny numer wersji jest ustawiony na 0, newGRF jest również uważany za zgodny ze starymi newGRF bez żadnych informacji o wersji.

grfpalette(DOS | WINDOWS | ANY)

Ta funkcja określa paletę dla której sprite'y graficzne w GRF są przeznaczone: DOS, WINDOWS lub ANY w przypadku, gdy newGRF nie zawiera żadnych sprite'ów.

grfparameter(<param-block>)

Ta funkcja opisuje, jak określić informacje o nowych parametrach GRF i jakie "ustawienia" są w nich przechowywane. Domyślnie newGRF ma 128 ustawień, tj. DWORD dla każdego ze 128 nowych parametrów GRF. Liczba użytych parametrów jest niezależna od liczby dozwolonych parametrów newGRF, ponieważ wiele ustawień może trafić do tego samego parametru newGRF, np. podczas korzystania z masek bitowych.

Aby uzyskać liczbę użytych parametrów, można się odwołać do zmiennej "__parcount" . Może to być pomocne podczas pracy z rozproszonymi plikami źródłowymi, a do użytku wewnętrznego potrzebne są dodatkowe parametry, np. aby przydzielić pamięć do ponownego kolorowania tabel. W takich przypadkach numery parametrów powyżej __parcount muszą (i mogą być) użyte poprzez po prostu wyeksportowanie __parcount z pliku zawierającego procedurę inicjalizacji (tj. grfparameter() ) i zaimportowanie go przez te pliki, które muszą zostać przydzielone (lub pracować z już zlokalizowanymi) dalsze parametry:

 Exporting file:
 
 grfinit(GRF_DBXL,
 	...
 	grfparameter(
 		...
 	)
 )
 
 export({__parcount})
 
 Importing file:
 
 import()
 ...
 def(0x50, ET87GREEN) getcolour(0xB6)
 def(0x51, ET87BEIGE) getcolour(0xB7)
 def(0x52, ET87RED) getcolour(0xB8)
 ...
 def(3) yearbuilt(
 	ref(ET87GREEN) if(< 1932)       // green
 	ref(ET87BEIGE) if(1932 .. 1949) // beige/red
 	ref(ET87RED) else		// DB red
 )

grfversion(<Dword>)

Ta funkcja określa wersję newGRF. Jest następnie używany (przez OpenTTD) do wewnętrznego zamawiania newGRF z tym samym newGRF-ID. Ta kolejność określi, który newGRF jest ładowany jako "kompatybilny" newGRF, a który nowyGRF ma się pokazać na liście newGRF. Domyślnie każdy newGRF ma wersję 0, jeśli nie podano grfversion ().

Jeśli wszystkie newGRF (z tym samym newGRF-ID) mają wersję 0, wszystkie zostaną pokazane na liście newGRF. Jeśli najwyższa wersja jest współdzielona przez wiele newGRF, jeden jest losowo wybierany jako "kompatybilny" newGRF. Dlatego ważne jest, aby zapobiec wydawaniu wielu newGRFów o tym samym numerze wersji.

Podczas ustawiania numeru wersji należy również ustawić grfminversion() . W przeciwnym razie ten numer będzie domyślnym numerem wersji, co spowoduje, że newGRF będzie uważany za zgodny tylko z samym sobą (lub ta sama wersja).

grfsetting(<set-block>)

Ta funkcja określa ustawienie parametru, s. funkcje poniżej.

setdescription({<language-ID>,<String>})

Ta funkcja określa opis parametru, który jest wyświetlany po wybraniu tego parametru w oknie wyboru parametrów (patrz rysunek). Służy do szczegółowego wyjaśnienia znaczenia i wpływu, jaki będzie miał ten parametr.

setname({<language-ID>,<String>})

Ta funkcja ustawia krótki opis dla danego parametru, który ma być wyświetlany w oknie wyboru parametrów.

settype(BOOL | ENUM, <grf-parameter>,<bit>,<num-bits>)

Ta funkcja definiuje typ i rozmiar parametru. Możliwe wartości to: - liczba całkowita (bez znaku) lub wyliczenie, - lub wartość logiczna (wł./wył.). Dalsze parametry tej funkcji określają nowe mapowanie parametrów GRF, które ma być użyte:

  • nowy parametr GRF (od 0 do 127) do zapisania ustawienia
  • pierwszy bit w nowym parametrze GRF, który ma być użyty do ustawienia (domyślnie "0")
  • liczba bitów do wykorzystania do ustawienia w nowym parametrze GRF (domyślnie "32")
Jeśli nie określono pierwszego bitu i/lub liczby bitów, funkcja grfsetting() domyślnie używa całego parametru newGRF. Jeśli w ogóle nie określono metody settype(), grfsetting() użyje parametru newGRF o tej samej liczbie co (niejawna) liczba ustawienia.

Używając funkcji settype(), parametry newGRF muszą być podawane sekwencyjnie, tj. Zaczynając od parametru 0 i licząc w górę. Dowolna specyfikacja parametru losowego spowoduje uszkodzenie wewnętrznego wykorzystania parametrów newGRF przez m4nfo (np. Do przydzielania map recolour).

setdefault(<Dword>)

Ta funkcja ustawia domyślną wartość aktualnego ustawienia. W ten sposób zmienia się zachowanie funkcji "reset" w oknie parametrów. W przeciwieństwie do kasowania wszystkich parametrów podczas resetowania, parametr ustawienia domyślnego jest ustawiany na podaną wartość (lub na 0 w przypadku braku wartości domyślnej).

"Reset" ma miejsce podczas dodawania nowego GRF do konfiguracji lub gdy użytkownik naciśnie przycisk resetowania w oknie parametrów.

menuvalue({<Dword>,<language-ID>,<String>})

Ta funkcja definiuje tekst(y) do wyświetlenia zamiast wartości całkowitych/wyliczeniowych ustawionych przez funkcje settype() i setlimits(). Możliwe jest określenie tekstu(ów) tylko dla niektórych poprawnych wartości. Na przykład, jeśli ustawienie dopuszcza wartości z zakresu 0 .. 8, możesz wyświetlić "brak" zamiast tylko "0" , ale inne wartości będą obsługiwane bez zmian.

 Przykład (określające tekst do wyświetlenia zamiast surowych wartości menu):
 
 grfsetting(
 	settype(ENUM,0,0,8) # grf_parameter 0 bits 0 .. 8
 	setlimits(0,2)
 	setdefault(1)
 	setvalues(
 		menuvalue(0,ALL,"low")
 		menuvalue(1,ALL,"normal")
 		menuvalue(2,ALL,"high")
 	)
 	setname(
 		...
 	)
 )

Examples

 Przykład 1 (French NG rail set initialisation, no parameters):
 
 grfinit(GRF_FSRAILS,
 	grfname(ALL,"French Rails Set Protoype v0.101 27/1/2012")
 	grfdescription(ALL, UTF8 CRLF T_LGRAY "Custom track for OTTD railtypes." 0D
 	"© 2011-2012 by Jacopo Coletto. All rights reserved.")
 	grfpalette(DOS)
 	grfversion(1)
 	grfminversion(1)
 )
 Przykład 2 (NewStations initialisation, one parameter using string templating):
 
 grfinit(GRF_NEWSTATIONS,
 	grfname(ALL, "NewStations v0.50 12.12.2012")
 	grfdescription(ALL,CRLF T_LGRAY A9 "2004 - 2012 Michael Blunck. All rights reserved." CRLF
 	"Visit www.ttdpatch.de")
 	grfurl(ALL,"http://www.ttdpatch.de")
 	grfpalette(DOS)
 	grfversion(1)
 	grfminversion(1)
 	grfparameter(
 		grfsetting(
 			settype(BOOL,0,0,1) # grf-parameter 0 bit 0 one bit
 			setname(STR_PARAMETER)
 			setdescription(STR_DESCRIPTION)
 		)
 	)
 )
 Przykład 3 (DBXL initialisation, 3 parameters):
 
 grfinit(GRF_DBXL,
 	grfname(ALL,"DB Set V0.90 (XL) 11.11.11")
 	grfdescription(ALL, UTF8 CRLF T_LGRAY " © 2003 - 2012 Michael Blunck. All rights reserved."  CRLF
 	"Visit www.ttdpatch.de")
 	grfurl(ALL, {"http://www.ttdpatch.de"})
 	grfpalette(DOS)
 	grfversion(1)
 	grfminversion(0)
 	grfparameter(
 		grfsetting(
 			settype(BOOL,0,0,1) # grf-parameter 0 bit 0 one bit
 			setname(
 				ALL, "No gates",
 				D, "Keine Bahnschranken",
 				...
 			)
 			setdescription(
 				ALL,T_LGRAY "By default, the original level crossings are replaced by  gates.",
 				D, UTF8 T_LGRAY "Standardmässig werden die originalen Bahnübergänge  durch Schranken 
 				∆ ersetzt.",
 				...
 			)
 		)
 		grfsetting(
 			settype(BOOL,0,1,1) # grf-parameter 0 bit 1 one bit
 			setname(
 				ALL, "Random livery for tankers",
 				D, UTF8 "Zufällige Farbgebungen für Kesselwagen",
 				...
 			)
 			setdescription(
 				ALL, T_LGRAY "By default, all tankers of a train will be randomly  chosen of the same 
 				∆ colour.",
 				D, UTF8 T_LGRAY "Standardmässig werden die Kesselwagen eines Zuges  gleichartig 
 				∆ zufällig gewählt.",
 				...
 			)
 		)
 		...
 		grfsetting(
 			settype(BOOL,0,5,1) # grf-parameter 0 bit 5 one bit
 			setname(
 				ALL, "Without DBRails",
 				D, "Ohne DBRails",
 				..
 			)
 			setdescription(
 				ALL, T_LGRAY "The 'DBRails' track set is being de-activated.",
 				D, T_LGRAY "Das 'DBRails' Gleis-Set wird deaktiviert.",
 				...
 			)
 		)
 	)
 )
Clone this wiki locally