/// <summary>
        /// Handles the event raised after items are changed or removed from the Farmer's inventory
        /// </summary>
        /// <param name="sender">The sender of the InventoryChanged event</param>
        /// <param name="args">Event arguments for the InventoryChanged event</param>
        public void OnInventoryChanged(object sender, InventoryChangedEventArgs args)
        {
            // Short circuit if the pockey money hasn't increased
            if (Game1.player.Money <= PersistantFarmerData.PocketMoney)
            {
                return;
            }

            // Calculate all money gained from removed items or items that decreased their stack size
            int totalNewMoney = 0;

            totalNewMoney += ItemValueUtil.CalculateItemCollectionValue(args.Removed, false);
            totalNewMoney += ItemValueUtil.CalculateItemCollectionValue(args.QuantityChanged.Where(i => i.NewSize < i.OldSize), true);

            // Short circuit if the items removed don't have a value
            if (totalNewMoney == 0)
            {
                return;
            }

            // Get the share each player will receive
            int moneyPerPlayer = MoneySplitUtil.GetPerPlayerShare(totalNewMoney);

            // Correct the local player's money because they earned everyone's share
            MoneySplitUtil.CorrectLocalPlayer(totalNewMoney, moneyPerPlayer);

            // Tell all the other farmers to update their money too
            MoneyMessenger moneyMessenger = new MoneyMessenger();

            moneyMessenger.SendWalletNotification(moneyPerPlayer);
        }
        /// <summary>
        /// Corrects the local Farmer's money before the save begins to occur
        /// Also forces the game to handle any messages that have not been handled
        /// </summary>
        /// <param name="sender">The sender of the Saving event</param>
        /// <param name="args">Event arguments for the Saving event</param>
        public void OnSavingHandler(object sender, SavingEventArgs args)
        {
            EqualMoneyMod.Logger.Log($"Saving | {Game1.player.Name} has {Game1.player.Money} money");

            // Correct the local player's money after they sent their mod messages out
            MoneySplitUtil.CorrectLocalPlayer(PersistantFarmerData.PersonalShippingBinsMoney, PersistantFarmerData.ShareToSend);

            // Force the listener to check for unhandled messages
            MoneyListener.Instance.CheckForNewMessages();
        }
Example #3
0
        /// <summary>
        /// Calculates the shipping bin money before the day begins to end and
        /// sends the split share of that value after this function but before the day begins to end
        /// </summary>
        /// <param name="sender">The sender of the DayEndingEvent event</param>
        /// <param name="args">Event arguments for the DayEndingEvent event</param>
        public void OnDayEndingHandler(object sender, DayEndingEventArgs args)
        {
            EqualMoneyMod.Logger.Log($"DayEnding | {Game1.player.Name} has {Game1.player.Money} money");

            // Calculate all money that will be earned from the shipping bin
            PersistantFarmerData.ShippingBinMoney = ItemValueUtil.CalculateItemCollectionValue(Game1.player.personalShippingBin);
            PersistantFarmerData.ShareToSend      = MoneySplitUtil.GetPerPlayerShare(PersistantFarmerData.ShippingBinMoney);

            // Only send a notification if money has been earned
            if (PersistantFarmerData.ShareToSend != 0)
            {
                MoneyMessenger moneyMessenger = new MoneyMessenger();
                moneyMessenger.SendShippingBinNotification(PersistantFarmerData.ShareToSend);
            }
        }