public MainViewModel(IEnumerable <SavedRoute> savedRoutes) { _hexMap = MapHelper.Generate(19); Tiles = new BindingList <MapTile>(_hexMap.Tiles.SelectMany(row => row.Where(col => col != null)).ToList()); RouteManagementViewModel = new RouteManagementViewModel(Tiles, savedRoutes); RouteManagementViewModel.AverageFoodPerSecondChanged += RouteManagementViewModel_AverageFoodPerSecondChanged; Tiles.ListChanged += Tiles_ListChanged; UpdateRoute(0); }
public void UpdateInfo(IEnumerable <MapTile> selectedMapTiles, RouteManagementViewModel rmVm) { int nSelected = 0; int forests = 0; //double prestige = 1; double food = 1; double foodCart = 1; double wood = 1; double woodCart = 1; double science = 1; double scienceCart = 1; double foragingHuts = 1; foreach (var hexItem in selectedMapTiles) { nSelected++; if (hexItem.TileType == TileType.Forest) { forests++; } var shrine = hexItem as ShrineTile; if (shrine == null) { continue; } //prestige *= shrine.PrestigeMultiplier; food *= shrine.FoodMultiplier; foodCart *= shrine.FoodCartMultiplier; wood *= shrine.WoodMultiplier; woodCart *= shrine.WoodCartMultiplier; science *= shrine.ScienceMultiplier; foragingHuts *= shrine.FoodMultiplier * shrine.ForagingHutMultiplier; var aMultiplier = shrine.AllCartMultiplier; if (aMultiplier > 1) { foodCart *= aMultiplier; woodCart *= aMultiplier; scienceCart *= aMultiplier; } } var tileCosts = TileCostHelper.Values(nSelected + 2); var nextTileCost = tileCosts[tileCosts.Count - 1]; var totalTileCost = tileCosts.Sum() - nextTileCost; //var prestigeOnReset = nSelected - 9 > 0 ? (nSelected - 9) * prestige : 0; NextTileCostText = (nSelected + 1 < TileCostHelper.KnownValues.Length ? "" : "~") + NumberFormatter.FormatNumber(nextTileCost); TileCostTotalText = (nSelected < TileCostHelper.KnownValues.Length ? "" : "~") + NumberFormatter.FormatNumber(totalTileCost); SelectedTilesText = nSelected.ToString(); SelectedForestsText = forests.ToString(); //PrestigeMultiplierText = NumberFormatter.FormatNumber(prestige); //PrestigeTotalText = NumberFormatter.FormatNumber(prestigeOnReset); FoodMultiplierText = NumberFormatter.FormatNumber(food); FoodCartMultiplierText = NumberFormatter.FormatNumber(foodCart); WoodMultiplierText = NumberFormatter.FormatNumber(wood); WoodCartMultiplierText = NumberFormatter.FormatNumber(woodCart); ScienceMultiplierText = NumberFormatter.FormatNumber(science); ScienceCartMultiplierText = NumberFormatter.FormatNumber(scienceCart); ForagingHutMultiplierText = NumberFormatter.FormatNumber(foragingHuts); //var averageFoodPerSecond = NumberFormatter.UnformatNumber(rmVm.AverageFoodPerSecondText); //var estimateTimeInSeconds = (totalTileCost / averageFoodPerSecond) / 2; // divide by 2 assumed always double production //if (double.IsNaN(estimateTimeInSeconds) || estimateTimeInSeconds > 3153600000) //{ // EstimatedTimeText = "\u221E"; // infinity // PrestigePerSecondText = $"0"; //} //else //{ // var estimateTimeSpan = TimeSpan.FromSeconds(estimateTimeInSeconds); // if (estimateTimeSpan.Days > 0) // { // EstimatedTimeText = $"{estimateTimeSpan.Days}:{estimateTimeSpan:hh\\:mm} Days"; // } // else if (estimateTimeSpan.Hours > 0) // { // EstimatedTimeText = $"{estimateTimeSpan:hh\\:mm} Hours"; // } // else // { // EstimatedTimeText = $"{estimateTimeSpan:mm\\:ss} Mins"; // } // //var prestigePerSecond = prestigeOnReset / estimateTimeInSeconds; // //PrestigePerSecondText = NumberFormatter.FormatNumber(prestigePerSecond); //} //if (Math.Min(food, foodCart) != _previousLowestFoodMultiplier) //{ // averageFoodPerSecond *= Math.Min(food, foodCart) / _previousLowestFoodMultiplier; // _previousLowestFoodMultiplier = Math.Min(food, foodCart); // rmVm.AverageFoodPerSecondText = NumberFormatter.FormatNumber(averageFoodPerSecond); //} }
private void UpdateRoute(int newIndex) { RouteInfoViewModel.UpdateInfo(Tiles.Where(o => o.IsSelected), RouteManagementViewModel); SelectedTileInfoViewModel.ChangeSelectedInfo(Tiles[newIndex]); RouteManagementViewModel.UpdateCurrentSavedRoute(); }