public static void VA_Init1(ref Dictionary<string, object> state, ref Dictionary<string, Int16?> shortIntValues, ref Dictionary<string, string> textValues, ref Dictionary<string, int?> intValues, ref Dictionary<string, decimal?> decimalValues, ref Dictionary<string, Boolean?> booleanValues, ref Dictionary<string, DateTime?> dateTimeValues, ref Dictionary<string, object> extendedValues) { // Set up and/or open our database String dataDir = Environment.GetEnvironmentVariable("AppData") + "\\EDDI"; System.IO.Directory.CreateDirectory(dataDir); // Obtain our credentials Credentials credentials = Credentials.FromFile(); if (credentials == null) { setPluginStatus(ref textValues, "Failed", "Failed to access credentials file; please log in", null); return; } if (String.IsNullOrEmpty(credentials.appId) || String.IsNullOrEmpty(credentials.machineId) || String.IsNullOrEmpty(credentials.machineToken)) { setPluginStatus(ref textValues, "Failed", "Credentials file does not contain required information; please log in", null); return; } app = new CompanionAppService(credentials); starSystemRepository = new EDDIStarSystemSqLiteRepository(); setPluginStatus(ref textValues, "Operational", null, null); // Set up log monitor logWatcherThread = new Thread(new ThreadStart(StartLogMonitor)); logWatcherThread.Start(); // Carry out initial population of information InvokeUpdateProfile(ref state, ref shortIntValues, ref textValues, ref intValues, ref decimalValues, ref booleanValues, ref dateTimeValues, ref extendedValues); InvokeNewSystem(ref state, ref shortIntValues, ref textValues, ref intValues, ref decimalValues, ref booleanValues, ref dateTimeValues, ref extendedValues); setString(ref textValues, "Environment", CurrentEnvironment); }
public static void VA_Init1(ref Dictionary<string, object> state, ref Dictionary<string, Int16?> shortIntValues, ref Dictionary<string, string> textValues, ref Dictionary<string, int?> intValues, ref Dictionary<string, decimal?> decimalValues, ref Dictionary<string, Boolean?> booleanValues, ref Dictionary<string, DateTime?> dateTimeValues, ref Dictionary<string, object> extendedValues) { if (!initialised) { lock (initLock) { if (!initialised) { try { logInfo("EDDI " + PLUGIN_VERSION + " starting"); // Set up and/or open our database String dataDir = Environment.GetEnvironmentVariable("AppData") + "\\EDDI"; System.IO.Directory.CreateDirectory(dataDir); // Set up our local star system repository starSystemRepository = new EDDIStarSystemSqLiteRepository(); // Set up the EDDI configuration EDDIConfiguration eddiConfiguration = EDDIConfiguration.FromFile(); setString(ref textValues, "Home system", eddiConfiguration.HomeSystem != null && eddiConfiguration.HomeSystem.Trim().Length > 0 ? eddiConfiguration.HomeSystem : null); setString(ref textValues, "Home system (spoken)", eddiConfiguration.HomeSystem != null && eddiConfiguration.HomeSystem.Trim().Length > 0 ? Translations.StarSystem(eddiConfiguration.HomeSystem) : null); setString(ref textValues, "Home station", eddiConfiguration.HomeStation != null && eddiConfiguration.HomeStation.Trim().Length > 0 ? eddiConfiguration.HomeStation : null); setDecimal(ref decimalValues, "Insurance", eddiConfiguration.Insurance); if (eddiConfiguration.HomeSystem != null && eddiConfiguration.HomeSystem.Trim().Length > 0) { EDDIStarSystem HomeStarSystemData = starSystemRepository.GetEDDIStarSystem(eddiConfiguration.HomeSystem.Trim()); if (HomeStarSystemData == null) { // We have no record of this system; set it up HomeStarSystemData = new EDDIStarSystem(); HomeStarSystemData.Name = eddiConfiguration.HomeSystem.Trim(); HomeStarSystemData.StarSystem = DataProviderService.GetSystemData(eddiConfiguration.HomeSystem.Trim()); HomeStarSystemData.LastVisit = DateTime.Now; HomeStarSystemData.StarSystemLastUpdated = HomeStarSystemData.LastVisit; HomeStarSystemData.TotalVisits = 1; starSystemRepository.SaveEDDIStarSystem(HomeStarSystemData); } HomeStarSystem = HomeStarSystemData.StarSystem; } enableDebugging = eddiConfiguration.Debug; setBoolean(ref booleanValues, "EDDI debug", enableDebugging); // Set up the app service appService = new CompanionAppService(enableDebugging); if (appService.CurrentState == CompanionAppService.State.READY) { // Carry out initial population of profile InvokeUpdateProfile(ref state, ref shortIntValues, ref textValues, ref intValues, ref decimalValues, ref booleanValues, ref dateTimeValues, ref extendedValues); } if (Cmdr != null && Cmdr.Name != null) { setString(ref textValues, "EDDI plugin profile status", "Enabled"); logInfo("EDDI access to the companion app is enabled"); } else { // If InvokeUpdatePlugin failed then it will have have left an error message, but this once we ignore it setPluginStatus(ref textValues, "Operational", null, null); setString(ref textValues, "EDDI plugin profile status", "Disabled"); logInfo("EDDI access to the companion app is disabled"); // We create a commander anyway, as data such as starsystem uses it Cmdr = new Commander(); } // Set up the star map service StarMapConfiguration starMapCredentials = StarMapConfiguration.FromFile(); if (starMapCredentials != null && starMapCredentials.apiKey != null) { // Commander name might come from star map credentials or the companion app's profile string commanderName = null; if (starMapCredentials.commanderName != null) { commanderName = starMapCredentials.commanderName; } else if (Cmdr.Name != null) { commanderName = Cmdr.Name; } if (commanderName != null) { starMapService = new StarMapService(starMapCredentials.apiKey, commanderName); setString(ref textValues, "EDDI plugin EDSM status", "Enabled"); logInfo("EDDI access to EDSM is enabled"); } } if (starMapService == null) { setString(ref textValues, "EDDI plugin EDSM status", "Disabled"); logInfo("EDDI access to EDSM is disabled"); } setString(ref textValues, "EDDI version", PLUGIN_VERSION); speechService = new SpeechService(SpeechServiceConfiguration.FromFile()); InvokeNewSystem(ref state, ref shortIntValues, ref textValues, ref intValues, ref decimalValues, ref booleanValues, ref dateTimeValues, ref extendedValues); CurrentEnvironment = ENVIRONMENT_NORMAL_SPACE; setString(ref textValues, "Environment", CurrentEnvironment); // Set up log monitor NetLogConfiguration netLogConfiguration = NetLogConfiguration.FromFile(); if (netLogConfiguration != null && netLogConfiguration.path != null) { logWatcherThread = new Thread(() => StartLogMonitor(netLogConfiguration)); logWatcherThread.IsBackground = true; logWatcherThread.Name = "EDDI netlog watcher"; logWatcherThread.Start(); setString(ref textValues, "EDDI plugin NetLog status", "Enabled"); logInfo("EDDI netlog monitor is enabled for " + netLogConfiguration.path); } else { setString(ref textValues, "EDDI plugin NetLog status", "Disabled"); logInfo("EDDI netlog monitor is disabled"); } setPluginStatus(ref textValues, "Operational", null, null); initialised = true; } catch (Exception ex) { setPluginStatus(ref textValues, "Failed", "Failed to initialise", ex); } } } } }