tibia-client/modules/client/client.lua

112 lines
3.2 KiB
Lua
Raw Normal View History

local musicFilename = "/sounds/startup"
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
2012-08-26 11:10:48 +02:00
musicFilename = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicFilename, 3)
2012-08-26 11:10:48 +02:00
end
end
function reloadScripts()
g_textures.clearTexturesCache()
2012-06-26 00:13:30 +02:00
g_modules.reloadModules()
2013-01-27 10:44:15 +01:00
local script = '/' .. g_app.getCompactName() .. 'rc'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicFilename, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicFilename, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
2012-01-06 10:35:48 +01:00
g_window.setMinimumSize({ width = 600, height = 480 })
2012-08-26 11:10:48 +02:00
g_sounds.preload(musicFilename)
2011-12-30 07:36:10 +01:00
2011-12-30 05:50:19 +01:00
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
2011-12-30 07:05:32 +01:00
g_window.setFullscreen(true)
2011-12-30 05:50:19 +01:00
else
2012-01-06 09:48:59 +01:00
-- window size
local size = { width = 800, height = 600 }
2012-06-26 00:13:30 +02:00
size = g_settings.getSize('window-size', size)
2012-01-03 02:32:34 +01:00
g_window.resize(size)
2012-01-06 09:48:59 +01:00
-- window position, default is the screen center
2012-01-03 02:32:34 +01:00
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
2012-06-26 00:13:30 +02:00
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
2012-01-03 02:32:34 +01:00
g_window.move(pos)
2012-01-06 09:48:59 +01:00
-- window maximized?
2012-06-26 00:13:30 +02:00
local maximized = g_settings.getBoolean('window-maximized', false)
2012-01-06 09:48:59 +01:00
if maximized then g_window.maximize() end
2011-12-30 05:50:19 +01:00
end
2011-12-30 07:36:10 +01:00
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_configs.get('uuid')) then
local uuid = g_crypt.genUUID()
g_crypt.setMachineUUID(uuid)
g_configs.set('uuid', uuid)
g_configs.save()
end
connect(g_app, { onRun = startup })
2012-01-06 10:35:48 +01:00
end
function terminate()
2012-01-17 06:36:25 +01:00
-- save window configs
2012-06-26 00:13:30 +02:00
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
local protocolVersion = g_game.getProtocolVersion()
if protocolVersion ~= 0 then
g_settings.set('protocol-version', protocolVersion)
end
end