Example #1
0
        public static Erinn Load(string dataDir, Action <double, string> progress = null)
        {
            var e = new Erinn();

            Load(dataDir, e, progress);

            return(e);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
                    }
                }
            }
        }
Example #4
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;
        }
Example #6
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++;
                }
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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));
                    }
                }
            }
        }
Example #9
0
        public static Erinn Load(string dataDir, Action<double, string> progress = null)
        {
            var e = new Erinn();

            Load(dataDir, e, progress);

            return e;
        }