-- conf/system.lua
-- copyright (c) 2007 rionix
-- version: 1.00
-- date: 27.07.2007

-------------------------------------------------------------------------------
-- system
-------------------------------------------------------------------------------

local fheader = "-- %s\n-- copyright (c) 2007 rionix\n-- version: %s\n-- date: %s\n\n"

-- переопределяем системную функцию
function dofile( str )
	print('^7SCRIPT:^6 Execute file ', str, '\n')
	GetScript():LoadFile(str)
end

-- пишем строку в файл
function fwrite( f, str )
	return( luaFWrite( f, str ) )
end

-- дамп объектов
function dump( str )
	dump_nls15(str)
	luaDumpGD(str)
end

-- показ окна
function window( str )
	theGUI:ShowWindow(str)
end

-------------------------------------------------------------------------------
-- GUI
-------------------------------------------------------------------------------

-- показать окно с текстурой с именем str
function tshow(str)
	theGUI:ShowWindow("texture")
	local wnd = theGUI:GetWindow("texture")
	local ctrl = wnd:GetControl( wnd:FindControl("image") )
	ctrl = luaToImageCtrl(ctrl)
	ctrl:SetTexture(str)
end

-- скрыть окно с текстурой
function thide()
	theGUI:HideWindow("texture")
end

-------------------------------------------------------------------------------
-- settings
-------------------------------------------------------------------------------

-- функция выдает строку для записи в файл при сохранении настроек игры
function GetSettingsConst( name )
	return( theGame.m_Settings[ name ] )
end

-- настройки игры
function WriteSettings( szFileName )
	-- открываем файл и даем ему полный доступ
	local fname = filename(szFileName)
	local f = io.open( fname:path(), "w" )
	-- файл не найден. ошибку открытия файла выведет сам класс cFile
	if ( f == nil ) then return(cResult.FileNotFound) end
	cFileSystem():FullAccess(fname)
	-- напишем заголовок (имя файла/версия/дата записи)
	f:write( string.format( fheader, szFileName, "0.10", os.date("%d.%m.%Y") ) )
	-- функция загрузки настроек hardware
	f:write( "-- hardware settings\n" )
	f:write( "function LoadHardwareSettings()\n" )
		-- video
		local windowed = "false";
		if (theEngine:IsWindowed() == true) then windowed = "true" end;
		f:write( string.format( "\t-- video\n\tdisplay(%s, 1024, 768, 32)\n", windowed ) )
		-- sound
		f:write( string.format( "\t-- sound\n\tsound(%.2f, %.2f)\n", GetSound():GetVolume(cSoundManager.e_Sound), GetSound():GetVolume(cSoundManager.e_Music) ) )
	f:write( "end\n\n" )
	-- далее пишем настройки, которые из cSettings
	f:write( "-- settings\n" )
	f:write( "function LoadSettings()\n" )
		f:write( string.format("\ttheGame.m_Settings.fMouseSpeed = %.2f\n", theGame.m_Settings.fMouseSpeed) )
		f:write("\ttheGame.m_Settings.iCheatMode = " .. theGame.m_Settings.iCheatMode .. "\n")
		f:write("\ttheGame.m_Settings.iRenderInfo = " .. theGame.m_Settings.iRenderInfo .. "\n")
		-- profile
		f:write( "\t-- profile\n" )
		f:write( "\ttheGame:SetPlayerCounter( " .. theGame:GetPlayerCounter() .. " )\n" );
		f:write( "\ttheGame:ChangePlayer( '" .. theGame:GetName() .. "' )\n" )
	f:write( "end\n" )
	f:close()
	return(cResult.Ok)
end
