public void WithdrawMoney(object obj, WithdrawArgs args)
 {
     Remainder -= args.Money.TotalSum;
     Records.Add(new Record(DateTime.Now, args.RequestedSum, args.Money, args.ResultOfOperation));
     foreach (var variable in args.Money.Banknotes)
     {
         var variable1 = variable;
         foreach (var item in Cassettes.Where(item => item.Banknote.Nominal == variable1.Key.Nominal))
         {
             item.RemoveBanknotes(variable.Value);
         }
     }
     Log.Info("Statistic initialize at");
 }
Exemple #2
0
        private IEnumerable <ICassette> OrderCassetteList(Algorithm algorithm)
        {
            IEnumerable <ICassette> result = Cassettes.OrderByDescending(c => c.Denomination);

            if (algorithm == Algorithm.FavouredDenomination)
            {
                var reorder  = result.ToList();
                var cassette = reorder.Find(x => x.Denomination == GetFavouredDenomination());
                if (cassette != null)
                {
                    reorder.Remove(cassette);
                    reorder[0] = cassette;
                }

                result = reorder.ToList();
            }

            return(result);
        }
Exemple #3
0
        public new void Show()
        {
            // Temporarily set the current save data to the file slot's save data.
            // This enables filtering the areas by the save data's current levelset.
            SaveData prev = SaveData.Instance;

            SaveData.Instance = SaveData;

            LevelSetStats stats = SaveData?.GetLevelSetStats();

            if (stats != null)
            {
                StrawberriesCounter strawbs = Strawberries;
                strawbs.Amount    = stats.TotalStrawberries;
                strawbs.OutOf     = stats.MaxStrawberries;
                strawbs.ShowOutOf = stats.Name != "Celeste" || strawbs.OutOf <= 0;
                strawbs.CanWiggle = false;

                if (stats.Name == "Celeste")
                {
                    // never mess with vanilla.
                    maxStrawberryCount                   = 175;
                    maxGoldenStrawberryCount             = 25; // vanilla is wrong (there are 26 including dashless), but don't mess with vanilla.
                    maxStrawberryCountIncludingUntracked = 202;

                    maxCassettes = 8;
                    maxCrystalHeartsExcludingCSides = 16;
                    maxCrystalHearts = 24;

                    summitStamp   = SaveData.Areas[7].Modes[0].Completed;
                    farewellStamp = SaveData.Areas[10].Modes[0].Completed;
                }
                else
                {
                    // compute the counts for the current level set.
                    maxStrawberryCount                   = stats.MaxStrawberries;
                    maxGoldenStrawberryCount             = stats.MaxGoldenStrawberries;
                    maxStrawberryCountIncludingUntracked = stats.MaxStrawberriesIncludingUntracked;

                    maxCassettes     = stats.MaxCassettes;
                    maxCrystalHearts = stats.MaxHeartGems;
                    maxCrystalHeartsExcludingCSides = stats.MaxHeartGemsExcludingCSides;

                    // summit stamp is displayed if we finished all areas that are not interludes. (TotalCompletions filters interludes out.)
                    summitStamp   = stats.TotalCompletions >= stats.MaxCompletions;
                    farewellStamp = false; // what is supposed to be Farewell in mod campaigns anyway??
                }

                // save the values from the current level set. They will be patched in instead of SaveData.TotalXX.
                totalGoldenStrawberries = stats.TotalGoldenStrawberries; // The value saved on the file is global for all level sets.
                totalHeartGems          = stats.TotalHeartGems;          // this counts from all level sets.
                totalCassettes          = stats.TotalCassettes;          // this relies on SaveData.Instance.

                // redo what is done on the constructor. This keeps the area name and stats up-to-date with the latest area.
                FurthestArea = SaveData.UnlockedAreas;
                Cassettes.Clear();
                HeartGems.Clear();
                foreach (AreaStats areaStats in SaveData.Areas)
                {
                    if (areaStats.ID > SaveData.UnlockedAreas)
                    {
                        break;
                    }

                    if (!AreaData.Areas[areaStats.ID].Interlude && AreaData.Areas[areaStats.ID].CanFullClear)
                    {
                        bool[] hearts = new bool[3];
                        for (int i = 0; i < hearts.Length; i++)
                        {
                            hearts[i] = areaStats.Modes[i].HeartGem;
                        }
                        Cassettes.Add(areaStats.Cassette);
                        HeartGems.Add(hearts);
                    }
                }
            }

            SaveData.Instance = prev;

            orig_Show();
        }
Exemple #4
0
 private Task <decimal> GetBalance()
 {
     return(Task.Run <decimal>(() => { return Cassettes.Sum(c => c.Total); }));
 }