GE Lua Documentation

Press F to search!

onGameEngineStartup

Definition


-- @/lua/ge/main.lua:998

function onGameEngineStartup()
  -- log('I', "main", "onGameEngineStartup called.....")

  -- make sure some important paths exist
  if not FS:directoryExists("settings/") then FS:directoryCreate("settings/") end
  if not FS:directoryExists("screenshots/") then FS:directoryCreate("screenshots/") end

  -- Set profile directory
  setConsoleVariable("$Pref::Video::ProfilePath", "core/profile")

  local mainEventManager = createObject("EventManager")
  if mainEventManager then
    -- log("I","", "mainEventManager = "..dumps(mainEventManager))
    mainEventManager.queue = "mainEventManagerQueue"
    mainEventManager:registerEvent("onExit")
    mainEventManager:registerEvent("onStart")
    mainEventManager:registerEvent("onPreStart")
    mainEventManager:registerObject("MainEventManager")
  else
    log("E","", "Couldn't create event manager 'MainEventManager'")
  end

  parseArgs.defaultParseArgs()

  onPreStartCallback()

  ---------------------------------------------------------
  -- Either display the help message or startup the app.
  -- This is emulating what mainEventManager:postEvent("onPreStart", 0) call would do for all listeners. However, in the entire codebase we
  -- don't have a single CS file responding to this message. We should delete it.
  -- if scripts_main.onPreStart and type(scripts_main.onPreStart) == 'function' then
  --   scripts_main.onPreStart()
  -- end

  -- TODO(AK) 16/08/2021: This is for Torque Script cs files to hook into. Maybe re-enable after removing CS scripts involved in start up
  -- mainEventManager:postEvent("onPreStart", 0)
  ---------------------------------------------------------
  -- core_main.onStart()
  -- Initialise Core stuff.
  local clientCore = require("client/core")
  clientCore.initializeCore()

  -- log('I', "main", "Initialized Core...")

  -- first check if we have a level file to load
  local levelToLoad = getConsoleVariable("$levelToLoad")
  if levelToLoad ~= "" then
    -- Clear out the $levelToLoad so we don't attempt to load the level again later on.
    setConsoleVariable("$levelToLoad", "")
    local levelFile = "levels/" .. levelToLoad
    freeroam_freeroam.startFreeroam(levelFile)
  end

  -- scripts_main.onStart()
  setConsoleVariable("$pref::Directories::Terrain", "levels/")

  -- log('I', "main", "--------- Initializing Directory: scripts---------");

  -- Load the scripts that start it all...
  local client_init = require("client/init")

  -- Init the physics plugin.
  PhysicsPlugin.init("")

  client_init.initClient()

  if mainEventManager then
    mainEventManager:postEvent("onStart", 0)
  end

  log("I", "", "============== GELUA VM loaded ================")
end

Callers