--/ ui_remkit.script /--
--/ Repair kit module /--
--/ OGS Evolution Team 2009 /--
--/ version 0.4 /--

--/ Модуль походного ремонтного комплекта, скрипт основного меню /--



class "remkit" (CUIScriptWnd)


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


function remkit:__finalize() end


function remkit:InitControls()
	-- здесь определяем координаты левого верхнего угла и ширину-высоту
	self:Init(50,50,550,450)

	-- файл-описатель наших элементов
	local xml = CScriptXmlInit()
	xml:ParseFile("ui_remkit_wnd.xml")

	-- видео на заднем плане
	xml:InitStatic("back_video", self)

	-- рамка
	xml:InitStatic("background", self)

	-- кнопки
	self:Register(xml:Init3tButton("window_name", self),"window_name")
	self:Register(xml:Init3tButton("caption", self),"caption")
	self.btn_1 = xml:Init3tButton("btn_1", self)
	self:Register(self.btn_1, "btn_1")
	self.btn_1:Enable(false)	
	self.btn_2 = xml:Init3tButton("btn_2", self)
	self:Register(self.btn_2, "btn_2")
	self.btn_2:Enable(false)	
	self.btn_3 = xml:Init3tButton("btn_3", self)
	self:Register(self.btn_3, "btn_3")
	self.btn_3:Enable(false)	
	
	-- кнопка выхода
	self:Register(xml:Init3tButton("btn_quit", self),"btn_quit")
	
	-- определяем доступность кнопок
	if db.actor:item_in_slot(1) ~= nil then
		self.btn_1:Enable(true)
	end
	if db.actor:item_in_slot(2) ~= nil then
		self.btn_2:Enable(true)
	end
	if db.actor:item_in_slot(6) ~= nil then
		self.btn_3:Enable(true)
	end

	self.message_box = CUIMessageBoxEx()
	self:Register(self.message_box,"message_box")

end


function remkit:InitCallBacks()
	-- тут интерактивные элементы, при определенном действии выполняется заданная ф-ия
	self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.rep_s1, self)
	self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.rep_s2, self)
	self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.rep_s6, self)
	
	self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self)

	self:AddCallback("message_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgYes, self)
end


-- сразу созадим ф-ию для выхода
function remkit:on_quit()
	local console = get_console()
	self:GetHolder():start_stop_menu (self.owner, true)
	self:GetHolder():start_stop_menu (self,true)
	self.owner:Show	(true)
-- если мы вызывались из игры, то убираем главное меню
	if level.present() and (db.actor ~= nil) and db.actor:alive() then
		console:execute("main_menu off")
	end
	end
	

function remkit: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
			self:on_quit()
		end
		if dik == DIK_keys.DIK_NUMPAD1 then
			self:rep_s1()
		end
		if dik == DIK_keys.DIK_NUMPAD2 then
			self:rep_s2()
		end
		if dik == DIK_keys.DIK_NUMPAD3 then
			self:rep_s6()
		end
		
	end
	return true
end


function remkit:cheat_main()
if db.actor:item_in_slot(db.repaired_slot) ~= nil then
if string.find(string.sub((db.actor:item_in_slot(db.repaired_slot)):section(), 1, 3), "af_") then
--	amk.send_tip("Предмет не поддаётся ремонту.")
	self.msgbox_id = 1
	self.message_box:Init("message_box_item_not_repaireble")
	self:GetHolder():start_stop_menu(self.message_box, true)
else
	local rep_item_cond = (db.actor:item_in_slot(db.repaired_slot)):condition()
	if rep_item_cond >= 0.95 then
--		amk.send_tip("Предмет не нуждается в ремонте.")
		self.msgbox_id = 1
		self.message_box:Init("message_box_item_not_wanted")
		self:GetHolder():start_stop_menu(self.message_box, true)
		return
	elseif rep_item_cond <= 0.3 then
--		amk.send_tip("Это уже не починить.")
		self.msgbox_id = 1
		self.message_box:Init("message_box_item_not_repaireble")
		self:GetHolder():start_stop_menu(self.message_box, true)
		return
	elseif self.remkit_sel == nil then
		self.remkit_sel = ui_remkit_select.repair_dialog()
		self.remkit_sel.owner = self
	end
	
	self:GetHolder():start_stop_menu(self.remkit_sel, true)
	self:GetHolder():start_stop_menu(self, true) --new
	self:Show(false)
end
else
	amk.send_tip("Нельзя произвести ремонт - в слоте нет предмета.")
end
end


function remkit:rep_s1()
	db.repaired_slot = 1
	self:cheat_main()
end

function remkit:rep_s2()
	db.repaired_slot = 2
	self:cheat_main()
end

function remkit:rep_s6()
	db.repaired_slot = 6
	self:cheat_main()
end

function remkit:check_game()
	-- возвращает true если запущена игра
	local check = false
	if level.present() and (db.actor ~= nil) and db.actor:alive() then
		check = true
	end
	return check
end

function remkit:on_quit()
	self:GetHolder():start_stop_menu (self,true)
	remkit_main.create_repair_kit() 
end


function remkit:OnMsgYes()

	if self.msgbox_id == 1 then return
	end
	
	self.msgbox_id = 0
end
