private void reportAchievementCallback(bool succeeded, XML.WebResponse response)
 {
     if (ReportAchievement_callback != null)
     {
         ReportAchievement_callback(succeeded, response != null ? response.ErrorMessage : "Unknown");
     }
 }
        private void createUserCallback(bool succeeded, XML.WebResponse response)
        {
            IsAuthenticated = succeeded;
            if (succeeded)
            {
                UserID   = response.UserID;
                Username = response.Username;
            }
            else
            {
                Debug.LogError(response != null ? response.ErrorMessage : "Unkown");
                Logout();
            }

            ui.LoginCallback(succeeded, response != null ? response.ErrorMessage : "Unkown");
        }
        private void requestScoresCallback(bool succeeded, XML.WebResponse response)
        {
            if (succeeded)
            {
                var scores = new LeaderboardScore[response.Scores.Count];
                for (int i = 0; i != response.Scores.Count; ++i)
                {
                    var score = response.Scores[i];
                    scores[i] = new LeaderboardScore(score.Username, score.Score);
                }

                if (RequestScores_callback != null)
                {
                    RequestScores_callback(scores, true, null);
                }
            }
            else
            {
                if (RequestScores_callback != null)
                {
                    RequestScores_callback(null, false, response != null ? response.ErrorMessage : "Unkown");
                }
            }
        }
        private void requestAchievementsCallback(bool succeeded, XML.WebResponse response)
        {
            if (succeeded)
            {
                if (achievements == null || achievements.Length != response.Achievements.Count)
                {
                    achievements = new Achievement[desc.AchievementDescs.Length];
                }
                for (int i = 0; i != desc.AchievementDescs.Length; ++i)
                {
                    var achievementDesc = desc.AchievementDescs[i];

                                        #if UNITY_EDITOR
                    var id = achievementDesc.Editor_ReignScores_ID;
                                        #elif UNITY_STANDALONE_WIN
                    var id = achievementDesc.Win32_ReignScores_ID;
                                        #elif UNITY_STANDALONE_OSX
                    var id = achievementDesc.OSX_ReignScores_ID;
                                        #elif UNITY_STANDALONE_LINUX
                    var id = achievementDesc.Linux_ReignScores_ID;
                                        #elif UNITY_WEBPLAYER
                    var id = achievementDesc.Web_ReignScores_ID;
                                        #elif UNITY_WEBGL
                    var id = achievementDesc.WebGL_ReignScores_ID;
                                        #elif UNITY_WP8
                    var id = achievementDesc.WP8_ReignScores_ID;
                                        #elif UNITY_METRO
                    var id = achievementDesc.WinRT_ReignScores_ID;
                                        #elif UNITY_BLACKBERRY
                    var id = achievementDesc.BB10_ReignScores_ID;
                                        #elif UNITY_TIZEN
                    var id = achievementDesc.Tizen_ReignScores_ID;
                                        #elif UNITY_IPHONE
                    var id = achievementDesc.iOS_ReignScores_ID;
                                        #elif UNITY_ANDROID
                    var id = achievementDesc.Android_ReignScores_ID;
                                        #endif

                    // find achievement
                    XML.WebResponse_Achievement found = null;
                    foreach (var a in response.Achievements)
                    {
                        if (id == new Guid(a.AchievementID))
                        {
                            found = a;
                            break;
                        }
                    }

                    if (achievements[i] == null)
                    {
                        // load textures
                        string fileName        = "Reign/Achievements/" + achievementDesc.ID + "_achieved";
                        var    achievedTexture = (Texture2D)Resources.Load(fileName);
                        if (achievedTexture == null)
                        {
                            string error = "RequestAchievements Failed to load texture: " + fileName;
                            Debug.LogError(error);
                            if (RequestAchievements_callback != null)
                            {
                                RequestAchievements_callback(null, false, error);
                            }
                            return;
                        }

                        fileName = "Reign/Achievements/" + achievementDesc.ID + "_unachieved";
                        var unachievedTexture = (Texture2D)Resources.Load(fileName);
                        if (unachievedTexture == null)
                        {
                            string error = "RequestAchievements Failed to load texture: " + fileName;
                            Debug.LogError(error);
                            if (RequestAchievements_callback != null)
                            {
                                RequestAchievements_callback(null, false, error);
                            }
                            return;
                        }

                        // add achievment object
                        if (found != null)
                        {
                            achievements[i] = new Achievement(found.PercentComplete >= achievementDesc.PercentCompletedAtValue, (found.PercentComplete / 100f) * achievementDesc.PercentCompletedAtValue, achievementDesc.ID, achievementDesc.Name, achievementDesc.Desc, achievedTexture, unachievedTexture);
                        }
                        else
                        {
                            achievements[i] = new Achievement(false, 0, achievementDesc.ID, achievementDesc.Name, achievementDesc.Desc, achievedTexture, unachievedTexture);
                        }
                    }
                    else
                    {
                        // update achievment object
                        if (found != null)
                        {
                            achievements[i].IsAchieved      = found.PercentComplete >= 100;
                            achievements[i].PercentComplete = found.PercentComplete;
                        }
                        else
                        {
                            achievements[i].IsAchieved      = false;
                            achievements[i].PercentComplete = 0;
                        }
                    }
                }

                if (RequestAchievements_callback != null)
                {
                    RequestAchievements_callback(achievements, true, null);
                }
            }
            else
            {
                if (RequestAchievements_callback != null)
                {
                    RequestAchievements_callback(null, false, response != null ? response.ErrorMessage : "Unkown");
                }
            }
        }