--------------------------------------------------------------------------------
--  File     : Gate
--  Author(s): Prokopovich Larisa
--
--  Summary  : Скрипт управления локацией.
--
--  Copyright © 2012 Floodlight Games.  All rights reserved.
--------------------------------------------------------------------------------
LOC_STUB				= "Gate_Stub"
LOC_1FLOOR				= "Hut_1st_floor"
LOC_1FLOOR_CHEST		= "Hut_1st_floor_Chest"
LOC_1FLOOR_LANTERN_MG	= "Hut_1st_floor_Lantern_MG"
LOC_1FLOOR_SOLDIER		= "Hut_1st_floor_Soldier"
LOC_1FLOOR_STATUETTE	= "Hut_1st_floor_Statuette"
LOC_1FLOOR_STOOL		= "Hut_1st_floor_Stool_puzzle"
LOC_GLADE				= "Scary_glade"
LOC_GLADE_NOTE			= "Scary_glade_Note"

M_TO_GLADE				= "M_TO_SCARY_GLADE"	--выход в болото
M_HUT_ENTRANCE			= "M_HUT_ENTRANCE"		--вход в охотничий домик
M_STUB					= "M_STUB"				--вход в close-up с пнем
M_BARREL				= "M_BARREL"			--бочка с водой
M_STOOL					= "M_STOOL"				--место для стула
M_WOOD					= "M_WOOD"				--дрова

I_MAGIC_BUSHES			= "MAGIC_BUSHES"		--магические кусты
I_PLANT					= "PLANT"				--трава
I_PLANT_ROOT			= "PLANT_ROOT"			--корень травы
I_STOOL					= "STOOL"				--стул
I_WOOD					= "WOOD"				--дрова
I_SPADE					= "SPADE_Q"				--лопата
I_EMPTY_POT				= "EMPTY_POT"			--пустая кастрюля
I_WATER_POT				= "WATER_POT"			--кастрюля с водой
I_SUPER_LANTERN			= "SUPER_LANTERN"		--волшебный фонарь

V_SPADE					= "GATE_SPADE"			--видео выкапывания корня лопатой
V_POT					= "FILLING_POT"			--видео наполнения котелка
--------------------------------------------------------------------------------
function OnSerialize(system)
	visit_glade = system:Serialize(visit_glade)
end
--------------------------------------------------------------------------------
function OnFirstEntry()
	--inventory:CheatLoadAndAddItem("SUPER_LANTERN", "Hut_1st_floor_Lantern_mg", 0)
	
	visit_glade = 0
	
	music:Stop(true)
	music:PlayLoopWithDelay(10, "Mystic_Forest")
	room.sfx:Play ("jingle_10_boom")	--звук джингла при первом входе
	
	chapter:MarkRoomCompleted ("Trunk")
	
	--TODO убрать в финале
	if not(cstore:IsKeyExists("Cheat_Gate")) then	--!!! (условие для читов)
		comment:Add("DLG_FirstEntry_Player")
	end
	
	room:GetItem(I_EMPTY_POT):Disable ()
	
	stars:Show(M_TO_GLADE, "3")
	stars:Show(M_HUT_ENTRANCE, "3")
	stars:Show(M_STUB, "2")
	stars:Show(M_BARREL, "4")
	stars:Show(M_STOOL, "4")
	stars:Show(M_WOOD, "4")
	stars:Show(I_MAGIC_BUSHES, "4")
	stars:Show(I_PLANT, "4")
	stars:Show(I_EMPTY_POT, "4")
end
--------------------------------------------------------------------------------
function OnEntry()
	local lamp = cstore:GetKey("Close_up_Lantern")
	
	if (lamp ~= 2) and (lamp ~= 3) then
		music:PlayLoopWithDelay(5, "horror_4") 
	end
	
	ambient:Play("Gate")
end
--------------------------------------------------------------------------------
function OnMouseClickOnItem(item)
	local itemName = item:GetName()
	
	if itemName == M_TO_GLADE then									--переход в болото
		if visit_glade == 0 then
			visit_glade = 1
			chapter:ExitRoom()
			ambient:Play("dam")
			music:Stop(true)
			music:PlayLoopWithDelayEx(0, "m_cutscene_02", 1.0, false)
			
			IntroText = ui:GetDialog("IntroText")
			IntroText:PlaySound("snd_scary_cut_scene")
			IntroText:SetOptions("Main:SCARY_CUT_SCENE", 0.5, 0.5, LOC_GLADE);
			IntroText:Show()
		else
			chapter:JumpRoom(LOC_GLADE)
		end
		return true
	elseif itemName == M_HUT_ENTRANCE then							--переход в охотничий домик
		chapter:JumpRoom(LOC_1FLOOR)
		return true
		
	elseif itemName == M_STUB then
		chapter:JumpCloseup(LOC_STUB)								--переход в close-up с пнем
		return true
	end
		
	
	if itemName == I_MAGIC_BUSHES then					--кусты, закрывающие дорогу в болото
		comment:Add("CMT_Barrier_Player")
		return true
	
	elseif itemName == M_BARREL then					--бочка с водой
		comment:Add("CMT_Barrel_Player")
		return true
	
	elseif itemName == M_STOOL then						--место для стула
		comment:Add("CMT_Stool_Player")
		return true
	
	elseif itemName == I_PLANT then						--трава
		comment:Add("CMT_Plant_Player")
		return true
	
	elseif itemName == I_EMPTY_POT then					--пустая кастрюля на крыше
		if room:GetItem(I_STOOL):IsVisible() then
			room.sfx:Play ("take_grass")	--звук "берем солому"
			pick_panel:AddItems(itemName, false)
		else
			comment:Add("CMT_EmptyPot_Player")
			cstore:SetKey("Mask_Stool", true)
		end
		return true
	
	elseif itemName == M_WOOD then						--дрова
		item:Hide()
		pick_panel:AddItems(I_WOOD, false)
		return true
	end
end
--------------------------------------------------------------------------------
function OnClickItemOnItem(item)					
	local itemName = item:GetName()
	
	if itemName == M_STUB then
		chapter:JumpCloseup(LOC_STUB)									--переход в close-up с пнем
		return true
	end
	
	if cursor:IsItemNameEqual(I_SPADE) then				--лопата на траву
		if itemName == I_PLANT then
			inventory.alt:AddItemFromCursor()
			item:Hide()
			journal:CompleteTask("hand_potion_plant")

			local videoSpade = room:GetItem(V_SPADE)
			videoSpade:Show()
			videoSpade:PlayAnimation()
			room.sfx:Play ("spade")		--звук "выкопали траву лопатой"
			room:AddCtrlAnimation(V_SPADE, -1)
			return true
		end
	end
	
	if cursor:IsItemNameEqual(I_STOOL) then				--стул на место для стула
		if itemName == M_STOOL then
			item:Hide()
			cursor:RemoveItem()
			room:GetItem(I_STOOL):Show()
			room:GetItem(I_EMPTY_POT):Enable()
			room.sfx:Play ("put_stool")		--звук "поставили стул" 
			return true
		end
	end
	
	if cursor:IsItemNameEqual(I_SUPER_LANTERN) then		--волшебный фонарь на кусты 
		if itemName == I_MAGIC_BUSHES then
			cursor:RemoveItem()
			item:Hide()
			room:StopEmitter(room:GetItem("GATE_BUSHES_EFFECTS"))
			room:AddControlForParticleSys("GATE_BUSHES_EFFECTS")
			
			local ml_main = room:GetItem("ML_MAIN")
			ml_main:Show()
			ml_main:PlayAnimation()
			room:AddCtrlAnimation("ML_MAIN", -1)
			
			local ml_melt = room:GetItem("ML_MELT")
			ml_melt:Show()
			ml_melt:PlayAnimation()
			
			local ml_ray = room:GetItem("ML_RAY")
			ml_ray:Show()
			ml_ray:PlayAnimation()
					
			room.sfx:Play ("magic_lamp")	--звук "волшебным фонарем убираем корчи"
			return true
		end
	end
	
	if cursor:IsItemNameEqual(I_EMPTY_POT) then			--пустая кастрюля на бочку с водой
		if itemName == M_BARREL then
			item:Hide()
			cursor:RemoveItem()
			journal:CompleteTask("hand_potion_pot")

			local videoPot = room:GetItem(V_POT)
			videoPot:Show()
			videoPot:PlayAnimation()
			room.sfx:Play ("fill_pot")		--звук "набрали в котел воды"
			room:AddCtrlAnimation(V_POT, -1)
			return true
		end
	end
end
--------------------------------------------------------------------------------
-- Окончание анимации выкапывания растения
function OnAnimationComplete_GATE_SPADE(forced)
	inventory:AddInventoryItem(inventory.alt:GetItem(I_SPADE))
	inventory.alt:EraseOneItemFromCell(I_SPADE)
	room:GetItem(V_SPADE):Hide()
	
	if forced == true then
		inventory:CreateAndAddItem(room:GetItem(I_PLANT_ROOT))
	else
		pick_panel:AddItems(I_PLANT_ROOT, false)
	end
end
--------------------------------------------------------------------------------
-- Окончание анимации наливания воды в котелок
function OnAnimationComplete_FILLING_POT(forced)
	room:GetItem(V_POT):Hide()

	if forced == true then
		inventory:CreateAndAddItem(room:GetItem(I_WATER_POT))
	else
		pick_panel:AddItems(I_WATER_POT, false)
	end
end
--------------------------------------------------------------------------------
-- Окончание анимации уничтожения кустов
function OnAnimationComplete_ML_MAIN(forced)
	room:GetItem("ML_MAIN"):Hide()
	room:GetItem("ML_MELT"):Hide()
	room:GetItem("ML_RAY"):Hide()
	room:GetItem(M_TO_GLADE):Show()
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Close_up_Stub(value)						--закрыть close-up с пнем
	room:GetItem(M_STUB):Hide()
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Mask_Stool(value)							--открыть маску на стул
	room:GetItem(M_STOOL):Show()
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Cheat_Gate(value)							--выполнить все в локации  !!!
	room:GetItem(M_STUB):Hide()
	room:GetItem(I_MAGIC_BUSHES):Hide()
	room:GetItem("GATE_BUSHES_EFFECTS"):Hide()
	room:GetItem(M_TO_GLADE):Show()
	room:GetItem(M_BARREL):Hide()
	room:GetItem(M_WOOD):Hide()
	room:GetItem(I_WOOD):Hide()
	room:GetItem(I_PLANT):Hide()
	room:GetItem(I_PLANT_ROOT):Hide()
	room:GetItem(I_EMPTY_POT):Hide()
	room:GetItem(M_STOOL):Hide()
	room:GetItem(I_STOOL):Show()
	visit_glade = 1
end
--------------------------------------------------------------------------------
function CheatSkip () 													--выполнить все в предыдущих локациях   !!!
	if inventory:IsItemExisting("MATCHES") then
		inventory:EraseOneItemFromCell("MATCHES")
	end
	if inventory:IsItemExisting("KNIFE") then
		inventory:EraseOneItemFromCell("KNIFE")
	end
	
	-- откл ветки хинтов
	hint:Cheat("TO_GATE")
end
