コード例 #1
0
        internal static List <Item> GetItemsToRecover()
        {
            if (_itemsToRecover.Value == null)
            {
                Dictionary <ISalable, int[]> adventureRecoveryStock = Utility.getAdventureRecoveryStock();

                int    money  = Game1.player.Money;
                Random random = new Random((int)((long)Game1.uniqueIDForThisGame + Game1.stats.DaysPlayed * Game1.stats.DaysPlayed));

                List <Item> itemsToRecover = new List <Item>();
                while (adventureRecoveryStock.Count > 0)
                {
                    KeyValuePair <ISalable, int[]> itemAndValue = adventureRecoveryStock.ToList()[Game1.random.Next(0, adventureRecoveryStock.Count)];
                    adventureRecoveryStock.Remove(itemAndValue.Key);
                    RecoveryConfig recoveryConfig = DataLoader.GetRecoveryConfig(Game1.player);
                    if (itemAndValue.Value[0] <= money || recoveryConfig.RecoverForFree)
                    {
                        money -= itemAndValue.Value[0];
                        itemsToRecover.Add((Item)itemAndValue.Key);
                        if (!recoveryConfig.RecoverAllItems)
                        {
                            break;
                        }
                    }
                }
                if (itemsToRecover.Count > 0)
                {
                    _itemsToRecover.Value = itemsToRecover;
                }
            }
            return(_itemsToRecover.Value);
        }
コード例 #2
0
        public static void SaveRecoveryConfig(Farmer player, bool enableRecoveryService, bool?recoveryAllItems = null, bool?recoveryForFree = null)
        {
            RecoveryConfig recoveryConfig = GetRecoveryConfig(player);

            if (!recoveryConfig.DisableRecoveryConfigInGameChanges)
            {
                recoveryConfig.EnableRecoveryService = enableRecoveryService;
                recoveryConfig.RecoverAllItems       = recoveryAllItems ?? recoveryConfig.RecoverAllItems;
                recoveryConfig.RecoverForFree        = recoveryForFree ?? recoveryConfig.RecoverForFree;
                Helper.WriteConfig <ModConfig>(DataLoader.ModConfig);
            }
        }
コード例 #3
0
        /// <summary>
        /// To call when the items were recovered.
        /// Charge the player and clear the lost items list if needed.
        /// </summary>
        public static void ItemsRecovered()
        {
            Dictionary <ISalable, int[]> adventureRecoveryStock = Utility.getAdventureRecoveryStock();
            RecoveryConfig recoveryConfig = DataLoader.GetRecoveryConfig(Game1.player);

            _itemsToRecover.Value.ForEach(item =>
            {
                if (!recoveryConfig.RecoverForFree)
                {
                    ShopMenu.chargePlayer(Game1.player, 0, adventureRecoveryStock[item][0]);
                }
                Game1.player.itemsLostLastDeath.Remove(item);
            });
            if (!recoveryConfig.DisableClearLostItemsOnRandomRecovery && !recoveryConfig.RecoverAllItems)
            {
                Game1.player.itemsLostLastDeath.Clear();
            }
            _itemsToRecover.Value = null;
        }