--Vergas часы-таймер
class "cheat" (CUIScriptWnd)

local hh = 0      		-- кол-во часов до выброса при установке
local mm = 0      		-- кол-во минут до выброса при установке
local wnd_3 = nil
local wnd_1 = nil
local wnd_2 = nil		-- окно информации
local wnd_s
local wnd_m
local wnd_i
local flag_set_timer  	-- флаг установленного таймера
local flag_set_sek		-- флаг установленного секундомера
local timer_mode		-- флаг установленного режима (1 - таймер, 2 - секундомер)
local sound_mode		-- флаг установки звука (true - включен, false - выключен)
local medik_mode		-- флаг установки мед. резинки (true - включен, false - выключен)
local info_mode			-- режим отображения информационной строки

function cheat:__init(owner) super()
	self.owner = owner
	self:InitControls()
	self:InitCallBacks()
end

function cheat:InitControls()
	
	-- Положение и размеры окна
	self:Init(511,118,1024,768)
	
	-- файл-описатель элементов
	local xml = CScriptXmlInit()
	xml:ParseFile("ui_cheat_timer.xml")
	
	xml:InitStatic("background", self)   --Собственно часики
	xml:InitStatic("background_2", self) --Фон для надписи  
	xml:InitStatic("static_1", self)  --надпись ИНСТРУЦИЯ ИСПОЛЬЗОВАНИЯ
	
	self:Register(xml:Init3tButton("btn_sbros", self),"btn_sbros")		-- Кнопка СБРОС
	self:Register(xml:Init3tButton("btn_ok", self),"btn_ok")	    		-- Кнопка ОК
	self:Register(xml:Init3tButton("btn_quit", self),"btn_quit")		-- Кнопка СТОП
	self:Register(xml:Init3tButton("btn_hh", self),"btn_hh")	    		-- Кнопка ЧЧ
	self:Register(xml:Init3tButton("btn_mm", self),"btn_mm")	    		-- Кнопка MM
	self:Register(xml:Init3tButton("btn_change", self),"btn_change")		-- Кнопка РЕЖИМ
	self:Register(xml:Init3tButton("btn_medic", self),"btn_medic")		-- Кнопка МЕДИЦИНСКАЯ РЕЗИНКА
	self:Register(xml:Init3tButton("btn_sound", self),"btn_sound")		-- Кнопка ЗВУК	
	self:Register(xml:Init3tButton("btn_info", self),"btn_info")		-- Кнопка ИНФО
	
	
	-- Вывожу инструкцию
	-- первая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -75, 200,20)          
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка СКМ:ТМР - смена режима (таймер-секундомер)")
	
	-- вторая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -65, 200,20)         
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка ОК - запуск выбранного режима")
	
	-- третья строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -55, 200,20)          
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка СБРОС - отключение запущенного режима")
	
	-- четвертая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -45, 200,20)         
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка ВЫХОД - убрать часы")

	-- пятая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -35, 200,20)   
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка ЧЧ - управление показанием часов")
	
	-- шестая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -25, 200,20)         
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Кнопка ММ - управление показанием минут")

	-- седьмая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -15, 200,20)         
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Индикатор зеленый - ввод выбранного режима")
	
	-- восьмая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, -5, 200,20)    
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("Индикатор красный - выбранный режим запущен")
	
	-- девятая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, 5, 200,20)    
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("ЗВ - включение/выключение звука")

	-- десятая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(35, 15, 200,20)    
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("МР - включение/выключение таймера медицинской резинки")
	
	-- одиннадцатая строка
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	wnd_i:SetWndRect(60, 35, 200,20)    
	wnd_i:SetFont(GetFontLetterica16Russian())
	wnd_i:SetTextColor(255, 255, 255, 255)
	wnd_i:SetText("ИНФО - полезная информация")

	-- Вывожу время
	
	wnd_1 = CUIStatic()
	wnd_1:SetAutoDelete(true)
	self:AttachChild(wnd_1)
	wnd_1:SetWndRect(118, 240, 100, 15)       
	wnd_1:SetFont(GetFontLetterica18Russian())
	wnd_1:SetTextColor(100, 154, 205, 50)
	
	timer_v.imitation_time(true)
	
	wnd_2 = CUIStatic()
	wnd_2:SetAutoDelete(true)
	self:AttachChild(wnd_2)
	wnd_2:SetWndRect(85,260, 100, 15)
	wnd_2:SetFont(GetFontLetterica18Russian())
	wnd_2:SetTextColor(100, 154, 205, 50)
	wnd_2:SetText("РОССИЙСКИЙ  С.П.Е.Ц.Н.А.З.")
	--wnd_2:SetText("День пребывания в Зоне:"..str_d)
	
	--Вывожу показания таймера и секундомера
	wnd_3 = CUIStatic()
	wnd_3:SetAutoDelete(true)
	self:AttachChild(wnd_3)
	wnd_3:SetWndRect(116,150, 100, 15)
	wnd_3:SetFont(GetFontLetterica18Russian())
	
	-- определяю режим 
	if timer_mode == nil then  --режим неопределен.
		flag_set_timer = timer_v.timer_flag_in_cheat(1)
		flag_set_sek = timer_v.timer_flag_in_cheat(2)
		
		if flag_set_timer == 1 then
			timer_mode = 1
		elseif flag_set_sek == 1 then
			timer_mode = 2
		end
		if timer_mode == nil then  --режим неопределен.
			--на всякий случай обнуляю флаги таймера и секундомера
			flag_set_timer = 0
			flag_set_sek = 0
			hh = 0
			mm = 0
			timer_v.set_timer_flag(1,flag_set_timer,hh,mm)
			timer_v.set_timer_flag(2,flag_set_sek,hh,mm)
			timer_mode = 1		   -- Принудительно ставлю режим таймера
		end
	end
	
	-- Режим таймера
	if timer_mode ==1 then
		flag_set_timer = timer_v.timer_flag_in_cheat(1)
		if (flag_set_timer == 0) or (flag_set_timer == nil) then
			hh = 0
			mm = 0
		end
		local str_t = timer_v.timer_str(mm, hh)
		if flag_set_timer == 1 then
			wnd_3:SetTextColor(255, 178, 34, 34)		--вывод красным
			str_t = timer_v.h_m_from_mm()
		else
			wnd_3:SetTextColor(100, 154, 205, 50)	--вывод зеленым
		end
		wnd_3:SetText("До выброса "..str_t)
	end
	
	--Режим секундомера
	if timer_mode == 2 then
		flag_set_sek = timer_v.timer_flag_in_cheat(2)
		if (flag_set_sek == 0) or (flag_set_sek == nil) then
			hh = 0
			mm = 0
		end
		local str_t = timer_v.timer_str(mm, hh)
		if flag_set_sek == 1 then
			wnd_3:SetTextColor(255, 178, 34, 34)		--вывод красным
			str_t = timer_v.h_m_from_mm()
		else
			wnd_3:SetTextColor(100, 154, 205, 50)	--вывод зеленым
		end
		wnd_3:SetText("Секундомер "..str_t)
	end
	
	-- Вывожу состояние кнопок ЗВ и МР
	sound_mode = timer_v.set_sound()

	if sound_mode == nil then
		sound_mode = true
	end
	
	self:wnd_sound()

	medik_mode = timer_v.set_medik()
	if medik_mode == nil then
		medik_mode = false
	end
	
	self:wnd_medik()

end

function cheat:InitCallBacks()
	self:AddCallback("btn_sbros", ui_events.BUTTON_CLICKED, self.btn_sbros, self)   	-- Кнопка СБРОС
	self:AddCallback("btn_ok", ui_events.BUTTON_CLICKED, self.btn_ok, self)         	-- Кнопка ОК
	self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.btn_quit, self)     	-- Кнопка ВЫХОД
	self:AddCallback("btn_hh", ui_events.BUTTON_CLICKED, self.btn_hh, self)         	-- Кнопка ЧЧ
	self:AddCallback("btn_mm", ui_events.BUTTON_CLICKED, self.btn_mm, self)         	-- Кнопка ММ
	self:AddCallback("btn_change", ui_events.BUTTON_CLICKED, self.btn_change, self)     -- Кнопка РЕЖИМ
	self:AddCallback("btn_medic", ui_events.BUTTON_CLICKED, self.btn_medic, self)     	-- Кнопка МЕДИЦИНСКАЯ РЕЗИНКА
	self:AddCallback("btn_sound", ui_events.BUTTON_CLICKED, self.btn_sound, self)     	-- Кнопка ЗВУК
	self:AddCallback("btn_info", ui_events.BUTTON_CLICKED, self.btn_info, self)     	-- Кнопка ИНФО
end

function cheat:OnKeyboard(dik, keyboard_action)
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
		-- на выход повесим Esc
		if dik == DIK_keys.DIK_ESCAPE then
			timer_v.imitation_time(false)
			self:on_quit()
			
		end
	end
	return true
end

function cheat:show_time_in_timer()
--вывожу время на худе часов

	local h = lib.return_time(4)
	local m = lib.return_time(5)
	local s = lib.return_time(6)
	
	local str_t = timer_v.timer_str(m, h)
	
	if s < 10 then
		str_t = "Время  "..str_t..string.format(":0%d", s)
	else
		str_t = "Время  "..str_t..string.format(":%d", s)
	end
	wnd_1:SetText(str_t)
end

function cheat:on_quit()
	lib.spawn_item_in_inv("timer")
	db.actor:restore_weapon()		--восстанавливаю руки и оружие на худе
	self:GetHolder():start_stop_menu (self,true)
	timer_v.lost = false
end

function cheat:btn_sbros()					-- Кнопка СБРОС
	hh = 0
	mm = 0
	local str_t = timer_v.timer_str(mm, hh)
	wnd_3:SetTextColor(100, 154, 205, 50)
	if timer_mode == 1 then
		wnd_3:SetText("До выброса "..str_t)
		flag_set_timer = 0   -- таймер сброшен на часах
		timer_v.set_timer_flag(1,flag_set_timer,hh,mm) --таймер сброшен на худе
	else
		wnd_3:SetText("Секундомер "..str_t)
		flag_set_sek = 0   -- секундомер сброшен на часах
		timer_v.set_timer_flag(2,flag_set_sek,hh,mm) --секундомер сброшен на худе
	end
end

function cheat:btn_ok()					    -- Кнопка ОК
	
	--проверяю, а не установлен ли ужо кой-нить режим?
	if (flag_set_timer == 1) or (flag_set_sek == 1) then
		return  --кнопочку жать нельзя, пока не сбросил установленный режим
	end
	
	--включаю таймер на часах
	if timer_mode == 1 then
		if (hh ~= 0) or (mm ~= 0) then
			flag_set_timer = 1  --таймер установлен на часах
			--вывожу надпись красным
			str_t = timer_v.timer_str(mm, hh)
			wnd_3:SetTextColor(255, 178, 34, 34)
			wnd_3:SetText("До выброса "..str_t)
			timer_v.set_timer_flag(1,flag_set_timer,hh,mm) --передаю флаг и данные для установки таймера на худе
		end
	end
	
	--включаю секундомер на часах
	if timer_mode == 2 then
		flag_set_sek = 1  --секундомер установлен на часах
		--вывожу надпись красным
		str_t = timer_v.timer_str(mm, hh)
		wnd_3:SetTextColor(255, 178, 34, 34)
		wnd_3:SetText("Секундомер "..str_t)
		timer_v.set_timer_flag(2,flag_set_sek,hh,mm) --передаю флаг и данные для установки секундомера на худе
	end
end

function cheat:btn_quit()					-- Кнопка ВЫХОД
	self:DetachChild(wnd_s)
	wnd_s = nil		

	self:DetachChild(wnd_m)
	wnd_m = nil	

	timer_v.imitation_time(false)
	
	self:on_quit()
end

function cheat:btn_hh()					    -- Кнопка ЧЧ
	-- проверяю, а можно ли жать?
	if timer_mode == 1 then
		if flag_set_timer == 0 then
			-- расчитываю
			hh = hh + 1
			if hh == 24 then
				mm = 0
			elseif hh == 25 then
				hh = 0
			end
			-- вывожу
			local str_t = timer_v.timer_str(mm, hh)
			wnd_3:SetText("До выброса "..str_t)
		end
	end
end

function cheat:btn_mm()					    -- Кнопка ММ
	-- проверяю, а можно ли жать?
	if timer_mode == 1 then
		if flag_set_timer == 0 then
			-- расчитываю
			if mm < 59 then
				mm = mm + 1
			else
				mm = 0
				if hh < 24 then
					hh = hh+1
				end
			end
			if hh == 24 then
				mm = 0
			end
			-- вывожу
			local str_t = timer_v.timer_str(mm, hh)
			wnd_3:SetText("До выброса "..str_t)
		end
	end
end

function cheat:btn_change()					    -- Кнопка РЕЖИМ 
	--проверяю, а можно ли жать?
	if (flag_set_timer == 1) or (flag_set_sek == 1) then
		return      -- жать нельзя: один из режимов активен и не сброшен
	end
	
	--меняю режим
	if timer_mode ==1 then
		timer_mode = 2
	else
		timer_mode = 1
	end
	
	-- Изменяю худ часов
	mm = 0
	hh = 0
	local str_t = timer_v.timer_str(mm, hh)
	if timer_mode == 1 then
		wnd_3:SetText("До выброса "..str_t)
	else
		wnd_3:SetText("Секундомер "..str_t)
	end
end

function cheat:btn_sound()						--Кнопка ЗВУК
	self:set_sound()
end

function cheat:btn_medic()						--Кнопка МЕДИЦИНСКАЯ РЕЗИНКА
	self:set_medik()
end

function cheat:btn_info()						--Кнопка ИНФО
	if info_mode == nil then
		info_mode = 1							
	else
		info_mode = info_mode + 1
	end
	
	if info_mode > 4 then
		info_mode = 1
	end

	self:set_info(info_mode)
end


function cheat:set_sound(r)
	if sound_mode then
		sound_mode = false
	elseif not sound_mode then
		sound_mode = true
	end
	if sound_mode == nil then
		sound_mode = true
	end
	self:wnd_sound()
end

function cheat:wnd_sound()	
	if sound_mode then
		wnd_s = CUIStatic()
		wnd_s:SetAutoDelete(true)
		self:AttachChild(wnd_s)
		wnd_s:SetWndRect(123, 218, 15,13)    
		wnd_s:InitTexture("ui_timer_ind_sound")
	else
		self:DetachChild(wnd_s)
		wnd_s = nil		
	end
	self:return_sound()
end

function cheat:set_medik()
	if medik_mode then
		medik_mode = false
	elseif not medik_mode then
		medik_mode = true
	end
	if medik_mode == nil then
		medik_mode = false
	end
	self:wnd_medik()
end	
	
function cheat:wnd_medik()	
	if medik_mode then
		wnd_m = CUIStatic()
		wnd_m:SetAutoDelete(true)
		self:AttachChild(wnd_m)
		wnd_m:SetWndRect(104, 218, 15,13)    
		wnd_m:InitTexture("ui_timer_ind_medic")
	else
		self:DetachChild(wnd_m)
		wnd_m = nil		
	end
	self:return_medik()
end

function cheat:return_sound()
	timer_v.set_sound_t(sound_mode)
end

function cheat:return_medik()
	timer_v.set_medik_t(medik_mode)
end

function cheat:set_info(mode)
	
	if mode == 1 then
		--Вывожу инфу по количеству дней в зоне
		self:wnd_info(1)
		local str_d
		local time_d = level.get_time_days()
		if (time_d >= 10)  and (time_d < 10 ) then
			str_d = string.format(" %d", time_d)
		elseif time_d >= 100 then
			str_d = string.format("%d", time_d)
		elseif time_d < 10 then
			str_d = string.format("  %d", time_d)
		end
		wnd_2:SetTextColor(100, 154, 205, 50)
		wnd_2:SetText("День пребывания в Зоне:"..str_d)
	elseif mode == 2 then
		-- вывожу данные о зарядке батарей ПНВ
		self:wnd_info(2)
		wnd_2:SetTextColor(100, 154, 205, 50)
		wnd_2:SetText("БАТАРЕЯ ПНВ : нет данных")
	elseif mode == 3 then
		self:wnd_info(3)
		wnd_2:SetTextColor(150, 154, 205, 50)
		wnd_2:SetText("CHAPELNIK - THE BEST MOD")
	elseif mode == 4 then
		self:wnd_info(4)
		wnd_2:SetTextColor(100, 154, 205, 50)
		wnd_2:SetText("РОССИЙСКИЙ  С.П.Е.Ц.Н.А.З.")
	end
end

function cheat:wnd_info(wnd_mode)
	if wnd_i ~= nil then
		self:DetachChild(wnd_i)
		wnd_i = nil
	end
	wnd_i = CUIStatic()
	wnd_i:SetAutoDelete(true)
	self:AttachChild(wnd_i)
	--wnd_i:SetWndRect(142, 218, 15,13)    
	
	if wnd_mode == 1 then
		wnd_i:SetWndRect(142, 218, 13,13)
		wnd_i:InitTexture("ui_timer_ind_days")
	elseif wnd_mode == 2 then
		wnd_i:SetWndRect(142, 218, 20,17)
		wnd_i:InitTexture("ui_timer_ind_pnv")
	elseif wnd_mode == 3 then
	elseif wnd_mode == 4 then
	end
end

