Example #1
0
 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);
 }
Example #2
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);
            //}
        }
Example #3
0
 private void UpdateRoute(int newIndex)
 {
     RouteInfoViewModel.UpdateInfo(Tiles.Where(o => o.IsSelected), RouteManagementViewModel);
     SelectedTileInfoViewModel.ChangeSelectedInfo(Tiles[newIndex]);
     RouteManagementViewModel.UpdateCurrentSavedRoute();
 }