'##############
'LightScript
'Скрипт светотехники
'##############

'Simulates lighting system

'(c) 11.05.2009 Rьdiger Hьlsmann
'(c) 02.01.2011 Marcel Kuhnt

'Script Version: 1.1
'Omsi release: 1.0

'Needs:
'- Cockpit (Batterietrennschalter)
'- Door (Haltestellenbremse fьr Bremslicht)

'Revision History:
'- Rьdiger Hьlsmann	11.05.2009	Bremslichter an Bremsdruck gekoppelt Стопари связаны с давлением в тормозной системе
'- Marcel Kuhnt		10.06.2009	Schlьsselschalter-Logik fьr Stand- und Abbl.-licht verдndert, Fernlicht hinzugefьgt
'-								Логика ключа для включения ближнего и дальнего света
'- Marcel Kuhnt		10.08.2009	Added Revision History
'- Marcel Kuhnt & RЬH	22.10.2009	Removed Light Switch Sound (added to cockpit) Звук переключателя света перемещен в кокпит
'- Rьdiger Hьlsmann	28.10.2009	Added changeover variable for lower level and front right interior light (fixed light overlay problem)
'- Rьdiger Hьlsmann	18.07.2010	Light switch adapted to new ignition key algorithm Переключатель света приспособлен к ключу зажигания
'- Marcel Kuhnt		21.09.2010	Changed interpretation of AI_Light, light flasher
'- RЬdiger Hьlsmann	15.11.2010	AI-warning lights
'- Rьdiger Hьlsmann	21.11.2010	Interiour and warning lights independent from busbar_main, blinker fix (situation reload)
'- Rьdiger Hьlsmann	27.11.2010	Warning lights bug removed
'- Rьdiger Hьlsmann	08.12.2010	Light bug "untenohnevornerechts" removed
'- Marcel Kuhnt		28.12.2010	Extracted AI lighting in separated macro (for using with AI script)
'- Marcel Kuhnt		02.01.2011	Corrected AI warn blinker deactivation
'- Rьdiger Hьlsmann	02.01.2011	Driver light fixed
'- Rьdiger Hьlsmann	05.01.2011	Fog lamp
'- Rьdiger Hьlsmann	07.01.2011	highbeam switch sound
'- Rьdiger Hьlsmann	18.01.2011	Blinker switch on sound added
'- Яковлев Вячеслав 14.11.2011	Добавлены и отлажены скрипт комбинированного переключателя света, включения аварийки
'- 								и салонного освещения

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

'Включение дальнего света клавишей F. Если до этого ближний свет не был включен, то переключатель переходит в 
'нефиксированное положение -1 (происходит мигание дальним светом)
{trigger:kw_fernlicht_toggle}
	(L.L.cp_gitara_rot_mode2) 8 < 
	{if}
		(L.L.cp_gitara_rot_mode2) 6 = 
		{if}
			8 (S.L.cp_gitara_rot_mode2)
			0 (S.L.cp_gitara_rot_mode1)
		{else}
			(L.L.cp_gitara_rot_mode2) 0 = 
			{if}
				1 (S.L.cp_gitara_rot_mode1) (S.L.cp_gitara_rot1)
			{endif}
		{endif}
	{else}
		(L.L.cp_gitara_rot_mode2) 8 =
		{if}
			6 (S.L.cp_gitara_rot_mode2)
			0 (S.L.cp_gitara_rot_mode1)
		{endif}
	{endif}
{end}

{trigger:kw_fernlicht_toggle_off}
'	Привязка к фиксированным положениям
	0 (S.L.cp_gitara_rot_mode1) (S.L.cp_gitara_rot1)
	(L.L.cp_gitara_rot_mode2) 8 / (S.L.cp_gitara_rot2)	
{end}

'Включение ближнего света клавишей L
{trigger:kw_scheinwerfer_toggle}
	(L.L.cp_gitara_rot_mode2) 6 < 
	{if}
		6 (S.L.cp_gitara_rot_mode2)
		0 (S.L.cp_gitara_rot_mode1)
	{else}
		(L.L.cp_gitara_rot_mode2) 6 =
		{if}
			3 (S.L.cp_gitara_rot_mode2)
			0 (S.L.cp_gitara_rot_mode1)
		{endif}
	{endif}
{end}

{trigger:kw_scheinwerfer_toggle_off}
'	Привязка к фиксированным положениям
	0 (S.L.cp_gitara_rot_mode1) (S.L.cp_gitara_rot1)
	(L.L.cp_gitara_rot_mode2) 8 / (S.L.cp_gitara_rot2)	
{end}


'Включение габаритных огней сочетанием клавиш Shift+L
{trigger:kw_standlicht_toggle}
	(L.L.cp_gitara_rot_mode2) 3 =
	{if}
		0 (S.L.cp_gitara_rot_mode2) (S.L.cp_gitara_rot_mode1)
	{else}
		3 (S.L.cp_gitara_rot_mode2)
		0 (S.L.cp_gitara_rot_mode1)
	{endif}
		
{end}

{trigger:kw_standlicht_toggle_off}
'	Привязка к фиксированным положениям
	0 (S.L.cp_gitara_rot_mode1) (S.L.cp_gitara_rot1)
	(L.L.cp_gitara_rot_mode2) 8 / (S.L.cp_gitara_rot2)	
{end}

{trigger:blinker_off}
	(L.L.lights_sw_blinker) 0 >
	{if}
			(T.L.ev_lights_blinker_swoff)
			0 (S.L.lights_sw_blinker)
			0 (S.L.cp_blinkers_rot1) (S.L.cp_blinkers_rot2)
	{endif}
{end}

{trigger:blinker_left_move}
	(L.L.lights_sw_blinker)
	0 =
	{if}
		1 (S.L.lights_sw_blinker) (S.L.cp_blinkers_rot2)
		0 (S.L.cp_blinkers_rot1)
		(T.L.ev_lights_blinker_swon)
		(M.L.lights_startblinkgeber)
	{else}
		(T.L.ev_lights_blinker_swoff)
		0 (S.L.lights_sw_blinker) 
	{endif}
{end}


{trigger:blinker_right_move}
	(L.L.lights_sw_blinker)
	0 =
	{if}
		2 (S.L.lights_sw_blinker)
		1 (S.L.cp_blinkers_rot1)
		0 (S.L.cp_blinkers_rot2)
		(T.L.ev_lights_blinker_swon)
		(M.L.lights_startblinkgeber)
	{else}
		(T.L.ev_lights_blinker_swoff)
		0 (S.L.lights_sw_blinker)  
	{endif}
{end}

{trigger:blinker_left_set}
	(L.L.lights_sw_blinker) 1 = !
	{if}
		(T.L.ev_lights_blinker_swon)
	{endif}
	1 (S.L.lights_sw_blinker) (S.L.cp_blinkers_rot2)
	0 (S.L.cp_blinkers_rot1)
	(M.L.lights_startblinkgeber)
{end}

{trigger:blinker_right_set}
	(L.L.lights_sw_blinker) 2 = !
	{if}
		(T.L.ev_lights_blinker_swon)
	{endif}
	2 (S.L.lights_sw_blinker)
	1 (S.L.cp_blinkers_rot1)
	0 (S.L.cp_blinkers_rot2)
	(M.L.lights_startblinkgeber)
{end}

{trigger:blinker_warn_toggle}
	(L.L.lights_sw_warnblinker) ! (S.L.lights_sw_warnblinker) 
	{if}
		(M.L.lights_startblinkgeber)
	{endif}

	1 (S.L.cp_taster_warnblinker)
		
{end}

{trigger:blinker_warn_toggle_off}
	(L.L.lights_sw_warnblinker) !
	{if}
		0 (S.L.cp_taster_warnblinker)
	{else}
		0.6 (S.L.cp_taster_warnblinker)
	{endif}
{end}

{macro:lights_frame}


	(M.L.lights_AI)

	(M.L.lights_runblinkgeber)
	
	(M.L.cockpit_blinker_selector)	

	
'	Включение сигнализации с помощью аварийного выключателя
	(L.L.cp_avar_rot) 0 >
	{if}
		(L.L.lights_sw_warnblinker) !
		{if}
			1 (S.L.lights_sw_warnblinker)
			(M.L.lights_startblinkgeber)
		{endif}
	{else}
		(L.L.lights_sw_warnblinker)
		(L.L.cp_taster_warnblinker) ! &&
		{if}
			0 (S.L.lights_sw_warnblinker)
		{endif}
	{endif}
	
		
'	Условие включения поворотников
	(L.L.lights_sw_blinker) 1 =
	(L.L.lights_sw_warnblinker) || 
	(L.L.lights_blinkgeber) &&
	(S.L.lights_blinker_l)

	(L.L.lights_sw_blinker) 2 =
	(L.L.lights_sw_warnblinker) ||
	(L.L.lights_blinkgeber) &&	
	(S.L.lights_blinker_r)

'MCQ: AI-Blinkererkennung:
'	Поворотники для ИИ-транспорта
	(L.L.AI) !
	{if}
		(L.L.lights_sw_blinker) 1 =
		(L.L.lights_sw_warnblinker) ||
		(L.L.lights_blinkgeber) &&		
		(S.L.AI_Blinker_L)

		(L.L.lights_sw_blinker) 2 = 
		(L.L.lights_sw_warnblinker) ||
		(L.L.lights_blinkgeber) &&
		(S.L.AI_Blinker_R)
	

'		Наружнее освещение для ИИ-транспорта
'		(L.L.lights_fern)
'		{if}
'			2
'		{else}
'			(L.L.lights_abbl)
'			{if}
'				1
'			{else}
'				(L.L.lights_stand) (L.L.lights_rueck) &&
'				{if}
'					0.5
'				{else}
'					0
'				{endif}
'			{endif}
'		{endif}
'		(S.L.AI_Light)

'		Салонное освещение для ИИ-транспорта
		(L.L.lights_beleuchtung_oberdeck) (L.L.lights_beleuchtung_unterdeck) &&
		(L.L.lights_salon_50) (L.L.lights_salon_100) && || (S.L.AI_Interiorlight)

	{endif}

'Automatische Blinkerabschaltung: 
'	Автоматическое отключение поворотников при возврате руля

	(L.L.Axle_Steering_0_L) (C.L.lights_blinkautom_minLenk) > (L.L.lights_sw_blinker) 2 = &&
	{if}
		1 (S.L.lights_blinkautom_r_armed)
	{else}
		(L.L.lights_blinkautom_r_armed)
		{if}
			(T.L.ev_lights_blinker_swoff)
			0
				(S.L.lights_sw_blinker) (S.L.lights_blinkgeber) (S.L.cp_blinkers_rot1) (S.L.cp_blinkers_rot2)
				(S.L.lights_blinkautom_r_armed)
		{endif}
	{endif}

	(L.L.Axle_Steering_0_L) /-/ (C.L.lights_blinkautom_minLenk) > (L.L.lights_sw_blinker) 1 = &&
	{if}
		1 (S.L.lights_blinkautom_l_armed)
	{else}
		(L.L.lights_blinkautom_l_armed)
		{if}
			(T.L.ev_lights_blinker_swoff)
			0
				(S.L.lights_sw_blinker) (S.L.lights_blinkgeber) (S.L.cp_blinkers_rot1) (S.L.cp_blinkers_rot2)
				(S.L.lights_blinkautom_l_armed)
		{endif}
	{endif}


'	Стояночные огни (не зависят от кнопки включения массы)
	(L.L.cp_stoyanochnye_ogni) (S.L.lights_stand)

'	Внешняя светотехника

	(L.L.elec_busbar_main)
	{if}

'Включение огней в зависимости от положения комбинированного переключателя света

		(L.L.cp_gitara_rot_mode2) 0 =
		{if}
		
'			Если переключатель в положении -1, то включается кратковременно дальний свет
			(L.L.cp_gitara_rot_mode1) 1 =
			{if}
				1 (S.L.lights_fern)
				0 (S.L.lights_abbl)
				(L.L.lights_nebelschluss)
				{if}
					4 (S.L.Spot_Select)
				{else}
					0 (S.L.Spot_Select)
				{endif}
			{else}	
'			Иначе хрен вам че включится
				-1 (S.L.Spot_Select)
				0 (S.L.lights_rueck) (S.L.lights_abbl) (S.L.lights_fern)
			{endif}
		{else}
		
'			Если переключатель в положении 1, то включаются габариты
			(L.L.cp_gitara_rot_mode2) 3 =
			{if}
				1 (S.L.lights_rueck)
				0 (S.L.lights_abbl) (S.L.lights_fern)
				(L.L.lights_nebelschluss)
				{if}
					2 (S.L.Spot_Select)
				{else}
					-1 (S.L.Spot_Select)
				{endif}
			{else}
'				Если переключатель в положении 2, то включаются габариты и ближний свет
				(L.L.cp_gitara_rot_mode2) 6 =
				{if}
					1 (S.L.lights_rueck) (S.L.lights_abbl)
					0 (S.L.lights_fern)
					(L.L.lights_nebelschluss)
					{if}
						3 (S.L.Spot_Select)
					{else}
						1 (S.L.Spot_Select)
					{endif}
				{else}
'					Если переключатель в положении 3, то включаются габариты и дальний свет
					(L.L.cp_gitara_rot_mode2) 8 =
					{if}
						1 (S.L.lights_rueck) (S.L.lights_fern) (S.L.lights_abbl)
						(L.L.lights_nebelschluss)
						{if}
							4 (S.L.Spot_Select)
						{else}
							0 (S.L.Spot_Select)
						{endif}
					{endif}
				{endif}
			{endif}
		{endif}
		
'		Включение огней НЕ через комбинированный переключатель света
'		Передние противотуманные фары
		(L.L.cp_PT) 
		{if}
			1 (S.L.lights_nebelschluss)
			(L.L.Spot_Select) -1 =
			{if}
				2 (S.L.Spot_Select)
			{endif}
		{else}
			0 (S.L.lights_nebelschluss)
			(L.L.Spot_Select) 2 =
			{if}
				-1 (S.L.Spot_Select)
			{endif}
		{endif}

'		Задний противотуманный фонарь		
		(L.L.lights_nebelschluss)
		(L.L.cp_PT_rear) &&
		{if}
			1 (S.L.lights_nebelschluss_rear)
		{else}
			0 (S.L.lights_nebelschluss_rear)
		{endif}
		
'		Сигнализация торможения
		(L.L.brake) 0.1 > 
		(L.L.bremse_feststell) ||
		(L.L.antrieb_retarder) ||
		(S.L.lights_brems)
		
'		Сигнализация включения заднего хода
		(L.L.antrieb_getr_gangvorwahl) 0 =
		(L.L.antrieb_rear_blocking) ! &&
		(S.L.lights_rueckfahr)
	{else}
		-1 (S.L.Spot_Select)
		0 (S.L.lights_rueck) (S.L.lights_abbl) (S.L.lights_fern) (S.L.lights_nebelschluss)
	{endif}


'	Освещение салона
	(L.L.elec_busbar_avail)
	{if}
'		Beleuchtung Oberdeck Подсветка верхнего этажа
		(L.L.cp_licht_oberdeck_sw) (S.L.lights_beleuchtung_oberdeck)

'		Beleuchtung Unterdeck Подсветка нижнего этажа
		(L.L.cp_licht_unterdeck_sw) (S.L.lights_beleuchtung_unterdeck)

'		Beleuchtung unten rechts Освещение в правом переднем углу нижнего этажа
'		(L.L.cp_licht_untenrechts_sw) (S.L.lights_beleuchtung_untenrechts)

'		Wechselschaltung Beleuchtung Unterdeck OHNE unten rechts: Освещение без правого переднего угла нижнего этажа
'		(L.L.lights_beleuchtung_untenrechts) ! (L.L.lights_beleuchtung_unterdeck) && (S.L.lights_beleuchtung_unterdeck_ohnevornerechts) 

'		Fahrerlicht Освещение кабины водителя
		(L.L.cp_fahrerlicht_sw)
		(L.L.elec_busbar_main) &&
		{if}	
			1 (S.L.lights_fahrerlicht)
		{else}
			0 (S.L.lights_fahrerlicht)
		{endif}

'		Полное (100%) и неполное (50%) освещение салона	
		(L.L.elec_busbar_main) 
		(L.L.cp_licht_oberdeck_sw) (L.L.cp_licht_unterdeck_sw) && &&
		{if}
			1 (S.L.lights_salon_100) (S.L.lights_salon_50)
		{else}
			(L.L.cp_licht_oberdeck_sw) (L.L.cp_licht_unterdeck_sw) ||
			(L.L.elec_busbar_main) &&
			{if}
				1 (S.L.lights_salon_50)
				0 (S.L.lights_salon_100)
			{else}
				0 (S.L.lights_salon_50) (S.L.lights_salon_100)
			{endif}
		{endif}
	{else}
		0 (S.L.lights_fahrerlicht) (S.L.lights_beleuchtung_oberdeck)
		(S.L.lights_beleuchtung_unterdeck) (S.L.lights_beleuchtung_untenrechts) (S.L.lights_beleuchtung_unterdeck_ohnevornerechts)
		(S.L.lights_salon_50) (S.L.lights_salon_100)
	{endif}



{end}

'Включение поворотников с помощью рычажка поворотников
{macro:cockpit_blinker_selector}
	(L.L.cp_blinkers_rot1)
	(L.L.cp_blinkers_rot2) ! &&
	{if}
		(L.L.lights_sw_blinker) 2 = !
		{if}
			(T.L.ev_lights_blinker_swon)
		{endif}
		2 (S.L.lights_sw_blinker)
		(M.L.lights_startblinkgeber)
	{endif}
	
	(L.L.cp_blinkers_rot1) !
	(L.L.cp_blinkers_rot2) &&
	{if}
		(L.L.lights_sw_blinker) 1 = !
		{if}
			(T.L.ev_lights_blinker_swon)
		{endif}
		1 (S.L.lights_sw_blinker)
		(M.L.lights_startblinkgeber)
	{endif}
	
	(L.L.cp_blinkers_rot1) !
	(L.L.cp_blinkers_rot2) ! &&
	{if}
		(L.L.lights_sw_blinker) 0 >
		{if}
			(T.L.ev_lights_blinker_swoff)
			0 (S.L.lights_sw_blinker)
		{endif}
	{endif}
{end}

{macro:lights_AI}
'AI-Einfluss auf Beleuchtung:
	(L.L.AI)
	{if}
		(L.L.AI_Blinker_L) (L.L.AI_Engine) 0.5 > &&
		{if}
			1 (S.L.lights_sw_blinker) (S.L.cp_blinkers_rot2)
			0 (S.L.cp_blinkers_rot1)
			(M.L.lights_startblinkgeber)
			
		{else} 
			(L.L.AI_Blinker_R) (L.L.AI_Engine) 0.5 > && 
			{if}
				2 (S.L.lights_sw_blinker)
				(M.L.lights_startblinkgeber)
				1 (S.L.cp_blinkers_rot1)
				0 (S.L.cp_blinkers_rot2)
			{else}
				0 (S.L.lights_sw_blinker) (S.L.cp_blinkers_rot1) (S.L.cp_blinkers_rot2)
			{endif}

		{endif}
		


'	{endif}

		(L.L.AI_Light) 
		{if}
			(L.L.AI_Engine) 0.5 >
			{if}
				(L.L.AI_Light) 1.5 >
				{if}
					8 (S.L.cp_gitara_rot_mode2)
					1 (S.L.cp_gitara_rot2)
					1 (S.L.cp_stoyanochnye_ogni)
				{else}
					(L.L.AI_Light) 0.75 >
					{if}
						6 (S.L.cp_gitara_rot_mode2)
						0.75 (S.L.cp_gitara_rot2)
						1 (S.L.cp_stoyanochnye_ogni)
					{else}
						3 (S.L.cp_gitara_rot_mode2)
						0.375 (S.L.cp_gitara_rot2)
						1 (S.L.cp_stoyanochnye_ogni)
					{endif}
				{endif}
			{else}
				0 (S.L.cp_gitara_rot_mode2) (S.L.cp_gitara_rot2) (S.L.cp_stoyanochnye_ogni)
			{endif}
		{else}
			0 (S.L.cp_gitara_rot_mode2) (S.L.cp_gitara_rot2) (S.L.cp_stoyanochnye_ogni)
		{endif}

		(L.L.AI_Interiorlight) (S.L.cp_licht_unterdeck_sw) (S.L.cp_licht_oberdeck_sw) 
		(S.L.cp_podsvetka_trans) (S.L.light_podsvetka) (S.L.cp_marshrutniki_podsvetka)
	{endif}
{end}



{macro:lights_init}
	-1 (S.L.Spot_Select)
{end}

{macro:lights_startblinkgeber}

	(L.L.elec_busbar_main) (L.L.elec_busbar_avail) (L.L.lights_sw_warnblinker) && || 
	(L.L.lights_blinker_running) ! &&
	{if}
		(T.L.ev_lights_blinker_on)
		(C.L.lights_blinkertime_firston) (S.L.lights_blinkgeber_timegap) 
		1 (S.L.lights_blinkgeber) (S.L.lights_blinker_running)
		0 (S.L.lights_blinker_runtime)
	{endif}
{end}

{macro:lights_runblinkgeber}
	(L.L.elec_busbar_main) (L.L.lights_sw_blinker) &&
	(L.L.elec_busbar_avail) (L.L.lights_sw_warnblinker) && ||
	{if}

		(L.S.Timegap) (L.L.lights_blinker_runtime) + (S.L.lights_blinker_runtime)

		(L.L.lights_blinker_runtime) (L.L.lights_blinkgeber_timegap) > (L.L.lights_sw_blinker) (L.L.lights_sw_warnblinker) || && 
		{if}
			(L.L.lights_blinkgeber) ! (S.L.lights_blinkgeber)
			{if}
				(T.L.ev_lights_blinker_on)
				(C.L.lights_blinkertime_on)
			{else}
				(T.L.ev_lights_blinker_off)
				(C.L.lights_blinkertime_off)
			{endif}
			(S.L.lights_blinkgeber_timegap)
			0 (S.L.lights_blinker_runtime)
		{endif}

		(L.L.lights_sw_warnblinker)
		{if}
			(L.L.lights_blinkgeber) (S.L.lights_warnblinkgeber)
		{else}
			0 (S.L.lights_warnblinkgeber)
		{endif}
	{else}
		0 (S.L.lights_blinkgeber) (S.L.lights_warnblinkgeber) (S.L.lights_blinker_runtime) (S.L.lights_blinker_running)
	{endif}


	
{end}