--Single player purpose local Logger = require("classes.util.Logger") local Database = require("classes.spearhead_db") local SpearheadEvents = require("classes.spearhead_events") local MissionCommandsHelper = require("classes.stageClasses.helpers.MissionCommandsHelper") local GlobalConfig = require("classes.configuration.GlobalConfig") local CapConfig = require("classes.configuration.CapConfig") local StageConfig = require("classes.configuration.StageConfig") local Persistence = require("classes.persistence.Persistence") local PersistenceConfig = require("classes.configuration.PersistenceConfig") local SpawnManager = require("classes.helpers.SpawnManager") local DetectionManager = require("classes.capClasses.detection.DetectionManager") local GlobalCapManager = require("classes.capClasses.GlobalCapManager") local GlobalStageManager = require("classes.stageClasses.GlobalStageManager") local GlobalFleetManager = require("classes.fleetClasses.GlobalFleetManager") local MissionEditorWarnings = require("classes.util.MissionEditorWarnings") local defaultLogLevel = "INFO" if SpearheadConfig and SpearheadConfig.debugEnabled == true then defaultLogLevel = "DEBUG" end local startTime = timer.getTime() * 1000 SpearheadEvents.Init(defaultLogLevel) local dbLogger = Logger.new("database", defaultLogLevel) local standardLogger = Logger.new("", defaultLogLevel) local databaseManager = Database.New(dbLogger) MissionCommandsHelper.getOrCreate() -- initiate local capConfig = CapConfig:new(); local stageConfig = StageConfig:getInstance(); local persistenceConfig = PersistenceConfig.new() if persistenceConfig and persistenceConfig:isEnabled() == true then local persistenceLogger = Logger.new("Persistence", defaultLogLevel) Persistence.Init(persistenceLogger) end local spawnLogger = Logger.new("SpawnManager", defaultLogLevel) local spawnManager = SpawnManager.new(spawnLogger) local detectionLogger = Logger.new("DetectionManager", defaultLogLevel) local detectionManager = DetectionManager.New(detectionLogger) GlobalCapManager.start(databaseManager, capConfig, detectionManager, defaultLogLevel, spawnManager) local globalStageManager = GlobalStageManager.new(databaseManager, stageConfig, defaultLogLevel, spawnManager) GlobalFleetManager.start(databaseManager) env.info(startTime .. "ms / " .. timer.getTime() * 1000 .. "ms") local duration = (timer.getTime() * 1000) - startTime standardLogger:info("Spearhead Initialisation duration: " .. tostring(duration) .. "ms") local missionEditorWarningsLogger = Logger.new("MissionEditorWarnings", defaultLogLevel) MissionEditorWarnings.WriteAll(missionEditorWarningsLogger) globalStageManager:PrintMermaidStage() local startDelayed = function() globalStageManager:Start() return nil end timer.scheduleFunction(startDelayed, nil, timer.getTime() + 5) -- delay start by 5 seconds so every deleted item it first removed entirely local globalConfig = GlobalConfig.New() if globalConfig and globalConfig:isDebugMenuEnabled() == true then local DebugMenu = require("classes.debug.DebugMenu") local debugMenu = DebugMenu.new() debugMenu:RegisterMenus() end