public void SaySystem(EliteSystem es) { string str = es.Name + ", Allegiance "; if (es.Allegiance.Equals("")) { str += "Unknown"; } else { str += es.Allegiance; } str += ", Controlling Faction "; if (es.Faction.Equals("")) { str += "Unknown"; } else { str += es.Faction; } str += ", Population "; if (es.Faction.Equals("")) { str += "Unknown"; } else { str += es.Population; } Say(str); }
public void AerSetSystem_Handler(AerRecognitionResult result) { if (result.System != null) { LocalSystem = result.System; } }
private EliteStation _FindClosestStation(List <EliteStation> inThese, EliteSystem origin) { EliteStation closest = null; double closestDistance = 1000000; //Infinite foreach (EliteStation es in inThese) { double thisDistance = DistanceSqr(es.System, origin); if (thisDistance <= closestDistance) { //If the two stations are in the same system, choose the one closest to the star if ((closest != null) && (es.System.id == closest.System.id)) { if (es.DistanceFromStar < closest.DistanceFromStar) { closest = es; closestDistance = thisDistance; } } else { closest = es; closestDistance = thisDistance; } } } return(closest); }
public double DistanceSqr(EliteSystem es1, EliteSystem es2) { float x = es1.x - es2.x; float y = es1.y - es2.y; float z = es1.z - es2.z; return(Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)); }
public List <EliteSystem> GetSystemsAround(EliteSystem origin, float distance) { float distanceSqr = distance * distance; var SystemsInRange = from system in _SystemRegistry.Values where DistanceSqr(system, origin) < distanceSqr select system; return(SystemsInRange.ToList <EliteSystem>()); }
public EliteSystem FindClosestAllegiance(string Allegiance, EliteSystem origin) { List <EliteSystem> nearbySystems = _GetSystemsAround(origin, 500); var validSystems = from system in nearbySystems where (system.Allegiance.ToLower().Equals(Allegiance.ToLower())) select system; return(_FindClosestSystem(validSystems.ToList(), origin)); }
public void SetLocalSystem_Handler(AerRecognitionResult result) { if (result.System != null) { _Talk.SaySetSystem(result.System); LocalSystem = result.System; } else { _Talk.RandomUnknownAck(); } }
public EliteStation FindClosestBlackMarket(EliteSystem origin) { List <EliteSystem> nearbySystems = _GetSystemsAround(origin, 500); List <EliteStation> stationsWithBlackMarket = new List <EliteStation>();; foreach (EliteSystem sys in nearbySystems) { var validStations = from stations in sys.Stations where (stations.HasBlackmarket == true) select stations; stationsWithBlackMarket.AddRange(validStations); } return(_FindClosestStation(stationsWithBlackMarket, origin)); }
private EliteSystem _FindClosestSystem(List <EliteSystem> inThese, EliteSystem origin) { double closestDistance = 1000000; //Infinite EliteSystem closest = null; foreach (EliteSystem es in inThese) { double thisDistance = DistanceSqr(es, origin); if (thisDistance <= closestDistance) { closest = es; closestDistance = thisDistance; } } return(closest); }
public EliteStation FindCommodity(int commodity_id, EliteSystem origin, float distance) { List <EliteSystem> nearbySystems = _GetSystemsAround(origin, distance); List <EliteStation> stationsWithCommodity = new List <EliteStation>();; foreach (EliteSystem sys in nearbySystems) { var validStations = from stations in sys.Stations from listing in stations.Listings where ((listing.Commodity.id == commodity_id) && (listing.Supply > 0) && ((listing.SellPrice > 0))) select stations; stationsWithCommodity.AddRange(validStations); } return(_FindClosestStation(stationsWithCommodity, origin)); }
public EliteStation FindCommodity(int commodity_id, EliteSystem origin, float distance) { List <EliteSystem> nearbySystems = GetSystemsAround(origin, distance); EliteStation closest = null; List <EliteStation> stationsWithCommodity = new List <EliteStation>();; foreach (EliteSystem sys in nearbySystems) { var validStations = from stations in sys.Stations from listing in stations.Listings where ((listing.Commodity.id == commodity_id) && (listing.Supply > 0) && ((listing.SellPrice > 0))) select stations; stationsWithCommodity.AddRange(validStations); } double closestDistance = 1000000; //Infinite foreach (EliteStation es in stationsWithCommodity) { double thisDistance = DistanceSqr(es.System, origin); if (thisDistance <= closestDistance) { //If the two stations are in the same system, choose the one closest to the star if ((closest != null) && (es.System.id == closest.System.id)) { if (es.DistanceFromStar < closest.DistanceFromStar) { closest = es; closestDistance = thisDistance; } } else { closest = es; closestDistance = thisDistance; } } } return(closest); }
public void AllegianceDistance_Handler(AerRecognitionResult result) { if (LocalSystem == null) { _Talk.SayUnknownLocation(); } else { EliteSystem es = _Data.FindClosestAllegiance(result.Data, LocalSystem); if (es != null) { LastSystem = es; _Talk.SayAndSpell(es.Name); } else { _Talk.RandomUnknownAck(); } } }
public void FindCommodity_Handler(AerRecognitionResult result) { if (LocalSystem != null) { EliteStation est = _Eddb.FindCommodity(result.Commodity.id, LocalSystem, 250); if (est != null) { _Talk.SayFoundCommodity(result.Commodity, est); _LastStation = est; _LastSystem = est.System; } else { _Talk.SayCannotFindCommodity(result.Commodity); } } else { _Talk.SayUnknownLocation(); } }
//This is getting out of hand for the AerDB file, perhaps a static AerJSON should be created // As a container for all of these darn utility methods //TODO: Make AerEddb or AerJSON and create an interface between AerDB and it. -SingularTier //WARNING: THE CODE IN THE JSON PARSING REGION WILL MAKE YOU VOMIT. #region JSON Parsing /// <summary> /// Populates the System Registry with data from the eddb json string /// </summary> /// <param name="json">Json string of EDDB systems.json data</param> private void _ParseSystems(string json) { AerDebug.Log("Loading Systems..."); Stopwatch timer = new Stopwatch(); timer.Start(); JArray ja = JArray.Parse(json); foreach (JObject jo in ja) { try { EliteSystem es = new EliteSystem(); es.Name = jo["name"].ToString(); es.id = int.Parse(jo["id"].ToString()); es.x = float.Parse(jo["x"].ToString()); es.y = float.Parse(jo["y"].ToString()); es.z = float.Parse(jo["z"].ToString()); es.Faction = jo["faction"].ToString(); es.Population = jo["population"].ToString(); es.Government = jo["government"].ToString(); es.Allegiance = jo["allegiance"].ToString(); es.State = jo["state"].ToString(); es.Security = jo["security"].ToString(); es.PrimaryEconomy = jo["primary_economy"].ToString(); string permit = jo["needs_permit"].ToString(); es.PermitRequired = permit.Equals("1"); _SystemRegistry.Add(es.id, es); _SystemNameRegistry.Add(es.Name.ToLower(), es.id); } catch (FormatException e) { AerDebug.LogError("Malformed/Unexpected System JSON data, " + e.Message); } } timer.Stop(); }
public EliteStation GetStation(EliteSystem es, string stationName) { List <EliteStation> matchingStations; var est = from station in es.Stations where station.Name.Equals(stationName) select station; matchingStations = est.ToList <EliteStation>(); if (matchingStations.Count > 1) { AerDebug.LogError(@"Found " + matchingStations.Count + " stations with the name '" + stationName + "' in system '" + es.Name + "'"); } if (matchingStations.Count > 0) { return(matchingStations[0]); } else { return(null); } }
public void SaySetSystem(EliteSystem es) { Say("Setting Current System to " + es.Name); }
public void SaySystem(EliteSystem es) { string str = es.Name + ", Allegiance "; if(es.Allegiance.Equals("")) { str+= "Unknown"; } else { str += es.Allegiance; } str += ", Controlling Faction "; if (es.Faction.Equals("")) { str += "Unknown"; } else { str += es.Faction; } str += ", Population "; if (es.Faction.Equals("")) { str += "Unknown"; } else { str += es.Population; } Say(str); }
private List<EliteSystem> _GetSystemsAround(EliteSystem origin, float distance) { float distanceSqr = distance * distance; var SystemsInRange = from system in _SystemRegistry.Values where DistanceSqr(system, origin) < distanceSqr select system; return SystemsInRange.ToList<EliteSystem>(); }
private EliteStation _FindClosestStation(List<EliteStation> inThese, EliteSystem origin) { EliteStation closest = null; double closestDistance = 1000000; //Infinite foreach (EliteStation es in inThese) { double thisDistance = DistanceSqr(es.System, origin); if (thisDistance <= closestDistance) { //If the two stations are in the same system, choose the one closest to the star if ((closest != null) && (es.System.id == closest.System.id)) { if (es.DistanceFromStar < closest.DistanceFromStar) { closest = es; closestDistance = thisDistance; } } else { closest = es; closestDistance = thisDistance; } } } return closest; }
public AerRecognitionResult BuildAerRecognition(RecognitionResult input) { int numberOfSemantics = 0; AerRecognitionResult output = new AerRecognitionResult(); output.Confidence = input.Confidence; try { if (input.Semantics.ContainsKey("Command") && input.Semantics["Command"] != null) { output.Command = input.Semantics["Command"].Value.ToString(); numberOfSemantics++; } if (input.Semantics.ContainsKey("Data") && input.Semantics["Data"] != null) { output.Data = input.Semantics["Data"].Value.ToString(); numberOfSemantics++; } if (input.Semantics.ContainsKey("CommodityId") && input.Semantics["CommodityId"] != null) { int commodityId = int.Parse(input.Semantics["CommodityId"].Value.ToString()); output.Commodity = _Eddb.GetCommodity(commodityId); numberOfSemantics++; } if (input.Semantics.ContainsKey("SystemName") && input.Semantics["SystemName"] != null) { string systemName = input.Semantics["SystemName"].Value.ToString(); if (systemName.Equals("__last__")) { output.System = _LastSystem; } else { if (systemName.Equals("__local__")) { output.System = LocalSystem; } else { output.System = _Eddb.GetSystem(systemName); } } _LastSystem = output.System; numberOfSemantics++; } if (input.Semantics.ContainsKey("FromSystem") && input.Semantics["FromSystem"] != null) { string systemName = input.Semantics["FromSystem"].Value.ToString(); if (systemName.Equals("__last__")) { output.FromSystem = _LastSystem; } else { if (systemName.Equals("__local__")) { output.FromSystem = LocalSystem; } else { output.FromSystem = _Eddb.GetSystem(systemName); } } numberOfSemantics++; } if (input.Semantics.ContainsKey("ToSystem") && input.Semantics["ToSystem"] != null) { string systemName = input.Semantics["ToSystem"].Value.ToString(); if (systemName.Equals("__last__")) { output.ToSystem = _LastSystem; } else { if (systemName.Equals("__local__")) { output.ToSystem = LocalSystem; } else { output.ToSystem = _Eddb.GetSystem(systemName); } } numberOfSemantics++; } if (input.Semantics.ContainsKey("StationName") && input.Semantics["StationName"] != null) { string station = input.Semantics["StationName"].Value.ToString(); if (station.Equals("__last__")) { output.Station = _LastStation; } if (output.System != null) { output.Station = _Eddb.GetStation(output.System, station); _LastStation = output.Station; } numberOfSemantics++; } } catch (Exception e) { AerDebug.LogError("Could not parse grammar semantics, " + e.Message); AerDebug.LogException(e); } output.RequiredConfidence = 0.92f - 0.02 * (numberOfSemantics * numberOfSemantics); return(output); }
public EliteStation FindClosestBlackMarket(EliteSystem origin) { List<EliteSystem> nearbySystems = _GetSystemsAround(origin, 500); List<EliteStation> stationsWithBlackMarket = new List<EliteStation>(); ; foreach (EliteSystem sys in nearbySystems) { var validStations = from stations in sys.Stations where (stations.HasBlackmarket == true) select stations; stationsWithBlackMarket.AddRange(validStations); } return _FindClosestStation(stationsWithBlackMarket, origin); }
public EliteStation GetStation(EliteSystem es, string stationName) { List<EliteStation> matchingStations; var est = from station in es.Stations where station.Name.Equals(stationName) select station; matchingStations = est.ToList<EliteStation>(); if (matchingStations.Count > 1) { AerDebug.LogError(@"Found " + matchingStations.Count +" stations with the name '" + stationName + "' in system '" + es.Name + "'"); } if (matchingStations.Count > 0) return matchingStations[0]; else return null; }
public double DistanceSqr(EliteSystem es1, EliteSystem es2) { float x = es1.x - es2.x; float y = es1.y - es2.y; float z = es1.z - es2.z; return (Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)); }
public void SetLocalSystem_Handler(AerRecognitionResult result) { if (result.System != null) { _Talk.SaySetSystem(result.System); LocalSystem = result.System; } else _Talk.RandomUnknownAck(); }
public void SaySelectSystem(EliteSystem es) { this.Say("Selected " + es.Name); }
public void FindCommodity_Handler(AerRecognitionResult result) { if (LocalSystem != null) { EliteStation est = _Data.FindCommodity(result.Commodity.id, LocalSystem, 250); if (est != null) { _Talk.SayFoundCommodity(result.Commodity, est); LastStation = est; LastSystem = est.System; } else _Talk.SayCannotFindCommodity(result.Commodity); } else _Talk.SayUnknownLocation(); }
public EliteSystem FindClosestAllegiance(string Allegiance, EliteSystem origin) { List<EliteSystem> nearbySystems = _GetSystemsAround(origin, 500); var validSystems = from system in nearbySystems where(system.Allegiance.ToLower().Equals(Allegiance.ToLower())) select system; return _FindClosestSystem(validSystems.ToList(), origin); }
public void AllegianceDistance_Handler(AerRecognitionResult result) { if (LocalSystem == null) _Talk.SayUnknownLocation(); else { EliteSystem es = _Data.FindClosestAllegiance(result.Data, LocalSystem); if (es != null) { LastSystem = es; _Talk.SayAndSpell(es.Name); } else { _Talk.RandomUnknownAck(); } } }
public EliteStation FindCommodity(int commodity_id, EliteSystem origin, float distance) { List<EliteSystem> nearbySystems = _GetSystemsAround(origin, distance); List<EliteStation> stationsWithCommodity = new List<EliteStation>(); ; foreach(EliteSystem sys in nearbySystems) { var validStations = from stations in sys.Stations from listing in stations.Listings where ((listing.Commodity.id == commodity_id) && (listing.Supply > 0) && ((listing.SellPrice > 0))) select stations; stationsWithCommodity.AddRange(validStations); } return _FindClosestStation(stationsWithCommodity, origin); }
//This is getting out of hand for the AerDB file, perhaps a AerJSON should be created // As a container for all of these darn utility methods //TODO: Make AerEddb or AerJSON and create an interface between AerDB and it. -SingularTier //WARNING: THE CODE IN THE JSON PARSING REGION WILL MAKE YOU VOMIT. #region JSON Parsing /// <summary> /// Populates the System Registry with data from the eddb json string /// </summary> /// <param name="json">Json string of EDDB systems.json data</param> private void _ParseSystems(string json) { AerDebug.Log("Loading Systems..."); Stopwatch timer = new Stopwatch(); timer.Start(); JArray ja = JArray.Parse(json); foreach (JObject jo in ja) { try { EliteSystem es = new EliteSystem(); es.Name = jo["name"].ToString(); es.id = int.Parse(jo["id"].ToString()); es.x = float.Parse(jo["x"].ToString()); es.y = float.Parse(jo["y"].ToString()); es.z = float.Parse(jo["z"].ToString()); es.Faction = jo["faction"].ToString(); es.Population = jo["population"].ToString(); es.Government = jo["government"].ToString(); es.Allegiance = jo["allegiance"].ToString(); es.State = jo["state"].ToString(); es.Security = jo["security"].ToString(); es.PrimaryEconomy = jo["primary_economy"].ToString(); string permit = jo["needs_permit"].ToString(); es.PermitRequired = permit.Equals("1"); _SystemRegistry.Add(es.id, es); _SystemNameRegistry.Add(es.Name.ToLower(), es.id); } catch (FormatException e) { AerDebug.LogError("Malformed/Unexpected System JSON data, " + e.Message); } } timer.Stop(); }
private EliteSystem _FindClosestSystem(List<EliteSystem> inThese, EliteSystem origin) { double closestDistance = 1000000; //Infinite EliteSystem closest = null; foreach (EliteSystem es in inThese) { double thisDistance = DistanceSqr(es, origin); if (thisDistance <= closestDistance) { closest = es; closestDistance = thisDistance; } } return closest; }