public Crest() { Players = new Players(); Inventory = new Inventory(); Map = new Map(); Dogma = new Dogma(); Killmails = new Killmails(); Wars = new Wars(); Market = new Market(); WEBSERVER.Authenticated += WebserverOnAuthenticated; }
private void InitViewModel(ICrestType shipType, ICrestKillmail killMail) { _fittingViewModel = new FittingViewModel(); _fittingViewModel.Ship = new TypeViewModel(killMail.Victim.ShipType) { Icon = $"https://image.eveonline.com/Render/{shipType.Id}_{256}.png" }; DataContext = _fittingViewModel; var priceModel = new PriceViewModel(); Prices.DataContext = priceModel; Task.Factory.StartNew( () => { Parallel.ForEach(killMail.Victim.Items, AssignToSlot); var fittingModel = Fitting.FromCrestKillmail("", "", killMail); Task.Factory.StartNew( () => { try { var market = new Market(App.CREST); var jitaPrices = market.GetPricesForTypeIdsInSystem( EveConstants.THE_FORGE_ID, "Jita IV", fittingModel); var slots = _fittingViewModel.HighSlots.Slots.Concat(_fittingViewModel.MediumSlots.Slots) .Concat(_fittingViewModel.LowSlots.Slots) .Concat(_fittingViewModel.RigSlots.Slots) .Concat(_fittingViewModel.SubSystemSlots.Slots) .Concat(new[] { _fittingViewModel.Ship }) .Where(x => x?.Type != null) .ToArray(); foreach (var curModel in slots) { double curPrice; curModel.Price = (jitaPrices.TryGetValue(curModel.Type.Id, out curPrice) ? curPrice : 0.0) .ToStringInIskFormat(); } priceModel.JitaPrice = GetPriceInSystem(slots, jitaPrices); var amarrPrices = market.GetPricesForTypeIdsInSystem( EveConstants.DOMAIN_ID, "Amarr", fittingModel); priceModel.AmarrPrice = GetPriceInSystem(slots, amarrPrices); var dodixiePrices = market.GetPricesForTypeIdsInSystem( EveConstants.SINQ_LAISON_ID, "Dodixie", fittingModel); priceModel.DodixiePrice = GetPriceInSystem(slots, dodixiePrices); var hekPrices = market.GetPricesForTypeIdsInSystem( EveConstants.METROPOLIS_ID, "Hek", fittingModel); priceModel.HekPrice = GetPriceInSystem(slots, hekPrices); var rensPrices = market.GetPricesForTypeIdsInSystem( EveConstants.HEIMATAR_ID, "Rens", fittingModel); priceModel.RensPrice = GetPriceInSystem(slots, rensPrices); } catch (Exception e) { Log.Logger.Warning(e, "Error in loading market data"); //TODO messagebox? statusline? } }, TaskCreationOptions.LongRunning) .ConfigureAwait(false); Task.Factory.StartNew( async () => { try { CharacterDisplay.SetFitting(fittingModel); var shipContext = await App.FittingService.CreatContextFromFittingAsync(fittingModel); Application.Current.Dispatcher.Invoke(() => FittingDisplay.ShowShip(shipContext)); } catch (Exception e) { Log.Logger.Warning(e, "Error in loading of fit"); //TODO sollte hier ne messagebox aufgehen? } }, TaskCreationOptions.LongRunning) .ConfigureAwait(false); }); }