Exemplo n.º 1
0
        public ComplitionPromise <LeaderBoardUser[]> ResolveLeaderBoardUsers()
        {
            if (!ServiceLocator.Resolve <IUserManagementService>().IsRegistered)
            {
                throw new Exception("Leaderboard can only be resolve for registered users");
            }
            ComplitionDeferred <LeaderBoardUser[]> deferred = new ComplitionDeferred <LeaderBoardUser[]>();

            ServiceLocator.Resolve <IUserManagementService>().FullUpdate().Then(() =>
            {
                ServiceLocator.Resolve <IServerService>().Call <LeaderboardData>("GetLeaderboard").Then(data =>
                {
                    List <LeaderBoardUser> leaderBoardUsers = new List <LeaderBoardUser>();
                    string username = ServiceLocator.Resolve <IUserManagementService>().Username;
                    for (int i = 0; i < data.TopPlayers.Length; i++)
                    {
                        leaderBoardUsers.Add(new LeaderBoardUser
                        {
                            UserName      = data.TopPlayers[i].UserName,
                            Score         = data.TopPlayers[i].Score,
                            Rank          = i,
                            IsCurrentUser = string.Equals(data.TopPlayers[i].UserName, username)
                        });
                    }

                    int userRankStartRank = data.Rank -
                                            data.UserRank.ToList().FindIndex(user => string.Equals(user.UserName, username));
                    for (int i = 0; i < data.UserRank.Length; i++)
                    {
                        if (!leaderBoardUsers.Any(user => string.Equals(user.UserName, data.UserRank[i].UserName)))
                        {
                            leaderBoardUsers.Add(new LeaderBoardUser
                            {
                                UserName      = data.UserRank[i].UserName,
                                Score         = data.UserRank[i].Score,
                                Rank          = userRankStartRank + i,
                                IsCurrentUser = string.Equals(data.UserRank[i].UserName, username)
                            });
                        }
                    }
                    leaderBoardUsers.Sort((user, boardUser) => user.Score.CompareTo(boardUser.Rank));
                    deferred.Resolve(leaderBoardUsers.ToArray());
                }, () => deferred.Reject());
            }, () => deferred.Reject());
            return(deferred.Promise());
        }
Exemplo n.º 2
0
        public ComplitionPromise <T> CallTokenFull <T>(string functionName, object requestBody)
        {
            ComplitionDeferred <T> deferred = new ComplitionDeferred <T>();

            Call <string>("GetToken", null).Then(token =>
            {
                int[] tokens = GetTokens();

                Call <T>(functionName,
                         new TokenFullData
                {
                    Data   = requestBody,
                    Tokens =
                        new Guid(token).ToByteArray()
                        .Select(b => (int)b)
                        .Select((i, index) => i ^ tokens[index])
                        .ToArray()
                }).Then(obj => deferred.Resolve(obj), () => deferred.Reject());
            }, () => deferred.Reject());
            return(deferred.Promise());
        }
Exemplo n.º 3
0
        public ComplitionPromise <T> Call <T>(string functionName, object requestBody)
        {
            ComplitionDeferred <T> deferred = new ComplitionDeferred <T>();

            InfoResolver.Resolve <FortInfo>().ServerConnectionProvider.UserConnection.Call <T>(functionName, requestBody).Then(obj => deferred.Resolve(obj),
                                                                                                                               error =>
            {
                if (error.ErrorType == CallErrorType.UnAuthorize)
                {
                    if (!ServiceLocator.Resolve <IUserManagementService>().IsRegistered)
                    {
                        deferred.Reject();
                    }
                    else
                    {
                        if (
                            !InfoResolver.Resolve <FortInfo>()
                            .ServerConnectionProvider.UserConnection.IsReloginCapable())
                        {
                            deferred.Reject();
                        }
                        else
                        {
                            InfoResolver.Resolve <FortInfo>().ServerConnectionProvider.UserConnection.Relogin().Then(
                                () =>
                            {
                                InfoResolver.Resolve <FortInfo>()
                                .ServerConnectionProvider.UserConnection.Call <T>(functionName, requestBody)
                                .Then(obj => deferred.Resolve(obj), callError => deferred.Reject());
                            }, () => deferred.Reject());
                        }
                    }
                }
            });

            return(deferred.Promise());
        }
        public static ComplitionPromise <IapPackageInfo[]> ResolvePackages <T>(this IStoreService storeService) where T : IapPackageInfo
        {
            ComplitionDeferred <IapPackageInfo[]> deferred = new ComplitionDeferred <IapPackageInfo[]>();

            storeService.ResolvePackages().Then(infos =>
            {
                deferred.Resolve(
                    infos.Where(
                        info =>
                        info is T ||
                        ((info is DiscountIapPackage) && ((DiscountIapPackage)info).PackageData.IapPackageInfo is T))
                    .ToArray());
            }, () => deferred.Reject());
            return(deferred.Promise());
        }