public void Return(object context) { _lastContext = null; if (_lastLoadDeferred != null) { ComplitionDeferred <object> lastLoadDeferred = _lastLoadDeferred; _lastLoadDeferred = null; lastLoadDeferred.Resolve(context); } string sceneName = _sceneStack.Pop(); SceneManager.LoadScene(FixSceneName(sceneName)); }
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()); }
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()); }
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()); }
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 ComplitionPromise <object> Load(SceneLoadParameters parameters) { ServiceLocator.Resolve <IAnalyticsService>().StatSceneLoaded(parameters.SceneName); _lastContext = null; if (_lastLoadDeferred != null) { ComplitionDeferred <object> lastLoadDeferred = _lastLoadDeferred; _lastLoadDeferred = null; lastLoadDeferred.Resolve(parameters.Context); } _captureReturnKey = parameters.CaptureReturnKey; _lastLoadDeferred = new ComplitionDeferred <object>(); if (parameters.FlushSceneStack) { _sceneStack.Clear(); } if (parameters.AddToSceneStack) { _sceneStack.Push(SceneManager.GetActiveScene().name); } _lastContext = parameters.Context; SceneManager.LoadScene(FixSceneName(parameters.SceneName)); return(_lastLoadDeferred.Promise()); }