--[[
File: lwc_accum.script
Copyright: © Vergas(основной создатель схемы), Real Wolf(оптимизация схемы)
]]

local flag_med = false		--флаг запуска лечения.
local delta_time		--осталось времени до полного излечения
local delta_health		--порция здоровья в еденицу времени
local delta_power		--порция потери энергии в еденицу времени
local delta_radiation		--порция снятия радиации в еденицу времени
local delta_wounds		--порция заживления раны в еденицу времени
local delta_alcohol		--порция вывода алкоголя в единицу времени
local time_sec_old	  	--секунды, при предыдущем обращении к функции show_time_med()

function used_item(obj)
	if lwc_ui_slot_upgrade.read_if_exist(system_ini(),obj:section(),"mr_time",nil) then
		if not flag_med then
			used_med(obj:section())
			if obj:section() == "medkit" or obj:section() == "medkit_army" or obj:section() == "medkit_scientic" then
				lwc.PlaySound([[inv_sounds\inv_heavy_med]])
			elseif obj:section() == "army_fast" or obj:section() == "army_food"  then
				lwc.PlaySound([[inv_sounds\inv_irp]])
			elseif obj:section() == "pervitin" then
				lwc.PlaySound([[inv_sounds\inv_drugs]])
 			elseif obj:section() == "antirad" or obj:section() == "amfetamin" or obj:section() == "antiseptic" then
				lwc.PlaySound([[inv_sounds\inv_pills]])
			elseif obj:section() == "energy_drink" then
				lwc.PlaySound([[inv_sounds\inv_softdrink]])
			end
		else
			news_manager.send_tip(db.actor, "Действие предыдущего препарата ещё не закончилось.", nil, nil, 5000)
			amk.spawn_item_in_inv(obj:section())
		end
	end
end

function used_med(section)			
	-- время действия в минутах
	delta_time = set_pr_from_config(section,"mr_time")
	-- общая прибавка здоровья
	delta_health = set_pr_from_config(section,"mr_eat_health")/delta_time/60
	-- общая потеря энергии
	delta_power = set_pr_from_config(section,"mr_eat_power")/delta_time/60
	-- общее снижение радиации
	delta_radiation = set_pr_from_config(section,"mr_eat_radiation")/delta_time/60
		
	flag_med = true					-- лечение запущено
	time_sec_old = return_time(6)
	sec = 59
	delta_time = delta_time-1
end

function show_med()	
	if flag_med then
		-- А продолжать ли лечение?
		if not flag_med then		--лечение закончилось
			return
		end
		
		local time_sec = return_time(6)
		
		if time_sec_old ~= time_sec then
			
			sec = sec - 1
			time_sec_old = time_sec
			-- запускаю порцию лечения
			treatment()

			if sec < 0 then
				--уменьшаю количество минут
				delta_time = delta_time-1
				sec = 60 + sec
				-- Проверяю: а не пора ли закончить эту лабуду?
				if delta_time < 0 then
					flag_med = false
					return
				end
			end
		end
	end
end

function timer_str(m, s) --возвращает стринг времени в формате (ЧЧ:ММ)
	local ms_str
	
	if m < 10 then
		if s < 10 then
			ms_str = string.format("0%d:0%d", m, s)
		else
			ms_str = string.format("0%d:%d", m, s)
		end
	else
		if s < 10 then
			ms_str = string.format("%d:0%d", m, s)
		else
			ms_str = string.format("%d:%d", m, s)
		end
	end
	return ms_str
end


function treatment()
	-- здоровье
	db.actor.health = delta_health
	-- энергия
	db.actor.power = delta_power
	-- радиация
	db.actor.radiation = delta_radiation
	-- алкоголь 
	db.actor.alcohol = delta_alcohol
end 

--------------------------- Запись и загрузка переменных при сохранении и переходе с локи на локу----------------------------------------

function save(packet)
	if flag_med  then
		amk.save_variable("flag_med_var", flag_med)
		amk.save_variable("sec_var", sec)
		amk.save_variable("time_sec_old_var", time_sec_old)
		amk.save_variable("delta_time_var", delta_time)
		amk.save_variable("delta_health_var", delta_health)
		amk.save_variable("delta_power_var", delta_power)
		amk.save_variable("delta_radiation_var", delta_radiation)
		amk.save_variable("delta_alcohol_var", delta_alcohol)
	end
end

function load(reader)

	local flag_m = amk.load_variable("flag_med_var", nil)
	local sec_m = amk.load_variable("sec_var", nil)
	local t_old = amk.load_variable("time_sec_old_var", nil)
	local t_delta = amk.load_variable("delta_time_var", nil)
	local t_health = amk.load_variable("delta_health_var", nil)
	local t_power = amk.load_variable("delta_power_var", nil)
	local t_radiation = amk.load_variable("delta_radiation_var", nil)
	local t_delta_alcohol = amk.load_variable("delta_alcohol_var", nil)
	
	if flag_m ~= nil then
		flag_med = flag_m												   
		amk.del_variable("flag_med_var")
		sec = sec_m												   
		amk.del_variable("sec_var")
		time_sec_old = t_old												   
		amk.del_variable("time_sec_old_var")
		delta_time = t_delta												   
		amk.del_variable("delta_time_var")
		delta_health = t_health												   
		amk.del_variable("delta_health_var")
		delta_power = t_power												   
		amk.del_variable("delta_power_var")
		delta_radiation = t_radiation												   
		amk.del_variable("delta_radiation_var")
		delta_alcohol = t_delta_alcohol												   
		amk.del_variable("delta_alcohol_var")
	end
	
end


function return_time(param)
	local y,m,d,h,min,sec,ms = game.get_game_time():get()
	if param == 1 then
		return y					--Год
	elseif param == 2 then
		return m					--Месяц
	elseif param == 3 then
		return d					--День
	elseif param == 4 then
		return h					--Час
	elseif param == 5 then
		return min					--Минуты
	elseif param == 6 then
		return sec					--Секунды
	elseif param == 7 then
		return ms					--Милесекунды
	end
	return sec
end
function set_pr_from_config(section,pr)
	local ltx = system_ini()
	local pr_s
	if ltx:line_exist(section,pr) then
		pr_s = ltx:r_float(section,pr)
	else
		pr_s = 0
	end
	
	return pr_s
	
end
