--------------------------------------------------------------------------------
--  File     : Hut_1st_floor
--  Author(s): Prokopovich Larisa
--
--  Summary  : Скрипт управления локацией.
--
--  Copyright © 2012 Floodlight Games.  All rights reserved.
--------------------------------------------------------------------------------
LOC_1FLOOR				= "Hut_1st_floor"
LOC_1FLOOR_CABINET		= "Hut_1st_floor_Cabinet"
LOC_1FLOOR_CABINET_MG	= "Hut_1st_floor_Cabinet_MG"
LOC_1FLOOR_CHEST		= "Hut_1st_floor_Chest"
LOC_1FLOOR_LANTERN_MG	= "Hut_1st_floor_Lantern_MG"
LOC_1FLOOR_SHELF_HO		= "Hut_1st_floor_Shelf_HO"
LOC_1FLOOR_STATUETTE	= "Hut_1st_floor_Statuette"
LOC_1FLOOR_STOOL		= "Hut_1st_floor_Stool_puzzle"
LOC_2FLOOR				= "Hut_2nd_floor"
LOC_2FLOOR_CAGE			= "Hut_2nd_floor_Cage"
LOC_2FLOOR_TELESCOPE	= "Hut_2nd_floor_Telescope"
LOC_GATE				= "Gate"

M_TO_GATE				= "M_TO_GATE"					--выход из охотничьего домика
M_LADDER				= "M_LADDER"					--переход на 2 этаж
M_SHELF					= "M_SHELF"						--переход в hidden object с полкой
M_LANTERN_MG			= "M_LANTERN_MG"				--переход в close-up с фонарем
M_CABINET_DOORS			= "M_CABINET_DOORS"				--переход в миниигру для открытия двери
M_STATUETTE				= "M_STATUETTE"					--переход в close-up со статуэткой
M_STOOL					= "M_STOOL_PUZZLE"				--переход в close-up со стулом
M_STOVE					= "M_STOVE"						--печь
M_SOLDIER				= "M_SOLDIER"					--лицо солдата

I_CHEST_OPENED			= "CHEST_OPENED"				--открытый сундук
I_CHEST_CLOSED			= "CHEST_CLOSED"				--закрытый сундук
I_CHEST_KEY				= "CHEST_KEY"					--ключ сундук
I_SPADE					= "SPADE_Q"						--лопата
I_EMPTY_POT				= "EMPTY_POT"					--пустая кастрюля
I_WATER_POT				= "WATER_POT"					--кастрюля с водой
I_N_NAKL_POT			= "N_NAKL_POT"					--накладка на кастрюлю
I_WOOD					= "WOOD"						--дрова
I_PLANT_ROOT			= "PLANT_ROOT"					--корень травы
I_MATCHES				= "BOX_OF_MATCHES"				--спички
I_POTION				= "POTION"						--зелье
I_STOOL_BROKEN			= "STOOL_BROKEN"				--сломанный стул
I_STOOL					= "STOOL"						--стул 
I_CABINET_DOOR_OPENED	= "CABINET_DOOR_OPENED"			--дверь шкафчика
I_STATUETTE_HAND_OFF	= "STATUETTE_HAND_OFF"			--статуэтка без руки
I_STATUETTE_HAND_DN		= "STATUETTE_HAND_DN"			--статуэтка с опущенной рукой
I_STATUETTE_HAND_UP		= "STATUETTE_HAND_UP"			--статуэтка с поднятой рукой
I_LANTERN				= "SUPER_LANTERN"				--суперфонарь
I_FORK					= "FORK"						--вилка

E_BOILING				= "BOILING_EFFECTS"				--пар над котелком
E_COOKING				= "COOKING_EFFECTS"				--пар над зельем
E_FIREPLACE_BACK		= "FIREPLACE_BACK_EFFECTS"		--огонь
E_FIRE					= "FIRE_EFFECTS"				--огонь
E_POT					= "POT_EFFECTS"					--огонь под котелком
--------------------------------------------------------------------------------
function OnSerialize(system)
	StoveF = system:Serialize(StoveF)
end
--------------------------------------------------------------------------------
function OnFirstEntry()
	cstore:SetKey("Close_up_Cabinet", 0)

	room:GetItem(I_CHEST_OPENED):Disable ()
	room:GetItem(M_LANTERN_MG):Disable ()
	cstore:SetKey("Close_up_Lantern", 0)
	StoveF = 0

	stars:Show(M_LADDER, "3")
	stars:Show(M_SHELF, "1")
	stars:Show(M_LANTERN_MG, "2")
	stars:Show(M_CABINET_DOORS, "2")
	stars:Show(M_STATUETTE, "2")
	stars:Show(M_STOOL, "2")
	stars:Show(M_STOVE, "4")
	stars:Show(I_CHEST_OPENED, "2")
	stars:Show(I_CHEST_CLOSED, "2")
	stars:Show(I_SPADE, "4")
	stars:Show(I_STOOL, "4")
	stars:Show(M_SOLDIER, "4")
	stars:Show(I_FORK, "4")
end
--------------------------------------------------------------------------------
function OnEntry()
	local lamp = cstore:GetKey("Close_up_Lantern")
	
	if (lamp ~= 2) and (lamp ~= 3) then
		music:PlayLoopWithDelay(20, "gate2") 
	end
	
	ambient:Play("Hut_1st_floor")
end
--------------------------------------------------------------------------------
function OnMouseClickOnItem(item)
	local itemName = item:GetName()
	
	if itemName == M_TO_GATE then
		chapter:JumpRoom(LOC_GATE)
		return true
	elseif itemName == M_LADDER  then
		chapter:JumpRoom(LOC_2FLOOR)
		return true
	
	elseif itemName == M_LANTERN_MG  then						--переход в close-up с фонарем
		if item:IsEnabled() then
			chapter:JumpCloseup(LOC_1FLOOR_LANTERN_MG)
		else
			comment:Add("CMT_Lantern_Player")
		end
		return true
	elseif itemName == M_CABINET_DOORS  then					--переход в миниигру для открытия двери
		if cstore:GetKey("Close_up_Cabinet") == 0 then
			chapter:JumpRoom(LOC_1FLOOR_CABINET_MG)
		elseif (cstore:GetKey("Close_up_Cabinet") == 1) or
			   (cstore:GetKey("Close_up_Cabinet") == 2) then
			chapter:JumpCloseup(LOC_1FLOOR_CABINET)
		end
		return true	
	elseif itemName == M_STATUETTE  then						--переход в close-up со статуэткой
		chapter:JumpCloseup(LOC_1FLOOR_STATUETTE)
		return true
	elseif itemName == M_STOOL  then							--переход в close-up со стулом
		chapter:JumpCloseup(LOC_1FLOOR_STOOL)
		return true	
	elseif itemName == M_SHELF  then							--переход в hidden object с полкой
		chapter:JumpRoom(LOC_1FLOOR_SHELF_HO)
		return true
	elseif (itemName == I_CHEST_CLOSED) or	 					---переход в сундук
		   ((itemName == I_CHEST_OPENED) and
		   not(item:IsEnabled())) then
		chapter:JumpCloseup(LOC_1FLOOR_CHEST)
		return true
	end

	
	if itemName == M_STOVE then							--печь
		if StoveF == 0 then
			comment:Add("CMT_Stove1_Player")
		elseif StoveF == 1 then
			comment:Add("CMT_Stove4_Player")
		end
		return true
	
	elseif itemName == I_SPADE then						--лопата
		pick_panel:AddItems(itemName, false)
		return true
	
	elseif itemName == I_FORK then						--вилка
		pick_panel:AddItems(itemName, false)
		comment:Add("CMT_Fork_Player")
		return true
	
	elseif itemName == I_STOOL then						--стул
		pick_panel:AddItems(itemName, false)
		cstore:SetKey("Mask_Stool", true)
		return true
	
	elseif itemName == I_POTION then					--зелье
		pick_panel:AddItems(itemName, false)
		room:GetItem(I_N_NAKL_POT):Hide()
		room:GetItem(E_POT):Hide()
		room:GetItem(E_COOKING):Hide()
		room.sfx:Stop ("boil_water")
		return true
	end
	
	if itemName == M_SOLDIER then					--лицо солата
		if (cstore:GetKey("Soldier1") == 0) and (cstore:GetKey("Soldier2") == 0) then
			comment:Add("SOLDIER1")
			cstore:SetKey("Soldier1", 1)
			stars:Hide(M_SOLDIER)
		elseif (cstore:GetKey("Soldier1") == 0) and (cstore:GetKey("Soldier2") == 1) then
			comment:Add("SOLDIER2")
			cstore:SetKey("Soldier1", 1)
			stars:Hide(M_SOLDIER)
		else
			comment:Add("SOLDIER3")
		end
		return true
	end
end
--------------------------------------------------------------------------------
function OnClickItemOnItem(item)					
	local itemName = item:GetName()
	
	if itemName == M_LANTERN_MG then									--переход в close-up с фонарем
		if item:IsEnabled() then
			chapter:JumpCloseup(LOC_1FLOOR_LANTERN_MG)
		else
			comment:Add("CMT_Lantern_Player")
		end
		return true
	elseif itemName == M_STATUETTE  then								--переход в close-up со статуэткой
		chapter:JumpCloseup(LOC_1FLOOR_STATUETTE)
		return true
	elseif itemName == M_STOOL  then									--переход в close-up со стулом
		chapter:JumpCloseup(LOC_1FLOOR_STOOL)
		return true	
	elseif (itemName == I_CHEST_CLOSED) or	 							---переход в сундук
		   ((itemName == I_CHEST_OPENED) and
		   not(item:IsEnabled())) then	
		chapter:JumpCloseup(LOC_1FLOOR_CHEST)
		return true
	elseif (itemName == M_CABINET_DOORS) and							--переход в шкафчик
			((cstore:GetKey("Close_up_Cabinet") == 1) or
			(cstore:GetKey("Close_up_Cabinet") == 2)) then
		chapter:JumpCloseup(LOC_1FLOOR_CABINET)
		return true	
	end
	
	
	if itemName == M_STOVE then
		if cursor:IsItemNameEqual(I_WOOD) then			--дрова на печь
			cursor:RemoveItem()
			room:GetItem(I_WOOD):Show()
			room.sfx:Play ("put_firewood")	--звук "положили дрова в камин"
			return true
		end
		
		if cursor:IsItemNameEqual(I_EMPTY_POT) then		--котелок без воды на печь
			comment:Add("CMT_Stove6_Player")
			return true
		end
		
		if cursor:IsItemNameEqual(I_WATER_POT) then		--котелок с водой на печь
			cursor:RemoveItem()
			room:GetItem(I_WATER_POT):Show()
			room:GetItem(I_N_NAKL_POT):Show()
			if StoveF == 1 then
				PotEffects()
			end
			room.sfx:Play ("hang_pot")	--звук "повесили котел на крюк"
			return true
		end
		
		if cursor:IsItemNameEqual(I_MATCHES) then		--спички	на печь
			if room:GetItem(I_WOOD):IsVisible() then
				if StoveF == 0 then
					inventory:AddItemFromCursor()
					StoveF = 1
					local effect = room:GetItem(E_FIREPLACE_BACK)
					effect:Show()
					effect:PlayAnimation()
					local color = effect:GetColor()
					local color1 = effect:GetColor()
					color1:SetNormalAlpha(0)
					effect:SetColor(color1)
					effect.effects:PlayColor(color, 0.5)
		
					effect = room:GetItem(E_FIRE)
					effect:Show()
					effect:PlayAnimation()
					if room:GetItem(I_WATER_POT):IsVisible() then
						PotEffects()
					end
					room.sfx:Play ("ognivo")	--звук "чиркнули огнивом"
					return true
				end
			else
				comment:Add("CMT_Stove3_Player")
				return true
			end
		end
		
		if cursor:IsItemNameEqual(I_PLANT_ROOT) and		--корень на печь
		   (room:GetItem(I_WATER_POT):IsVisible()) then	
			if StoveF == 1 then
				cursor:RemoveItem()
				room:GetItem(M_STOVE):Hide()
				room:GetItem(I_WATER_POT):Hide()
				room:GetItem(E_BOILING):Hide()
				room:GetItem(I_POTION):Show()
				local effect = room:GetItem(E_COOKING)
				effect:Show()
				effect:PlayAnimation()
				room.sfx:Play ("put_root_in_pot")	--звук "бросили корень в котел"
			elseif StoveF == 0 then
				comment:Add("CMT_Stove5_Player")
			end
			return true
		end
	end
end
--------------------------------------------------------------------------------
function OnUpdate (elapsedTime)
	if (StoveF == 1) and not(room.sfx:IsPlaying ("ognivo")) and not(room.sfx:IsPlaying ("fire_in_a_place")) then
		room.sfx:PlayEx ("fire_in_a_place", true, 1, 0)	--звук "горит костер в камине"
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Stool_Ready(value)							--закрыть close-up со стулом
	if value == 1 then								--поставить собранный, но не сколоченный стул
		room:GetItem(I_STOOL_BROKEN):Hide()
		room:GetItem(I_STOOL):Show()
		return true
	elseif value == 2 then							--поставить целый стул
		room:GetItem(M_STOOL):Hide()							
		room:GetItem(I_STOOL_BROKEN):Hide()
		room:GetItem(I_STOOL):Show()
		return true
	elseif value == 3 then							--убрать стул
		room:GetItem(M_STOOL):Hide()
		room:GetItem(I_STOOL_BROKEN):Hide()
		room:GetItem(I_STOOL):Hide()
		return true
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Close_up_Cabinet(value)					--закрыть close-up со шкафом
	if (value == 1) or (value == 2) then
		room:GetItem(I_CABINET_DOOR_OPENED):Show()
	end
	if value == 3 then
		room:GetItem(I_CABINET_DOOR_OPENED):Show()
		room:GetItem(M_CABINET_DOORS):Hide()
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Close_up_Lantern(value)					
	if value == 1 then													--открыть close-up с фонарем
		room:GetItem(M_LANTERN_MG):Enable()
	elseif value == 3 then												--закрыть close-up с фонарем
		room:GetItem(M_LANTERN_MG):Hide()
		room:GetItem(I_LANTERN):Hide()
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Close_up_Statuette(value)					--закрыть close-up со статуэткой
	if value == 1 then
		room:GetItem(I_STATUETTE_HAND_OFF):Hide()
		room:GetItem(I_STATUETTE_HAND_DN):Show()
	elseif value == 2 then
		room:GetItem(I_STATUETTE_HAND_DN):Hide()
		room:GetItem(I_STATUETTE_HAND_UP):Show()
	elseif value == 3 then
		room:GetItem(M_STATUETTE):Hide()
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Hut_1st_floor_Chest(value)					--закрыть сундук
	if value == 1 then
		room:GetItem(I_CHEST_CLOSED):Hide()
		room:GetItem(I_CHEST_OPENED):Show()
	elseif value == 2 then
		room:GetItem(I_CHEST_OPENED):Enable ()
		stars:Hide(I_CHEST_OPENED)
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Shelf_HO(value)							--закрыть hidden object с полкой
	if (value == 1) or (value == 3) then
		room:GetItem(M_SHELF):Hide()
	elseif value == 2 then
		room:GetItem(M_SHELF):Show()
	end
end
--------------------------------------------------------------------------------
function OnChapterStoreEvent_Cheat_Hut1stFloor1(value)					--выполнить все в локации  !!!
	cstore:SetKey("Stool_Ready", 3)
	cstore:SetKey("Close_up_Cabinet", 2)
	cstore:SetKey("Close_up_Cabinet", 3)
	cstore:SetKey("Close_up_Lantern", 3)
	if cstore:GetKey("Shelf_HO") ~= 2 then
		cstore:SetKey("Shelf_HO", 1)
	end
	room:GetItem(M_STOVE):Hide()
	room:GetItem(I_WOOD):Show()
	StoveF = 1
	local effect = room:GetItem(E_FIREPLACE_BACK)
	effect:Show()
	effect:PlayAnimation()
	effect = room:GetItem(E_FIRE)
	effect:Show()
	effect:PlayAnimation()
	
	room:GetItem(I_FORK):Hide()
	room:GetItem(I_SPADE):Hide()
end
function OnChapterStoreEvent_Cheat_Hut1stFloor2(value)					
	room:GetItem(M_STATUETTE):Hide()
	room:GetItem(I_STATUETTE_HAND_UP):Show()
	cstore:SetKey("Shelf_HO", 3)
	cstore:SetKey("Hut_1st_floor_Chest", 1)
	cstore:SetKey("Hut_1st_floor_Chest", 2)
end
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function PotEffects()
	local effect = room:GetItem(E_POT)
	effect:Show()
	effect:PlayAnimation()
	effect = room:GetItem(E_BOILING)
	effect:Show()
	effect:PlayAnimation()
	room.sfx:PlayEx ("boil_water", true, 1, 0)	--звук "вода кипит в котле "
end

