21.03.2015, 15:29
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:
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:
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ź.
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:
Kod:
{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:
Kod:
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ź.