Beispiel #1
0
        private static Promise InternalUpdateAchievementToServer(bool showDialog)
        {
            Deferred deferred = new Deferred();
            //BacktoryCloudUrl.Url = "http://localhost:8086";
            UpdateAchievementsRequest request            = new UpdateAchievementsRequest();
            List <ServerAchievement>  serverAchievements = new List <ServerAchievement>();

            foreach (
                AchievementInfo achievementInfo in
                InfoResolver.Resolve <FortInfo>().Achievement.AchievementInfos.Where(info => info != null))
            {
                NoneLevelBaseAchievementInfo noneLevelBaseAchievementInfo = achievementInfo as NoneLevelBaseAchievementInfo;
                if (noneLevelBaseAchievementInfo != null)
                {
                    serverAchievements.Add(new ServerAchievement
                    {
                        Name          = noneLevelBaseAchievementInfo.Name,
                        AchievementId = noneLevelBaseAchievementInfo.Id,
                        Score         = noneLevelBaseAchievementInfo.Score,
                        Values        = noneLevelBaseAchievementInfo.Balance.Values
                    });
                }
                else
                {
                    LevelBaseAchievementInfo levelBaseAchievementInfo = (LevelBaseAchievementInfo)achievementInfo;
                    AchievementLevelInfo[]   achievementLevelInfos    = levelBaseAchievementInfo.GetAchievementLevelInfos();
                    for (int i = 0; i < achievementLevelInfos.Length; i++)
                    {
                        serverAchievements.Add(new ServerAchievement
                        {
                            Name          = achievementLevelInfos[i].Name,
                            AchievementId = achievementLevelInfos[i].Id,
                            Score         = achievementLevelInfos[i].Score,
                            Values        = achievementLevelInfos[i].Balance.Values
                        });
                    }
                }
            }
            request.Items = serverAchievements.ToArray();
            EditorUtility.DisplayProgressBar("Syncronizing Achievements", "Syncronizing Achievements", 0);
            InfoResolver.Resolve <FortInfo>()
            .ServerConnectionProvider.EditorConnection.Call <object>("UpdateAchievements", request)
            .Then(
                o =>
            {
                EditorUtility.ClearProgressBar();
                if (showDialog)
                {
                    EditorUtility.DisplayDialog("Syncronizing Achievements", "Achievemet syncronization succeeded", "Ok");
                }
                deferred.Resolve();
            }, error =>
            {
                EditorUtility.ClearProgressBar();
                deferred.Reject();
                throw new Exception("Achievemet syncronization failed");
            });
            return(deferred.Promise());
        }
        public static void ExportAchievements()
        {
            string path = EditorUtility.SaveFilePanel("Export Achievements", "", "", "xls");

            if (string.IsNullOrEmpty(path))
            {
                return;
            }
            using (System.IO.Stream writer = File.Create(path))
            {
                ExportData exportData = new ExportData();
                foreach (AchievementInfo achievementInfo in InfoResolver.Resolve <FortInfo>().Achievement.AchievementInfos)
                {
                    NoneLevelBaseAchievementInfo noneLevelBaseAchievementInfo =
                        achievementInfo as NoneLevelBaseAchievementInfo;
                    if (noneLevelBaseAchievementInfo != null)
                    {
                        ExportRow exportRow = new ExportRow();
                        exportRow.AddParameter("Id", new Parameter
                        {
                            Value = noneLevelBaseAchievementInfo.Id,
                            Type  = typeof(string)
                        });
                        exportRow.AddParameter("Name", new Parameter
                        {
                            Value = achievementInfo.GetType().Name,
                            Type  = typeof(string)
                        });
                        exportRow.AddParameter("Score", new Parameter
                        {
                            Value = noneLevelBaseAchievementInfo.Score,
                            Type  = typeof(int)
                        });
                        foreach (string valueDefenition in InfoResolver.Resolve <FortInfo>().ValueDefenitions)
                        {
                            exportRow.AddParameter(valueDefenition, new Parameter
                            {
                                Value = noneLevelBaseAchievementInfo.Balance == null ||
                                        noneLevelBaseAchievementInfo.Balance.Values == null
                                    ? 0
                                    : noneLevelBaseAchievementInfo.Balance[valueDefenition],
                                Type = typeof(int)
                            });
                        }
                        exportRow.AddCustomExportParameter(noneLevelBaseAchievementInfo);
                        exportData.AddRow(exportRow);
                    }
                    else
                    {
                        LevelBaseAchievementInfo levelBaseAchievementInfo = (LevelBaseAchievementInfo)achievementInfo;
                        AchievementLevelInfo[]   achievementLevelInfos    =
                            levelBaseAchievementInfo.GetAchievementLevelInfos();
                        int index = 0;
                        foreach (AchievementLevelInfo achievementLevelInfo in achievementLevelInfos)
                        {
                            ExportRow exportRow = new ExportRow();
                            exportRow.AddParameter("Id", new Parameter
                            {
                                Value = achievementLevelInfo.Id,
                                Type  = typeof(string)
                            });
                            exportRow.AddParameter("Name", new Parameter
                            {
                                Value = string.Format("{0}_{1}", achievementInfo.GetType().Name, index++),
                                Type  = typeof(string)
                            });
                            exportRow.AddParameter("Score", new Parameter
                            {
                                Value = achievementLevelInfo.Score,
                                Type  = typeof(int)
                            });
                            foreach (string valueDefenition in InfoResolver.Resolve <FortInfo>().ValueDefenitions)
                            {
                                exportRow.AddParameter(valueDefenition, new Parameter
                                {
                                    Value = achievementLevelInfo.Balance == null ||
                                            achievementLevelInfo.Balance.Values == null
                                        ? 0
                                        : achievementLevelInfo.Balance[valueDefenition],
                                    Type = typeof(int)
                                });
                            }
                            exportRow.AddCustomExportParameter(achievementLevelInfo);
                            exportData.AddRow(exportRow);
                        }
                    }
                }
                HSSFWorkbook workbook = new HSSFWorkbook();

                HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Achievements");
                exportData.SerializeToSheet(sheet);
                workbook.Write(writer);
            }
        }
Beispiel #3
0
 public static T  GetNextClaimableAchievementLevelInfo <T>(this LevelBaseAchievementInfo <T> levelBaseAchievementInfo)
     where T : AchievementLevelInfo
 {
     return((T)ServiceLocator.Resolve <IAchievementService>().GetNextClaimableAchievementLevelInfo(levelBaseAchievementInfo.GetType()));
 }
Beispiel #4
0
 public static void ClaimAchievement(this LevelBaseAchievementInfo levelBaseAchievementInfo,
                                     int achivementLevelIndex)
 {
     ServiceLocator.Resolve <IAchievementService>().ClaimAchievement(levelBaseAchievementInfo.GetType(), achivementLevelIndex);
 }
Beispiel #5
0
 public LevelBaseAchievementClaimedEventArgs(LevelBaseAchievementInfo achievementInfo, int achievementLevelIndex) : base(achievementInfo)
 {
     LevelBaseAchievementInfo = achievementInfo;
     AchievementLevelIndex    = achievementLevelIndex;
 }