public static async Task <HomeIndexViewModel> GetHomeIndexViewModel(TravellerMapService mapService, CharacterBuilder characterBuilder, EquipmentBuilder equipmentBuilder) { var result = new HomeIndexViewModel() { Careers = characterBuilder.Careers, m_AnimalClasses = Animals.AE.AnimalBuilderAE.AnimalClassList.Select(ac => ac.Name).ToList(), m_AnimalTypes = Animals.Mgt.AnimalBuilderMgt.AnimalTypeList.Select(at => at.Name).ToList(), m_Terrains = Animals.AE.AnimalBuilderAE.TerrainTypeList.Select(t => t.Name).ToList(), }; mapService.UniverseUpdated += async(s, e) => result.m_Sectors = await mapService.FetchUniverseAsync(); result.m_Sectors = await mapService.FetchUniverseAsync(); //do this after hooking up the event to avoid race condition. return(result); }
protected async void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); string appDataPath = Server.MapPath("~/app_data"); var filterUnpopulatedSectors = bool.Parse(WebConfigurationManager.AppSettings["FilterUnpopulatedSectors"]); MapService = new TravellerMapService(filterUnpopulatedSectors); TradeEngineMgt = new TradeEngineMgt(MapService, appDataPath); TradeEngineMgt2 = new TradeEngineMgt2(MapService, appDataPath); AnimalBuilderMgt.SetDataPath(appDataPath); AnimalBuilderAE.SetDataPath(appDataPath); CharacterBuilder = new CharacterBuilder(appDataPath); EquipmentBuilder = new EquipmentBuilder(appDataPath); HomeIndexViewModel = HomeIndexViewModel.GetHomeIndexViewModel(MapService, CharacterBuilder, EquipmentBuilder).Result; }