private EDDI() { try { Logging.Info(Constants.EDDI_NAME + " " + Constants.EDDI_VERSION + " starting"); // Start by ensuring that our primary data structures have something in them. This allows them to be updated // from any source Cmdr = new Commander(); Ship = new Ship(); Shipyard = new List<Ship>(); // Set up the EDDI configuration EDDIConfiguration configuration = EDDIConfiguration.FromFile(); Logging.Verbose = configuration.Debug; if (configuration.HomeSystem != null && configuration.HomeSystem.Trim().Length > 0) { HomeStarSystem = StarSystemSqLiteRepository.Instance.GetOrCreateStarSystem(configuration.HomeSystem.Trim()); if (HomeStarSystem != null) { Logging.Debug("Home star system is " + HomeStarSystem.name); if (configuration.HomeStation != null && configuration.HomeStation.Trim().Length > 0) { string homeStationName = configuration.HomeStation.Trim(); foreach (Station station in HomeStarSystem.stations) { if (station.name == homeStationName) { HomeStation = station; Logging.Debug("Home station is " + HomeStation.name); break; } } } } } // Set up the app service if (CompanionAppService.Instance.CurrentState == CompanionAppService.State.READY) { // Carry out initial population of profile try { refreshProfile(); } catch (Exception ex) { Logging.Debug("Failed to obtain profile: " + ex); } } Cmdr.insurance = configuration.Insurance; if (Cmdr.name != null) { Logging.Info("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 Logging.Info("EDDI access to the companion app is disabled"); } // 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 != null && Cmdr.name != null) { commanderName = Cmdr.name; } if (commanderName != null) { starMapService = new StarMapService(starMapCredentials.apiKey, commanderName); Logging.Info("EDDI access to EDSM is enabled"); } } if (starMapService == null) { Logging.Info("EDDI access to EDSM is disabled"); } // We always start in normal space Environment = Constants.ENVIRONMENT_NORMAL_SPACE; // Set up monitors and responders monitors = findMonitors(); responders = findResponders(); // Check for an update string response; try { if (Constants.EDDI_VERSION.Contains("b")) { response = Net.DownloadString("http://api.eddp.co/betaversion"); } else { response = Net.DownloadString("http://api.eddp.co/version"); } if (Versioning.Compare(response, Constants.EDDI_VERSION) == 1) { SpeechService.Instance.Say(null, "EDDI version " + response.Replace(".", " point ") + " is now available.", false); } } catch { SpeechService.Instance.Say(null, "There was a problem connecting to external data services; some features may not work fully", false); } Logging.Info(Constants.EDDI_NAME + " " + Constants.EDDI_VERSION + " initialised"); } catch (Exception ex) { Logging.Error("Failed to initialise", ex); } }
/// <summary>Create a profile given the results from a /profile call</summary> public static Profile ProfileFromJson(JObject json) { Logging.Debug("Entered"); Profile Profile = new Profile(); if (json["commander"] != null) { Commander Commander = new Commander(); Commander.name = (string)json["commander"]["name"]; Commander.combatrating = CombatRating.FromRank((int)json["commander"]["rank"]["combat"]); Commander.traderating = TradeRating.FromRank((int)json["commander"]["rank"]["trade"]); Commander.explorationrating = ExplorationRating.FromRank((int)json["commander"]["rank"]["explore"]); Commander.empirerating = EmpireRating.FromRank((int)json["commander"]["rank"]["empire"]); Commander.federationrating = FederationRating.FromRank((int)json["commander"]["rank"]["federation"]); Commander.credits = (long)json["commander"]["credits"]; Commander.debt = (long)json["commander"]["debt"]; Profile.Cmdr = Commander; string systemName = json["lastSystem"] == null ? null : (string)json["lastSystem"]["name"]; if (systemName != null) { Profile.CurrentStarSystem = StarSystemSqLiteRepository.Instance.GetOrCreateStarSystem(systemName); } Profile.Ship = ShipFromProfile(json["ship"]); Profile.Shipyard = ShipyardFromProfile(json, ref Profile); AugmentShipInfo(Profile.Ship, Profile.Shipyard); if (json["lastStarport"] != null) { Profile.LastStation = Profile.CurrentStarSystem.stations.Find(s => s.name == (string)json["lastStarport"]["name"]); if (Profile.LastStation == null) { // Don't have a station so make one up Profile.LastStation = new Station(); Profile.LastStation.name = (string)json["lastStarport"]["name"]; } Profile.LastStation.systemname = Profile.CurrentStarSystem.name; Profile.LastStation.outfitting = OutfittingFromProfile(json); Profile.LastStation.commodities = CommoditiesFromProfile(json); Profile.LastStation.shipyard = ShipyardFromProfile(json); } } Logging.Debug("Leaving"); return Profile; }
private static void AugmentCmdrInfo(Commander cmdr) { Logging.Debug("Entered"); if (cmdr != null) { CommanderConfiguration cmdrConfiguration = CommanderConfiguration.FromFile(); if (cmdrConfiguration.PhoneticName == null || cmdrConfiguration.PhoneticName.Trim().Length == 0) { cmdr.phoneticname = null; } else { cmdr.phoneticname = cmdrConfiguration.PhoneticName; } } Logging.Debug("Leaving"); }
private static void setCommanderValues(Commander cmdr, ref dynamic vaProxy) { try { vaProxy.SetText("Name", cmdr == null ? null : cmdr.name); vaProxy.SetInt("Combat rating", cmdr == null || cmdr.combatrating == null ? (int?)null : cmdr.combatrating.rank); vaProxy.SetText("Combat rank", cmdr == null || cmdr.combatrating == null ? null : cmdr.combatrating.name); vaProxy.SetInt("Trade rating", cmdr == null || cmdr.traderating == null ? (int?)null : cmdr.traderating.rank); vaProxy.SetText("Trade rank", cmdr == null || cmdr.traderating == null ? null : cmdr.traderating.name); vaProxy.SetInt("Explore rating", cmdr == null || cmdr.explorationrating == null ? (int?)null : cmdr.explorationrating.rank); vaProxy.SetText("Explore rank", cmdr == null || cmdr.explorationrating == null ? null : cmdr.explorationrating.name); vaProxy.SetInt("Empire rating", cmdr == null || cmdr.empirerating == null ? (int?)null : cmdr.empirerating.rank); vaProxy.SetText("Empire rank", cmdr == null || cmdr.empirerating == null ? null : cmdr.empirerating.name); vaProxy.SetInt("Federation rating", cmdr == null || cmdr.federationrating == null ? (int?)null : cmdr.federationrating.rank); vaProxy.SetText("Federation rank", cmdr == null || cmdr.federationrating == null ? null : cmdr.federationrating.name); vaProxy.SetDecimal("Credits", cmdr == null ? (decimal?)null : cmdr.credits); vaProxy.SetText("Credits (spoken)", cmdr == null ? null : Translations.Humanize(cmdr.credits)); vaProxy.SetDecimal("Debt", cmdr == null ? (decimal?)null : cmdr.debt); vaProxy.SetText("Debt (spoken)", cmdr == null ? null : Translations.Humanize(cmdr.debt)); vaProxy.SetText("Title", cmdr == null ? null : cmdr.title); vaProxy.SetDecimal("Insurance", cmdr == null ? null : cmdr.insurance); // Backwards-compatibility with 1.x vaProxy.SetText("System rank", cmdr == null ? null : cmdr.title); setStatus(ref vaProxy, "Operational"); } catch (Exception e) { setStatus(ref vaProxy, "Failed to set commander information", e); } Logging.Debug("Set commander information"); }