'##############
'Rollband Script
'##############

'Rollbandanimation für ein O305-Rollband (Drei Ziffern und Ziel manuell)

'(c) 20.02.2009 Rüdiger Hülsmann
'(c) 26.06.2011 Marcel Kuhnt

'Script Version: 1.6
'Omsi release: 1.0

'Needs:
'- none


'Revision History:
'- Marcel Kuhnt		10.08.2009	Added Revision History
'- Marcel Kuhnt		13.04.2010	Added Line List Script
'- Rüdiger Hülsmann	11.10.2010	New AI Scheduled trigger
'- Rüdiger Hülsmann	17.10.2010	line offset added
'- Marcel Kuhnt		25.01.2011	Reduced error offset
'- Marcel Kuhnt		03.02.2011	/^\ corrected
'- Marcel Kuhnt		26.06.2011	Komplettmanuelles Rollband
'- Marcel Kuhnt		10.09.2011	Rollband-Menüfunktion angepasst
'- Rüdiger Hülsmann	22.12.2013	Funktionen für Steck- und Seitenschild
'- Marcel Kuhnt		09.01.2014	Einführung von Unterordnern über Hofdatei-Globalstring 1

'------------------------------------------------------------------------------------------

{trigger:bus_rollband_up}
	(L.L.rlbnd_activekurbel) 1 =
	{if}
		(L.L.rlbnd_ln1) (L.S.timegap) 1 / + (S.L.rlbnd_ln1)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 2 =
	{if}
		(L.L.rlbnd_ln2) (L.S.timegap) 1 / + (S.L.rlbnd_ln2)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 3 =
	{if}
		(L.L.rlbnd_ln3) (L.S.timegap) 1 / + (S.L.rlbnd_ln3)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 4 =
	{if}
		(L.L.rlbnd_ziel) (L.S.timegap) 1 / + (S.L.rlbnd_ziel)
		(M.L.rollband_actu)
	{endif}
	{endif}
	{endif}
	{endif}
{end}

{trigger:bus_rollband_dn}
	(L.L.rlbnd_activekurbel) 1 =
	{if}
		(L.L.rlbnd_ln1) (L.S.timegap) 1 / - (S.L.rlbnd_ln1)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 2 =
	{if}
		(L.L.rlbnd_ln2) (L.S.timegap) 1 / - (S.L.rlbnd_ln2)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 3 =
	{if}
		(L.L.rlbnd_ln3) (L.S.timegap) 1 / - (S.L.rlbnd_ln3)
		(M.L.rollband_actu)
	{else}
	(L.L.rlbnd_activekurbel) 4 =
	{if}
		(L.L.rlbnd_ziel) (L.S.timegap) 1 / - (S.L.rlbnd_ziel)
		(M.L.rollband_actu)
	{endif}
	{endif}
	{endif}
	{endif}
{end}


{trigger:bus_rollband_setL1}
	1 (S.L.rlbnd_activekurbel)
{end}

{trigger:bus_rollband_setL2}
	2 (S.L.rlbnd_activekurbel)
{end}

{trigger:bus_rollband_setL3}
	3 (S.L.rlbnd_activekurbel)
{end}

{trigger:bus_rollband_setT}
	4 (S.L.rlbnd_activekurbel)
{end}


'****************************************************************
'**  MCQ 24.5.2009 - Trigger für AI-Scheduled-Initialisierung: **
'****************************************************************

{trigger:ai_scheduled_settarget}

'Hier wird das automatische Rollband eingestellt:
	(L.L.AI_target_index) s0 (M.V.GetTerminusCode) s1
'Wenn der Terminus-Code größer als 1000 ist, dann bitte Steckschild verwenden:
	1000 >
	{if}
		l1 1000 - (S.L.rlbnd_steckschild_index)
		l0 (S.L.rlbnd_steckschild_Termindex)
'Rollband auf 0:
		0 (S.L.rlbnd_ziel)
	{else}
		l0 (S.L.rlbnd_ziel)
		-1 (S.L.rlbnd_steckschild_Termindex)

'Wenn der Bitmap-String in Verwendung ist, dann den als Integer interpretieren und Steckschild zusätzlich setzen:
		l0 6 (M.V.GetTerminusString) $StrToFloat s1
		l1 1000 >
		{if}
			l1 1000 - (S.L.rlbnd_steckschild_index)
			l0 (S.L.rlbnd_steckschild_Termindex)			
		{endif}

	{endif}
	(M.L.rollband_setsteckschild)
	

'Hier werden die Nummernrollbänder eingestellt:

'Nummern-String holen:


'Vorgehensweise pro Ziffer: zunächst wird die Ziffer "ausgeschnitten", dann jeweils dubliziert, damit
'jeweils ein Exemplar der ausgeschnittenen Ziffer im Cache bleibt (die andere geht beim $= verloren)

'1. Ziffer:

	(L.$.SetLineTo) 1 $SetLengthL		$d

	" " $=		{if}	 1 (S.L.rlbnd_ln1)	{endif} $d
	"0" $=		{if}     2 (S.L.rlbnd_ln1)	{endif} $d
	"1" $=		{if}	 3 (S.L.rlbnd_ln1)	{endif} $d
	"2" $=		{if}	 4 (S.L.rlbnd_ln1)	{endif} $d
	"3" $=		{if}	 5 (S.L.rlbnd_ln1)	{endif} $d
	"4" $=		{if}	 6 (S.L.rlbnd_ln1)	{endif} $d
	"5" $=		{if}	 7 (S.L.rlbnd_ln1)	{endif} $d
	"6" $=		{if}	 8 (S.L.rlbnd_ln1)	{endif} $d
	"7" $=		{if}     9 (S.L.rlbnd_ln1)	{endif} $d
	"8" $=		{if}	10 (S.L.rlbnd_ln1)	{endif} $d
	"9" $=		{if}	11 (S.L.rlbnd_ln1)	{endif} $d
	"/" $=		{if}  12.5 (S.L.rlbnd_ln1)	{endif} $d
	"E" $=		{if}	14 (S.L.rlbnd_ln1)	{endif}

'2. Ziffer:

	(L.$.SetLineTo) 2 $SetLengthL 1 $SetLengthR		$d

	"^" $=		{if}  0.5 (S.L.rlbnd_ln2)	{endif} $d
	" " $=		{if}	 1 (S.L.rlbnd_ln2)	{endif} $d
	"0" $=		{if}     2 (S.L.rlbnd_ln2)	{endif} $d
	"1" $=		{if}	 3 (S.L.rlbnd_ln2)	{endif} $d
	"2" $=		{if}	 4 (S.L.rlbnd_ln2)	{endif} $d
	"3" $=		{if}	 5 (S.L.rlbnd_ln2)	{endif} $d
	"4" $=		{if}	 6 (S.L.rlbnd_ln2)	{endif} $d
	"5" $=		{if}	 7 (S.L.rlbnd_ln2)	{endif} $d
	"6" $=		{if}	 8 (S.L.rlbnd_ln2)	{endif} $d
	"7" $=		{if}     9 (S.L.rlbnd_ln2)	{endif} $d
	"8" $=		{if}	10 (S.L.rlbnd_ln2)	{endif} $d
	"9" $=		{if}	11 (S.L.rlbnd_ln2)	{endif} $d
	"E" $=		{if}	14 (S.L.rlbnd_ln2)	{endif}

'3. Ziffer:

	(L.$.SetLineTo) 3 $SetLengthL 1 $SetLengthR		$d

	" " $=		{if}	 1 (S.L.rlbnd_ln3)	{endif} $d
	"0" $=		{if}     2 (S.L.rlbnd_ln3)	{endif} $d
	"1" $=		{if}	 3 (S.L.rlbnd_ln3)	{endif} $d
	"2" $=		{if}	 4 (S.L.rlbnd_ln3)	{endif} $d
	"3" $=		{if}	 5 (S.L.rlbnd_ln3)	{endif} $d
	"4" $=		{if}	 6 (S.L.rlbnd_ln3)	{endif} $d
	"5" $=		{if}	 7 (S.L.rlbnd_ln3)	{endif} $d
	"6" $=		{if}	 8 (S.L.rlbnd_ln3)	{endif} $d
	"7" $=		{if}     9 (S.L.rlbnd_ln3)	{endif} $d
	"8" $=		{if}	10 (S.L.rlbnd_ln3)	{endif} $d
	"9" $=		{if}	11 (S.L.rlbnd_ln3)	{endif} $d
	"\" $=		{if}  12.5 (S.L.rlbnd_ln3)	{endif} $d
	"E" $=		{if}	14 (S.L.rlbnd_ln3)	{endif}



' Das ultimative Sahnehäubchen: die drei Rollbänder werden noch zufällig verrutscht...! *ggg*

11 random 5 - 75 / (L.L.rlbnd_ln1) + (S.L.rlbnd_ln1)
11 random 5 - 75 / (L.L.rlbnd_ln2) + (S.L.rlbnd_ln2)
11 random 5 - 75 / (L.L.rlbnd_ln3) + (S.L.rlbnd_ln3)
11 random 5 - 75 / (L.L.rlbnd_ziel) + (S.L.rlbnd_ziel)

	(M.L.rollband_actu)


1 (S.L.rlbnd_refresh_seitenschild)

{end}

'********************************************************************
'**  MCQ 24.5.2009 - Ende Trigger für AI-Scheduled-Initialisierung **
'********************************************************************



'*******************************************
' Trigger für Seitenschild

{trigger:rlbnd_seitenschildklemme_drag}
	(L.S.mouse_y) -300 / (L.L.rlbnd_seitenschildklemme) + (S.L.rlbnd_seitenschildklemme) s0
	l0 0 <
	{if}
		0 (S.L.rlbnd_seitenschildklemme)
	{endif}
	l0 0.7 >
	{if}
		(L.L.rlbnd_seitenschild_refresh) 0 =
		{if}
			1 (S.L.rlbnd_seitenschild_refresh)
			(T.L.ev_fahrertuer_auf)
			(L.$.Rollband_Seitenschild) "" $=
			{if}
				1 (S.L.rlbnd_refresh_seitenschild)
			{else}
				"" (S.$.Rollband_Seitenschild)
			{endif}
		{endif}
	{endif}
	l0 1 >
	{if}
		1 (S.L.rlbnd_seitenschildklemme)
	{endif}
{end}

{trigger:rlbnd_seitenschildklemme_off}
	(L.L.rlbnd_seitenschildklemme)
	0.3 >
	{if}
		(T.L.ev_fahrertuer_zu)
	{endif}
	0 (S.L.rlbnd_seitenschildklemme)
	(S.L.rlbnd_seitenschild_refresh)
{end}

'*******************************************
' Trigger für Steckschild

{trigger:bus_rollband_change_steckschild}
	(L.L.rlbnd_steckschild_index) 1 + (S.L.rlbnd_steckschild_index)
	1000 + (M.V.GetTerminusIndex) (S.L.rlbnd_steckschild_Termindex)

	(M.L.rollband_setsteckschild)
	(M.L.rollband_refreshIntIndex)
{end}

{macro:rollband_setsteckschild}
	(L.L.rlbnd_steckschild_Termindex) s0
	0 >= 
	{if}
		l0 6 (M.V.GetTerminusString) (S.$.Rollband_SchildFrnt)
		1 $SetLengthL $StrToFloat 1 max (S.L.rlbnd_steckschild_vis)
		"..\..\Anzeigen\SteckSchilder\" (L.$.Rollband_SchildFrnt) $+ (S.$.Rollband_SchildFrnt)
	{else}
		0 (S.L.rlbnd_steckschild_index) (S.L.rlbnd_steckschild_vis)
		""  (S.$.Rollband_SchildFrnt)
	{endif}
{end}



'----------------------
'	Init
'----------------------

{macro:rollband_init}
	0
		(S.L.rlbnd_ln1) (S.L.rlbnd_ln2) (S.L.rlbnd_ln3) (S.L.rlbnd_ziel)
	1 (S.L.rlbnd_activekurbel)
	(M.L.rollband_actu)
{end}

{macro:rollband_frame}

'Aktualisierung der Code-Tafel:

	"Linienlisten\" (L.$.yard) "_RLB.jpg" $+ $+ (S.$.Rollband_Linelist)

	(L.L.rlbnd_refresh_seitenschild)
	{if}
		"..\..\Anzeigen\Seitenschilder\" 2 (M.V.GetDepotStringGlobal) $+ "\" $+ (L.$.SetLineTo) $RemoveSpaces $+ ".bmp" $+ (S.$.Rollband_Seitenschild)
		0 (S.L.rlbnd_refresh_seitenschild)
	{endif}
{end}


{macro:rollband_refreshIntIndex}
	(L.L.rlbnd_steckschild_Termindex) s0 0 >=
	l0 0 (M.V.GetTerminusString) "" $= ! &&
	{if}
		l0
	{else}
		(L.L.rlbnd_ziel)
	{endif}
	(S.L.target_index_int)
{end}

{macro:rollband_actu}
	(L.L.rlbnd_ln1) trunc 0.001 + (S.L.rlbnd_ln1_bmp)
	/-/ (L.L.rlbnd_ln1) + 2 / (S.L.rlbnd_ln1_trans)

	(L.L.rlbnd_ln2) trunc 0.001 + (S.L.rlbnd_ln2_bmp)
	/-/ (L.L.rlbnd_ln2) + 2 / (S.L.rlbnd_ln2_trans)

	(L.L.rlbnd_ln3) trunc 0.001 + (S.L.rlbnd_ln3_bmp)
	/-/ (L.L.rlbnd_ln3) + 2 / (S.L.rlbnd_ln3_trans)

	(L.L.rlbnd_ziel) (S.L.target_index_int) trunc
	/-/ (L.L.rlbnd_ziel) + (S.L.rlbnd_ziel_trans) 1 - (S.L.rlbnd_ziel_trans_2)

'Aktualisierung der Strings für das Austauschen der Texturen:
	(L.L.rlbnd_ziel) trunc s0
	"..\..\Anzeigen\Rollband_O307_Std\" 1 (M.V.GetDepotStringGlobal) $+ "\" $+ (S.$.Rollband_Tex_H)
	l0 4 (M.V.GetTerminusString) $+ (S.$.Rollband_Tex_V)
	(L.$.Rollband_Tex_H) l0 1 + 4 (M.V.GetTerminusString) $+ (S.$.Rollband_Tex_H)
{end}
