landart

Zmienna czcionka na wyświetlaczu wewnętrznym

1 post w tym temacie

Witam. :)

Tworzę nową czcionkę na wyświetlacze wewnętrzne w autobusach. Wzoruję się na berlińskim systemie firmy Gorba, ale z tego co wiem, takie urządzenia można spotkać m. in. w krakowskich Bombardierach.

Chciałbym odwzorować zmianę czcionki w zależności od długości wyświetlanej nazwy przystanku. Litery w tym kroju są stosunkowo szerokie i komunikat o długości większej niż 16 znaków nie mieści się na wyświetlaczu. Wtedy szerokość liter się zmienia, a w kontekście OMSI, wyświetlana jest czcionka z innego pliku. Wiadomo, że aby uzyskać taki efekt, należy pogrzebać w skryptach. Oto już edytowany przeze mnie fragment, który najprawdopodobniej odpowiada za odświeżanie wyświetlacza:

{macro:IBIS_LCD-refresh}

'Formatierung der D92-Innenanzeige
	(L.L.RBL_FIS_On)
	{if}
		(L.L.IBIS_LCD_showdest) 0 =
		{if}
			(L.L.IBIS_LCD-zeile) 1 = 
			(L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString) $length 0 > &&
			{if}
				(L.L.IBIS_RouteIndex) 0 >=
				{if}
					(L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString) $length 16 <=
					{if}
						(L.L.IBIS_LCD-zeile) 
						(L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString)
						(S.$.IBIS_cabindisplay)

					{else}
						(L.L.IBIS_LCD-zeile)
						(L.L.IBIS_busstop_index) 2 (M.V.GetBusstopString)
						(S.$.IBIS_cabindisplay2)
					{endif}
				{endif}
			{else}
				(L.L.IBIS_RouteIndex) 0 >=
				{if}
					(L.L.IBIS_busstop_index) 1 (M.V.GetBusstopString) $length 16 <=
					{if}
						(L.L.IBIS_LCD-zeile) 
						(L.L.IBIS_busstop_index) 1 (M.V.GetBusstopString)
						(S.$.IBIS_cabindisplay)

					{else}
						(L.L.IBIS_LCD-zeile)
						(L.L.IBIS_busstop_index) 1 (M.V.GetBusstopString)
						(S.$.IBIS_cabindisplay2)
					{endif}
				{endif}
			{endif}
		{else}
			(L.L.RBL_Linie) (L.L.IBIS_LinieKurs) = (L.L.IBIS_LinieKurs) &&
			{if}
				(L.L.IBIS_Linie_Suffix) s0
				{if}
					l0 28 =
					{if}
						"M"
					{endif}
					l0 35 =
					{if}
						"N"
					{endif}
					l0 36 =
					{if}
						"X"
					{endif}
					(L.L.RBL_Linie) 100 % $IntToStr $+
				{else}
					(L.L.RBL_Linie) $IntToStr
				{endif}
				" " $+
				(L.$.IBIS_cabindisplayDest) $+
			{else}
				""
			{endif}
			(S.$.IBIS_cabindisplay)
		{endif}
	{else}	
		"" (S.$.IBIS_cabindisplay)
	{endif}

{end}

S.$.IBIS_cabindisplay odpowiada za czcionkę z szerokimi literami, a S.$.IBIS_cabindisplay2 za tę z wąskimi literami. Obie są wpisane w plik .cfg odpowiedniego pojazdu:

6
[texttexture_enh]
IBIS_cabindisplay
LCD New Moje
500
35
0
202
254
20
3
1

[...]

13
[texttexture_enh]
IBIS_cabindisplay2
LCD-Innenanzeige_New_1
1600
100
0
202
254
20
3
1

Obecnie efekt jest taki, że przystanki szeroką czcionką wyświetla, a wąską nie.

Pod mesha "DL_Innenanzeige.o3d" (wyświetlacz wewnętrzny) podpięta jest TextTexture o numerze 6, czyli domyślnie z szeroką czcionką. Czy dałoby się jakkolwiek podpiąć drugą TextTexture (o numerze 13) do tego samego obiektu?

Jeśli nie, czy dałoby radę zaimplementować zmienność czcionek w ramach jednego obiektu w jakiś inny sposób? Z góry dziękuję za odpowiedź. :)

0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą dodawać komentarze

Dodaj konto

Dodaj nowe konto. To bardzo proste!


Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.


Zaloguj się teraz

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.