local zone_window

function OnSceneLoad(screen)
    LoadData(screen)
    DefaultOnSceneLoad('data/Scenes/28_Master_Room_Main.lua', 'quest')
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Hole.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Scarf.lua')
	LoadData(screen)
	local perf = play_field:GetObject('perf');
	perf:GetAnimation():SetMode(HGEANIM_FWD + HGEANIM_NOLOOP);
	perf:GetAnimation():Stop();
	perf:SetOpacity(0);
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Hole.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Table.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Table_Book.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Table_Case.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Table_Drawings.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main_Zoom_Table_Perforator.lua')
	LoadData(screen)
	dofile('data/Scenes/28_Master_Room_Main.lua')
	
	LoadSound('28_Get_small_key_with_jig', 'data/Sound/28_Master_Room/Get_small_key_with_jig.ogg')
	LoadSound('28_Put_punchcard_to_door', 'data/Sound/28_Master_Room/Put_punchcard_to_door.ogg')
	LoadSound('28_Pup_punchcard_door_opens', 'data/Sound/28_Master_Room/Pup_punchcard_door_opens.ogg')
	LoadSound('28_Open_locker', 'data/Sound/28_Master_Room/Open_locker.ogg')
	LoadSound('28_Put_handle', 'data/Sound/28_Master_Room/Put_handle.ogg')
	LoadSound('28_Open_door_29', 'data/Sound/28_Master_Room/Runes_lock/Open_door.ogg')

	RegisterQuestObjects('area_hole',
						 'Layer_Perforator',
						 'area_table_book',
						 'area_table_case',
						 'area_lever')

	LinkScene('area_27', 'CursorDoorLeftUp', 'data/Scenes/27_Master_Hall_Main.lua', false)
	if HasGameState('ToolFound', '27_jig') and
	   HasGameState('ToolFound', '27_Fuse')
	then
		game_state.ignore_on_highlight['area_27'] = true
	end

	if HasGameState('MiniGameCompleted', '28_Runes_lock') then
		if(mini_game == true) then
			screen:GetObject("Layer_Light_Open"):ChangeOpacity(0.0, 1.0, 0.2);
			screen:GetObject("Door_Opened"):ChangeOpacity(0.0, 1.0, 0.2);
			MakeSoundEntity('28_Open_door_29'):Play(false);
			mini_game = false;
		else
			screen:GetObject("Layer_Light_Open"):SetOpacity(1.0);
			screen:GetObject("Door_Opened"):SetOpacity(1.0);
		end
		LinkScene('area_29', 'CursorDoorUp', 'data/Scenes/29_Daughter_Room_Main.lua', false)
		
		if HasGameState('ToolFound', '29_punchcards') and
		   HasGameState('ToolFound', '29_bulb')
		then
			game_state.ignore_on_highlight['area_29'] = true
		end
	else
		screen:GetObject("Layer_Light_Open"):SetOpacity(0.0);
		screen:GetObject("Door_Opened"):SetOpacity(0.0);
		LinkScene('area_29', 'CursorGlass', 'data/Scenes/28_Runes_lock.lua', false)
	end

	RegisterMonologObject('area_c_mask', 'C_28_MASK', true)

	-- zone_hole
	zone_hole = CreateZoomZone('area_hole',
							   'CloseZoneHole',
							   'BG_Hole', true,
							   'Key_1', true,
							   'Key_2', false,
							   'Key_3', false)
							   
    RegisterMonologObject('Key_1', 'C_28_HOLE_HINT')

	play_field:GetObject('Layer_key'):SetOpacity(0.)
	play_field:IgnoreOnTestPoint('Layer_key')
	local on_jig_apply = function()
		zone_hole.SetObjectVisible('Key_1', false)
		zone_hole.SetObjectVisible('Key_3', true)
		play_field:GetObject('Key_1'):DestroyChildren()
		play_field:GetObject('Key_3'):DestroyChildren()
		play_field:GetObject('Key_1'):ChangeOpacity(1., 0., 0.4)
		play_field:GetObject('Key_2'):ChangeOpacity(0., 1., 0.4)
		play_field:GetObject('Key_2'):ChangeOpacity(1., 0., 0.9, 0.6)
		play_field:GetObject('Key_3'):ChangeOpacity(0., 1., 0.9, 0.6)
		UnregisterActiveObject('Key_1');
		zone_hole.close_button:Stop();
		TimerDoString('zone_hole.close_button:Go();', 2, play_field:GetTimer());
		play_field:GetObject('Layer_key'):SetOpacity(1.)
		MakeSoundEntity('28_Get_small_key_with_jig'):Play(false);
	end
	local on_load_when_jig_applied = function()
		zone_hole.SetObjectVisible('Key_1', false)
		zone_hole.SetObjectVisible('Key_3', true)
		UnregisterActiveObject('Key_1');
		play_field:GetObject('Layer_key'):SetOpacity(1.)
	end
	RegisterToolApplyInfo('27_jig', 'Key_1', nil, nil, on_jig_apply, on_load_when_jig_applied);
	
	local on_key_click = function()
		play_field:GetObject('Key_3'):ChangeOpacity(1., 0., 0.4)
		TimerDoString("zone_hole.SetVisible(false)", 0.7, play_field:GetTimer())
		TimerDoString("FindTool('28_small_key')", 1.2, play_field:GetTimer())
		zone_hole.close_button:Stop()
		zone_hole.Disable()
		play_field:GetObject('Layer_key'):SetOpacity(0.)
		game_state.ignore_on_highlight['area_hole'] = true
	end
	local on_load_when_key_clicked = function()
		zone_hole.Disable()
		play_field:GetObject('Layer_key'):SetOpacity(0.)
		game_state.ignore_on_highlight['area_hole'] = true
	end
	RegisterActiveObject('Key_3', on_key_click, on_load_when_key_clicked)

	-- zone_scarf
	
	zone_scarf = CreateZoomZone('area_scarf',
                                'CloseZoneScarf',
                                'BG_Bookcase', true,
                                'area_scarf_inside', true,
                                'perf', false)
                                
    play_field:GetObject('Door_Bookcase_Over'):SetOpacity(0);
    play_field:GetObject('Door_basement_light'):SetOpacity(0);

    local on_punchcard_apply = function()
    
        local perf = play_field:GetObject('perf');
        perf:SetOpacity(1);
        perf:GetAnimation():Play();
        
        TimerDoString("play_field:GetObject('Door_Bookcase_Over'):ChangeOpacity(0., 1., 0.5, 0.5);"..
                      "play_field:GetObject('Door_basement_light'):ChangeOpacity(0., 1., 0.5, 0.5);"..
                      "LinkScene('area_30', 'CursorDoorLeftDown', 'data/Scenes/30_Road_fork_main.lua');"..
                      "zone_scarf.SetVisible(false);"..
                      "zone_scarf.Disable();", 1.5, play_field:GetTimer());
                      
        MakeSoundEntity('28_Pup_punchcard_door_opens'):Play(false);
    
    end
    
    local on_load_when_punchcard_applied = function()
    
        play_field:GetObject('Door_Bookcase_Over'):SetOpacity(1.);
        play_field:GetObject('Door_basement_light'):SetOpacity(1.);
        LinkScene('area_30', 'CursorDoorLeftDown', 'data/Scenes/30_Road_fork_main.lua');
        zone_scarf.Disable();
    
    end
    
    RegisterToolApplyInfo('29_punchcard_done', 'area_scarf_inside', nil, nil, on_punchcard_apply, on_load_when_punchcard_applied);
    
    play_field:GetObject('area_scarf_inside'):SetMaxOpacity(0.001)
    
    -- zone_table
	zone_table = CreateZoomZone('area_table',
							    'CloseZoneTable',
								'BG_Zoom_Table', true,
								'area_table_book', true,
								'area_table_case', true,
								'area_table_drawings', true,
								'Layer_Case_Open', false,
								'Layer_Perforator', true,
                                'no_button_2', true,
                                'no_button_11', true,
								'handle', false,
                                'ripped_page', false)
	play_field:GetObject('area_table_book'):SetMaxOpacity(0.001)
	play_field:GetObject('area_table_case'):SetMaxOpacity(0.001)
	play_field:GetObject('area_table_drawings'):SetMaxOpacity(0.001)

	AttachSpiderManFleeingAnimation()

	zone_table.on_open = function()
	    MG_OnTableZoneOpen();
	    if HasGameState('ToolApplied', '26_button')
	    then
	        zone_table.SetObjectVisible('no_button_11', false);
	    end
	    
	    if zone_table.spiderCompos
	    then
	        zone_table.spiderCompos:Play();
	        MakeSoundEntity('28_SpiderFleeing'):Play(false);
	        
	        local state = GetGameManager():GetCurrPlayer().m_gameState;
	        state:AddState('SpiderManVanished', '28');
        else
            zone_table.SetObjectVisible('ripped_page', true);
	    end
	    
	    if HasGameState('ToolApplied', '28_button')
	    then
	        zone_table.SetObjectVisible('no_button_2', false);
	    end
	end
	
	zone_table.on_close = function()
	    if zone_table.spiderCompos
	    then
	        zone_table.spiderCompos:Destroy();
	        zone_table.spiderCompos = nil;
	    end
	end

	-- zone_table_book
	zone_table_book = CreateZoomZone('area_table_book',
									 'CloseZoneTableBook',
									 'BG_Book', true,
									 'page1', true,
									 'page2', true,
									 'page3', false,
									 'page4', false,
									 'page5', false,
									 'page6', false,
									 'page7', false,
									 'page8', false,
									 'page9', false,
									 'cards', false)
	zone_table_book.on_open = function()
		zone_table_book.dh_to_restore = RETURN_ZONE_DHEIGHT
		RETURN_ZONE_DHEIGHT = -40.
		zone_table_book.arrow_l:Show()
		zone_table_book.arrow_l:Stop()
		zone_table_book.arrow_r:Show()
		zone_table_book.arrow_r:Go()
	    Zone28BookOpenPage(0)
	end
	zone_table_book.on_close = function()
		RETURN_ZONE_DHEIGHT = zone_table_book.dh_to_restore
		zone_table_book.arrow_l:Hide()
		zone_table_book.arrow_l:Stop()
		zone_table_book.arrow_r:Hide()
		zone_table_book.arrow_r:Stop()
		play_field:GetObject('page1'):DestroyChildren()
		play_field:GetObject('page2'):DestroyChildren()
		play_field:GetObject('page3'):DestroyChildren()
		play_field:GetObject('page4'):DestroyChildren()
		play_field:GetObject('page5'):DestroyChildren()
		play_field:GetObject('page6'):DestroyChildren()
		play_field:GetObject('page7'):DestroyChildren()
		play_field:GetObject('page8'):DestroyChildren()
		play_field:GetObject('page9'):DestroyChildren()
		play_field:GetObject('cards'):DestroyChildren()
	end

	local arrows_y = 630.

	zone_table_book.arrow_l = CreateButton('Button28ArrowLeftUp',
										   'Button28ArrowLeftOver',
										   'Button28ArrowLeftDown',
								           'LeftArrow',
								           play_field:GetLevelScreen())
	zone_table_book.arrow_l:AttachTo(play_field)
	zone_table_book.arrow_l:SetX(180.)
	zone_table_book.arrow_l:SetY(arrows_y)
	zone_table_book.arrow_l:SetZ(300.)
	zone_table_book.arrow_l:Hide()
	zone_table_book.arrow_l:Stop()

	zone_table_book.arrow_r = CreateButton('Button28ArrowRightUp',
										   'Button28ArrowRightOver',
										   'Button28ArrowRightDown',
										   'RightArrow',
										   play_field:GetLevelScreen())
	zone_table_book.arrow_r:AttachTo(play_field)
	zone_table_book.arrow_r:SetX(800.)
	zone_table_book.arrow_r:SetY(arrows_y)
	zone_table_book.arrow_r:SetZ(300.)
	zone_table_book.arrow_r:Hide()
	zone_table_book.arrow_r:Stop()

	if HasGameState('TaskComplete', 'FindInfoAboutDoll') then
		game_state.ignore_on_highlight['area_table_book'] = true
    end

    local on_find = function()
        play_field:GetObject('cards'):Hide()
        zone_table_book.SetObjectVisible('cards', false)
    end
    local on_load_when_tool_found = function()
        play_field:GetObject('cards'):Hide()
    end
    RegisterToolFindInfo('29_punchcards', 'cards', on_find, on_load_when_tool_found)

	-- zone_table_case
	zone_table_case = CreateZoomZone('area_table_case',
									 'CloseZoneTableCase',
									 'BG_Case', true,
									 'Layer_Case_Closed', true,
									 'Layer_Button_Tool', true,
									 'Layer_Case_Closed_WO_Handle', true,
									 'area_handle', true)

	play_field:GetObject('area_handle'):SetMaxOpacity(0.001)

 	local on_handle_apply = function()
		play_field:GetObject('area_handle'):Hide()
		zone_table_case.SetObjectVisible('Layer_Case_Closed_WO_Handle', false)
		play_field:GetObject('Layer_Case_Closed_WO_Handle'):ChangeOpacity(1., 0., 0.5)
		RegisterCaseActiveZone()
		zone_table.SetObjectVisible('handle', true)
		MakeSoundEntity('28_Put_handle'):Play(false);
	end
	local on_load_when_handle_applied = function()
		play_field:GetObject('area_handle'):Hide()
		zone_table_case.SetObjectVisible('Layer_Case_Closed_WO_Handle', false)
		RegisterCaseActiveZone()
		zone_table.SetObjectVisible('handle', true)
	end
	RegisterToolApplyInfo('29_handle', 'area_handle', nil, nil, on_handle_apply, on_load_when_handle_applied)

	RegisterMonologObject('area_handle', 'C_29_HANDLE')

	-- zone_table_drawings
	zone_table_drawings = CreateZoomZone('area_table_drawings',
										 'CloseZoneTableDrawings',
										 'BG_Zoom_Drawings', true,
                                         'area_spider_schema', true)
										 
    play_field:GetObject('area_spider_schema'):SetMaxOpacity(0.001)

    RegisterMonologObject('area_spider_schema', 'C_28_SPIDER_SCHEMA', true, 'area_table_drawings')

	if HasGameState('ToolFound', '29_punchcard_done') then
		game_state.ignore_on_highlight['area_table'] = true	
	end
	
    -- MiniGame punchcards
	MG_OnSceneLoad(screen);
end

function ApplyCorrectPunchCard()
end

function ApplyWrongPunchCard()

    play_field:SetTool('')
    game_state.tool = nil;
    
    local tool_name = '29_punchcard_wrong';
    local inv = play_field:GetLevelScreen():GetInventory()
    inv:GetToolInfo(tool_name).m_tool:ChangeOpacity(1., 0., 0.2)
    inv:RemoveTool(tool_name);
    
    game_state.created_tools['tool_punchkard_wrong'] = nil;
    
    RemoveGameState('ToolFound', '29_punchcard_wrong');
    
    if not HasGameState('RestartMiniGame', '29_perforator')
    then
        AddGameState('RestartMiniGame', '29_perforator');
    end
    
    local perf = play_field:GetObject('perf');
    perf:SetOpacity(1);
    perf:GetAnimation():Play();
    
    TimerDoString("play_field:GetObject('perf'):ChangeOpacity(1., 0., 0.2);"..
                  "ShowMonolog('C_28_SCARF_WRONG_PUNCHCARD_USE', 'C_28_SCARF_WRONG_PUNCHCARD_USE');",
                  1, play_field:GetTimer());
    
    MakeSoundEntity('28_Put_punchcard_to_door'):Play(false);

end

function RegisterCaseActiveZone()
	local on_case_click = function()
	    zone_table_case.SetObjectVisible('Layer_Case_Closed', false)
		play_field:GetObject('Layer_Case_Closed'):ChangeOpacity(1., 0., 0.4)
		play_field:GetObject('Layer_Case_Open'):SetOpacity(1.)
		zone_table.SetObjectVisible('Layer_Case_Open', true)
		game_state.ignore_on_highlight['area_table_case'] = true
		MakeSoundEntity('28_Open_locker'):Play(false);
	end
	local on_load_when_case_clicked = function()
		zone_table_case.SetObjectVisible('Layer_Case_Closed', false)
		zone_table.SetObjectVisible('Layer_Case_Open', true)
		game_state.ignore_on_highlight['area_table_case'] = true
	end
	RegisterActiveObject('Layer_Case_Closed', on_case_click, on_load_when_case_clicked)

	local on_button_find = function()	
		zone_table_case.SetVisible(false)
		zone_table_case.Disable()
	end
	local on_load_when_button_found = function()
		zone_table_case.Disable()
	end
	RegisterToolFindInfo('28_button', 'Layer_Button_Tool', on_button_find, on_load_when_button_found)
end

function OnSceneFree(screen)
    DefaultOnSceneFree()
    FreeData(screen)
end

function OnUpdate(dt)
    MG_OnUpdate(dt);
    DefaultOnUpdate(dt)

	if HasGameState('ToolFound', '29_punchcard_done') then	
		game_state.ignore_on_highlight['Layer_Perforator'] = true
	end
end

function OnAllItemsFound()
    DefaultOnAllItemsFound()
end

function OnLose()
    DefaultOnLose()
end

function OnExit()
    DefaultOnExit()
end

function OnClose()
    DefaultOnClose()
end

function OnObjectMouseEnter(object)
    DefaultOnObjectMouseEnter(object)
end

function OnObjectMouseLeave(object)
    DefaultOnObjectMouseLeave(object)
end

function OnObjectMouseDown(object)
    local is_wrong_click = not DefaultOnObjectMouseDown(object)
    local obj_name       = object:GetName()
    local pf             = play_field
    
    if (obj_name == 'area_scarf_inside')
    then
        ShowScarfComment();

    end
    
    MG_OnObjectMouseDown(object);
    
    DefaultOnObjectMouseDownProcessed(is_wrong_click);
end

function OnObjectMouseUp(object)
    DefaultOnObjectMouseUp(object)
end

function OnObjectFound(object)
    DefaultOnObjectFound(object)
end

function OnToolFound(tool)
    DefaultOnToolFound(tool)
end

function OnToolApply(tool, object)

    if (object:GetName() == 'area_scarf_inside')
    then
        if (tool == '29_punchcard_wrong')
        then
            ApplyWrongPunchCard();
            return;
        elseif (tool == '29_punchcards')
        then
            ShowMonolog('C_28_SCARF_PUNCHCARDS_USE', 'C_28_SCARF_PUNCHCARDS_USE');
            DropTool();
            return;
        end
    end

    DefaultOnToolApply(tool, object)
end

function OnObjectReachPanel(object)
    DefaultOnObjectReachPanel(object)
end

function OnButtonPress(title)
    DefaultOnButtonPress(title)

    if title == 'LeftArrow' then
	    Zone28BookOpenPage(game_state.zone28book_page - 1);
	end
	if title == 'RightArrow' then
		Zone28BookOpenPage(game_state.zone28book_page + 1);
	end

    if old_page ~= game_state.book_page then
        
    end
end

function OnMouseMove(previous_pos, current_pos)
    DefaultOnMouseMove(previous_pos, current_pos)
end

function OnSetTool(tool)
    DefaultOnSetTool(tool)
end

function LevelLoaded(level)
end

function OnSceneDestroy(playfield)
    DefaultOnSceneDestroy(playfield)
end

--------------------------------------------------------------------------------
-- CLEAR_ON_SAVE_BEGIN
-- Do not edit code listed below (generated by the editor on each save)
function LoadData(screen)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/BG_Master_Room.jpg',0,0,1024,768,1,0)
	anim:SetHotSpot(512,384)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('BG_Master_Room',anim,512,384,40,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Layer_Chair.PNG',0,0,124,83,1,0)
	anim:SetHotSpot(62,41)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('Layer_Chair',anim,800,503,65,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Layer_Light_Open.PNG',0,0,381,345,1,0)
	anim:SetHotSpot(190,172)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('Layer_Light_Open',anim,731,373,60,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Door_Opened.PNG',0,0,147,295,1,0)
	anim:SetHotSpot(73,147)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('Door_Opened',anim,848,372,61,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Door_Bookcase_Over.jpg',0,0,140,319,1,0)
	anim:SetHotSpot(70,159)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('Door_Bookcase_Over',anim,528,388,55,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_hole',anim,308,518,70,0,10,10)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_scarf',anim,507,386,100,0,9,35)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_table',anim,657,393,100,0,25,30)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_27',anim,147,349,100,0,20,53)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,5)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_29',anim,852,403,100,0,15,32)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_30',anim,506,470,99,0,10,15)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Layer_key.png',0,0,88,41,1,0)
	anim:SetHotSpot(44,20)
	anim:SetBlendMode(2)
	anim:SetColor('0xFFFFFFFF')
	screen:CreateObject('Layer_key',anim,296,543,100,0,1,1)
	local anim = CreateAnimation('data/Texture/Scenes/Common/area.png',0,0,8,8,1,0)
	anim:SetHotSpot(4,4)
	anim:SetBlendMode(2)
	anim:SetColor('0x01FFFFFF')
	screen:CreateObject('area_c_mask',anim,331,157,100,0,12,12)
	local anim = CreateAnimation('data/Texture/Scenes/28_Master_Room/Zone_Main/Layers/Door_basement_light.png',0,0,460,310,1,0)
	anim:SetHotSpot(230,155)
	anim:SetBlendMode(2)
	anim:SetColor('0xAAFFFFFF')
	screen:CreateObject('Door_basement_light',anim,675,440,98,0,1,1)
end

function FreeData(screen)
end
-- CLEAR_ON_SAVE_END
