public static Erinn Load(string dataDir, Action <double, string> progress = null) { var e = new Erinn(); Load(dataDir, e, progress); return(e); }
private static void Load(string dataDir, Erinn e, Action <double, string> progress = null) { if (progress == null) { progress = (d, s) => { } } ; var total = 6.0; var done = 0; progress(done / total, "Loading transports..."); e.Transports = new ObservableCollection <Transportation>( JsonConvert.DeserializeObject <List <Transportation> >(File.ReadAllText(Path.Combine(dataDir, "db/transports.json")))); done++; progress(done / total, "Loading modifiers..."); e.Modifiers = new ObservableCollection <Modifier>( JsonConvert.DeserializeObject <List <Modifier> >(File.ReadAllText(Path.Combine(dataDir, "db/modifiers.json")))); done++; progress(done / total, "Loading commerce mastery ranks..."); e.CommerceMasteryRanks = JsonConvert.DeserializeObject <List <CommerceMasteryRank> >(File.ReadAllText(Path.Combine(dataDir, "db/commerce_mastery_ranks.json"))); done++; progress(done / total, "Loading posts..."); e.Posts = new ObservableCollection <TradingPost>( JsonConvert.DeserializeObject <List <TradingPost> >(File.ReadAllText(Path.Combine(dataDir, "db/posts.json")))); done++; progress(done / total, "Loading regions..."); e.Regions = JsonConvert.DeserializeObject <List <Region> >(File.ReadAllText(Path.Combine(dataDir, "db/regions.json"))); done++; progress(done / total, "Loading portals..."); e.Portals = JsonConvert.DeserializeObject <List <Portal> >(File.ReadAllText(Path.Combine(dataDir, "db/portals.json"))); done++; progress(done / total, "Loading merchant levels..."); e.MerchantLevels = JsonConvert.DeserializeObject <List <MerchantLevel> >(File.ReadAllText(Path.Combine(dataDir, "db/merchant_levels.json"))); done++; progress(0, "Initializing data..."); e.Trades = new ObservableCollection <Trade>(); e.World = new AdjacencyGraph <Waypoint, Connection>(); e.CmRank = e.CommerceMasteryRanks.First(); var lowestMerch = e.MerchantLevels.OrderBy(m => m.Level).First(); foreach (var p in e.Posts) { p.MerchantLevel = lowestMerch; } InitializeProfits(e); MapWorld(e, progress); }
private static void InitializeProfits(Erinn e) { foreach (var p in e.Posts) { var otherPosts = e.Posts.Where(x => x != p).ToList(); foreach (var i in p.Items) { foreach (var o in otherPosts) { i.Profits.Add(new Profit(o, 0)); } } } }
private static void MapWorld(Erinn e, Action <double, string> progress) { foreach (var region in e.Regions) { e.World.AddVerticesAndEdgeRange(region.RegionGraph.Edges); } foreach (var portal in e.Portals) { var startRegion = e.Regions.FirstOrDefault(r => r.Id.Equals(portal.StartRegionId, StringComparison.OrdinalIgnoreCase)); var endRegion = e.Regions.FirstOrDefault(r => r.Id.Equals(portal.EndRegionId, StringComparison.OrdinalIgnoreCase)); var startWp = startRegion.Waypoints[portal.StartWaypointId.ToLowerInvariant()]; var endWp = endRegion.Waypoints[portal.EndWaypointId.ToLowerInvariant()]; e.World.AddEdge(new Connection(startWp, endWp, portal.Time)); } foreach (var p in e.Posts) { var region = e.Regions.FirstOrDefault(r => r.Id.Equals(p.WaypointRegion, StringComparison.OrdinalIgnoreCase)); var wp = region.Waypoints[p.WaypointId.ToLowerInvariant()]; p.Waypoint = wp; } double total = e.Posts.Count * (e.Posts.Count - 1); var done = 0; foreach (var p in e.Posts) { foreach (var p2 in e.Posts) { if (p2 == p) { continue; } progress(done / total, "Caching route data..."); e.Route(p.Waypoint, p2.Waypoint); done++; } } }
public MainWindow(Erinn e) { InitializeComponent(); DataContext = Erinn = e; }
private static void MapWorld(Erinn e, Action<double, string> progress) { foreach (var region in e.Regions) e.World.AddVerticesAndEdgeRange(region.RegionGraph.Edges); foreach (var portal in e.Portals) { var startRegion = e.Regions.FirstOrDefault(r => r.Id.Equals(portal.StartRegionId, StringComparison.OrdinalIgnoreCase)); var endRegion = e.Regions.FirstOrDefault(r => r.Id.Equals(portal.EndRegionId, StringComparison.OrdinalIgnoreCase)); var startWp = startRegion.Waypoints[portal.StartWaypointId.ToLowerInvariant()]; var endWp = endRegion.Waypoints[portal.EndWaypointId.ToLowerInvariant()]; e.World.AddEdge(new Connection(startWp, endWp, portal.Time)); } foreach (var p in e.Posts) { var region = e.Regions.FirstOrDefault(r => r.Id.Equals(p.WaypointRegion, StringComparison.OrdinalIgnoreCase)); var wp = region.Waypoints[p.WaypointId.ToLowerInvariant()]; p.Waypoint = wp; } double total = e.Posts.Count * (e.Posts.Count - 1); var done = 0; foreach (var p in e.Posts) { foreach (var p2 in e.Posts) { if (p2 == p) continue; progress(done / total, "Caching route data..."); e.Route(p.Waypoint, p2.Waypoint); done++; } } }
private static void Load(string dataDir, Erinn e, Action<double, string> progress = null) { if (progress == null) progress = (d, s) => { }; var total = 6.0; var done = 0; progress(done / total, "Loading transports..."); e.Transports = new ObservableCollection<Transportation>( JsonConvert.DeserializeObject<List<Transportation>>(File.ReadAllText(Path.Combine(dataDir, "db/transports.json")))); done++; progress(done / total, "Loading modifiers..."); e.Modifiers = new ObservableCollection<Modifier>( JsonConvert.DeserializeObject<List<Modifier>>(File.ReadAllText(Path.Combine(dataDir, "db/modifiers.json")))); done++; progress(done / total, "Loading commerce mastery ranks..."); e.CommerceMasteryRanks = JsonConvert.DeserializeObject<List<CommerceMasteryRank>>(File.ReadAllText(Path.Combine(dataDir, "db/commerce_mastery_ranks.json"))); done++; progress(done / total, "Loading posts..."); e.Posts = new ObservableCollection<TradingPost>( JsonConvert.DeserializeObject<List<TradingPost>>(File.ReadAllText(Path.Combine(dataDir, "db/posts.json")))); done++; progress(done / total, "Loading regions..."); e.Regions = JsonConvert.DeserializeObject<List<Region>>(File.ReadAllText(Path.Combine(dataDir, "db/regions.json"))); done++; progress(done / total, "Loading portals..."); e.Portals = JsonConvert.DeserializeObject<List<Portal>>(File.ReadAllText(Path.Combine(dataDir, "db/portals.json"))); done++; progress(done / total, "Loading merchant levels..."); e.MerchantLevels = JsonConvert.DeserializeObject<List<MerchantLevel>>(File.ReadAllText(Path.Combine(dataDir, "db/merchant_levels.json"))); done++; progress(0, "Initializing data..."); e.Trades = new ObservableCollection<Trade>(); e.World = new AdjacencyGraph<Waypoint, Connection>(); e.CmRank = e.CommerceMasteryRanks.First(); var lowestMerch = e.MerchantLevels.OrderBy(m => m.Level).First(); foreach (var p in e.Posts) p.MerchantLevel = lowestMerch; InitializeProfits(e); MapWorld(e, progress); }
public static Erinn Load(string dataDir, Action<double, string> progress = null) { var e = new Erinn(); Load(dataDir, e, progress); return e; }