using System.Collections.Generic; namespace Barotrauma { internal partial class Wallet { private readonly Queue transactions = new Queue(); partial void SettingsChanged(Option balanceChanged, Option rewardChanged) { transactions.Enqueue(new WalletChangedData { BalanceChanged = balanceChanged, RewardDistributionChanged = rewardChanged }); } public bool HasTransactions() => transactions.Count > 0; public NetWalletTransaction DequeueAndMergeTransactions(ushort id) { Option targetCharacterID = id == Entity.NullEntityID ? Option.None() : Option.Some(id); WalletChangedData changedData = new WalletChangedData { BalanceChanged = Option.None(), RewardDistributionChanged = Option.None() }; while (transactions.TryDequeue(out WalletChangedData transactionOut)) { changedData = changedData.MergeInto(transactionOut); } return new NetWalletTransaction { CharacterID = targetCharacterID, ChangedData = changedData, Info = CreateWalletInfo() }; } } }