|
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace SUISS.Cloud
- {
- public class FriendRequestRewardController
- {
- public FriendRequestRewardController(ISSPStorageController storageController, IFriendsController friendsController, Dictionary<string, object> playerIndependentStorage)
- {
- this._storageController = storageController;
- this._friendsController = friendsController;
- this._playerIndependentStorage = playerIndependentStorage;
- }
-
- private IDictionary<string, object> CurrentStorage
- {
- get
- {
- if (this._sspStorage == null)
- {
- this._sspStorage = this._storageController.Get("FriendRequestReward_Storage");
- }
- return this._sspStorage.Contents;
- }
- }
-
- private List<object> ClaimedGifts
- {
- get
- {
- if (!this.CurrentStorage.ContainsKey("Claimed_Friend_Rewards") || !(this.CurrentStorage["Claimed_Friend_Rewards"] is List<object>))
- {
- this.CurrentStorage["Claimed_Friend_Rewards"] = new List<object>();
- }
- return (List<object>)this.CurrentStorage["Claimed_Friend_Rewards"];
- }
- }
-
- private List<object> PlayerIndependentClaimedList
- {
- get
- {
- if (!this._playerIndependentStorage.ContainsKey("PlayerIndependentClaimedList") || !(this._playerIndependentStorage["PlayerIndependentClaimedList"] is List<object>))
- {
- this._playerIndependentStorage.Add("PlayerIndependentClaimedList", new List<object>());
- }
- return (List<object>)this._playerIndependentStorage["PlayerIndependentClaimedList"];
- }
- set
- {
- this._playerIndependentStorage["PlayerIndependentClaimedList"] = value;
- }
- }
-
- public CloudRequest<IList<IFriend>, MessageErrors?> ClaimFriendRewards(IList<IFriend> allFriendInvites)
- {
- List<IFriend> list = new List<IFriend>();
- foreach (IFriend friend in allFriendInvites)
- {
- if (this.ClaimedGifts.Count >= 50 || this.PlayerIndependentClaimedList.Count >= 50)
- {
- break;
- }
- if (!this.ClaimedGifts.Contains(friend.AccountUuid) && !this.SentFromSelf(friend.FriendName))
- {
- list.Add(friend);
- this.AddClaimedGift(friend.AccountUuid);
- }
- }
- return new CloudRequest<IList<IFriend>, MessageErrors?>(this.CoClaimFriendRewards(list));
- }
-
- private void AddClaimedGift(string accountUUid)
- {
- this.ClaimedGifts.Add(accountUUid);
- this.PlayerIndependentClaimedList.Add(accountUUid);
- }
-
- private bool SentFromSelf(string inviteFriendName)
- {
- return new List<string>(this._friendsController.Invited).Contains(inviteFriendName);
- }
-
- private IEnumerator CoClaimFriendRewards(List<IFriend> newlyClaimedFriends)
- {
- if (newlyClaimedFriends.Count == 0)
- {
- yield return new YieldResult<IList<IFriend>>(new List<IFriend>());
- }
- if (this._sspStorage == null)
- {
- this._sspStorage = this._storageController.Get("FriendRequestReward_Storage");
- }
- CloudRequest<MessageErrors?> sendCall = this._sspStorage.TrySendToServer();
- yield return sendCall;
- if (sendCall.Error != null)
- {
- this.ClaimedGifts.RemoveAll((object element) => newlyClaimedFriends.Find((IFriend friendEl) => friendEl.AccountUuid == (string)element) != null);
- this.PlayerIndependentClaimedList.RemoveAll((object element) => newlyClaimedFriends.Find((IFriend friendEl) => friendEl.AccountUuid == (string)element) != null);
- yield return new YieldError<MessageErrors?>(new MessageErrors?(MessageErrors.GeneralError));
- }
- yield return new YieldResult<IList<IFriend>>(newlyClaimedFriends);
- yield break;
- }
-
- private const string FriendRequestRewardController_SSPStorageKey = "FriendRequestReward_Storage";
-
- private const string SSP_ClaimedFriendRewardsKey = "Claimed_Friend_Rewards";
-
- private const string ClaimedFriendRewards_MessageType = "FriendRewardCount";
-
- public const int TotalFriendInviteGifts = 50;
-
- public const int DiamondsPerFriendRequest = 5;
-
- private SSPStorage _sspStorage;
-
- private ISSPStorageController _storageController;
-
- private IFriendsController _friendsController;
-
- private Dictionary<string, object> _playerIndependentStorage;
-
- private const string PlayerIndependentClaimedList_Key = "PlayerIndependentClaimedList";
- }
- }
|