Пример #1
0
    public void CheckAchievemtCondition(AchieveData attackData, AchieveData targetData, KillType killtype = KillType.Normal)
    {
        EAchievementType conditionResult = this.GetConditionResult(attackData, targetData, killtype);
        string           promptId        = this.GetPromptId(attackData, targetData, killtype, conditionResult);

        if (conditionResult != EAchievementType.None)
        {
            if (LevelManager.Instance.IsPvpBattleType)
            {
                AchieveHelper.BrocastMsg(promptId, this.HeroName, targetData.HeroName, attackData._heroTeam, targetData._heroTeam, this.SummerName, targetData.SummerName);
            }
            else
            {
                AchieveHelper.BrocastMsg(promptId, this.HeroName, targetData.HeroName, attackData._heroTeam, targetData._heroTeam, string.Empty, string.Empty);
            }
        }
        else
        {
            Debug.LogError(string.Concat(new object[]
            {
                "Achievement is none, 连杀:",
                this.ContinusKillWithTime,
                " 累积杀:",
                this.ContinusKillNoTime
            }));
        }
        if ((targetData._heroTeam == TeamType.LM && MapManager.Instance.IsHeroAllDead(TeamType.LM) && GameManager.Instance.Spawner.GetPlayerNum(TeamType.LM) >= AchieveManager.TuanmieTotalCount) || (targetData._heroTeam == TeamType.BL && MapManager.Instance.IsHeroAllDead(TeamType.BL) && GameManager.Instance.Spawner.GetPlayerNum(TeamType.BL) >= AchieveManager.TuanmieTotalCount))
        {
            promptId = this.GetPromptId(attackData, targetData, killtype, EAchievementType.TuanMie);
            if (LevelManager.Instance.IsPvpBattleType)
            {
                AchieveHelper.BrocastMsg(promptId, this.HeroName, targetData.HeroName, attackData._heroTeam, targetData._heroTeam, this.SummerName, targetData.SummerName);
            }
            else
            {
                AchieveHelper.BrocastMsg(promptId, this.HeroName, targetData.HeroName, attackData._heroTeam, targetData._heroTeam, string.Empty, string.Empty);
            }
        }
    }
Пример #2
0
        /// <summary>
        /// Instantiate an achievement object.
        /// </summary>
        /// <param name="userId">The user identifier whom to match this achievement with.</param>
        /// <param name="id">The achievement identifier.</param>
        /// <param name="title">The achievement title.</param>
        /// <param name="description">The description or flavour text of the achievement.</param>
        /// <param name="score">The score granted by the achievement.</param>
        /// <param name="goal">The goal the achievement counter has to reach to be achieved. If it's set to less than 1, the achievement will be treated as triggerable.</param>
        /// <param name="counter">The current progress of the achievement.</param>
        /// <param name="isCompleted">Whether or not the achievement has been completed.</param>
        private UserAchievement(IAchievementProgressionDAL achievementProgressionDAL, string userId, string id, string title, string description, int score, int goal, int counter = 0, bool isCompleted = false)
        {
            this._achievementProgressionDAL = achievementProgressionDAL;

            this.UserId      = userId;
            this.Id          = id;
            this.Title       = title;
            this.Description = description;
            this.Score       = score;

            if (goal < 1)
            {
                this.AchievementType = EAchievementType.Trigger;
            }
            else
            {
                this.Goal            = goal;
                this.AchievementType = EAchievementType.Score;
            }

            this.Counter     = counter;
            this.IsCompleted = isCompleted;
        }
Пример #3
0
    private string GetPromptId(AchieveData attackData, AchieveData targetData, KillType killtype = KillType.Normal, EAchievementType arcType = EAchievementType.None)
    {
        Units player = PlayerControlMgr.Instance.GetPlayer();

        if (null == player)
        {
            return(string.Empty);
        }
        bool   flag   = targetData._heroTeam != (TeamType)player.teamType;
        string result = string.Empty;

        if (arcType == EAchievementType.TuanMie)
        {
            result = ((!flag) ? "1100" : "1099");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1103" : "1102") : "1101");
            }
            return(result);
        }
        if (arcType == EAchievementType.KilledByMonster)
        {
            result = ((!flag) ? "1089" : "1088");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1092" : "1091") : "1090");
            }
            return(result);
        }
        if (killtype == KillType.StopKill)
        {
            result = ((!flag) ? "1094" : "1093");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1097" : "1096") : "1095");
            }
            return(result);
        }
        if (killtype == KillType.FirstBoold)
        {
            result = ((!flag) ? "1017" : "1016");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1020" : "1019") : "1018");
            }
            return(result);
        }
        if (!LevelManager.Instance.IsPvpBattleType && GameManager.Instance.AchieveManager.AllHeroDeathNum == 1 && this.ContinusKillNoTime == 1)
        {
            result = ((!flag) ? "1017" : "1016");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1020" : "1019") : "1018");
            }
        }
        else if (attackData.ContinusKillWithTime >= AchieveManager.DoubleKillCount && attackData.ContinusKillWithTime <= AchieveManager.HexaKillCount)
        {
            if (attackData.ContinusKillWithTime == AchieveManager.DoubleKillCount)
            {
                result = ((!flag) ? "1026" : "1021");
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1041" : "1036") : "1031");
                }
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.TripleKillCount)
            {
                result = ((!flag) ? "1027" : "1022");
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1042" : "1037") : "1032");
                }
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.FourthKillCount)
            {
                result = ((!flag) ? "1028" : "1023");
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1043" : "1038") : "1033");
                }
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.FifthKillCount)
            {
                result = ((!flag) ? "1029" : "1024");
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1044" : "1039") : "1034");
                }
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.HexaKillCount)
            {
                result = ((!flag) ? "1030" : "1025");
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1045" : "1040") : "1035");
                }
            }
        }
        else if (targetData.ContinusKillNoTime >= AchieveManager.ZhongjieCount)
        {
            result = ((!flag) ? "1094" : "1093");
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1097" : "1096") : "1095");
            }
        }
        else if (attackData.ContinusKillNoTime >= AchieveManager.DashaKillCount)
        {
            if (attackData.ContinusKillNoTime < AchieveManager.BaozouKillCount)
            {
                result = ((!flag) ? "1052" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1046" : "1058"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1076" : "1070") : "1064");
                }
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.WurenKillCount)
            {
                result = ((!flag) ? "1053" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1047" : "1059"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1077" : "1071") : "1065");
                }
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.ZhuzaiKillCount)
            {
                result = ((!flag) ? "1054" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1048" : "1060"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1078" : "1072") : "1066");
                }
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.GodlikeKillCount)
            {
                result = ((!flag) ? "1055" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1049" : "1061"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1079" : "1073") : "1067");
                }
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.LegendaryKillCount)
            {
                result = ((!flag) ? "1056" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1050" : "1062"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1080" : "1074") : "1068");
                }
            }
            else
            {
                result = ((!flag) ? "1057" : ((!attackData.HeroName.Equals(player.npc_id)) ? "1051" : "1063"));
                if (Singleton <PvpManager> .Instance.IsObserver)
                {
                    result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1081" : "1075") : "1069");
                }
            }
        }
        else if (attackData.ContinusKillNoTime < AchieveManager.DashaKillCount)
        {
            result = ((!flag) ? ((!targetData.HeroName.Equals(player.npc_id)) ? "1083" : "1098") : ((!attackData.HeroName.Equals(player.npc_id)) ? "1084" : "1082"));
            if (targetData.unittype.Equals("Building") || targetData.unittype.Equals("Monster"))
            {
                result = ((!flag) ? "1089" : "1088");
            }
            if (Singleton <PvpManager> .Instance.IsObserver)
            {
                result = ((targetData._heroTeam != TeamType.BL) ? ((targetData._heroTeam != TeamType.LM) ? "1087" : "1086") : "1085");
            }
        }
        targetData.UpdateKillingHeroData(targetData);
        return(result);
    }
Пример #4
0
    private EAchievementType GetConditionResult(AchieveData attackData, AchieveData targetData, KillType killtype = KillType.Normal)
    {
        if (LevelManager.CurBattleType == 6)
        {
            return(EAchievementType.NormalKill);
        }
        EAchievementType result = EAchievementType.None;

        if (killtype == KillType.StopKill)
        {
            return(EAchievementType.ZhongJie);
        }
        if (killtype == KillType.FirstBoold)
        {
            return(EAchievementType.FirstBlood);
        }
        if (!LevelManager.Instance.IsPvpBattleType && GameManager.Instance.AchieveManager.AllHeroDeathNum == 1 && this.ContinusKillNoTime == 1)
        {
            result = EAchievementType.FirstBlood;
        }
        else if (attackData.ContinusKillWithTime >= AchieveManager.DoubleKillCount && attackData.ContinusKillWithTime <= AchieveManager.HexaKillCount)
        {
            if (attackData.ContinusKillWithTime == AchieveManager.DoubleKillCount)
            {
                result = EAchievementType.DoubleKill;
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.TripleKillCount)
            {
                result = EAchievementType.TribleKill;
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.FourthKillCount)
            {
                result = EAchievementType.FourKill;
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.FifthKillCount)
            {
                result = EAchievementType.FiveKill;
            }
            else if (attackData.ContinusKillWithTime == AchieveManager.HexaKillCount)
            {
                result = EAchievementType.HexaKill;
            }
        }
        else if (targetData.ContinusKillNoTime >= AchieveManager.ZhongjieCount)
        {
            result = EAchievementType.ZhongJie;
        }
        else if (attackData.ContinusKillNoTime >= AchieveManager.DashaKillCount)
        {
            if (attackData.ContinusKillNoTime < AchieveManager.BaozouKillCount)
            {
                result = EAchievementType.DaShaTeSha;
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.WurenKillCount)
            {
                result = EAchievementType.BaoZou;
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.ZhuzaiKillCount)
            {
                result = EAchievementType.WuRenNengDang;
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.GodlikeKillCount)
            {
                result = EAchievementType.ZhuZaiBiSai;
            }
            else if (attackData.ContinusKillNoTime < AchieveManager.LegendaryKillCount)
            {
                result = EAchievementType.GodLike;
            }
            else
            {
                result = EAchievementType.Legendary;
            }
        }
        else if (attackData.ContinusKillNoTime < AchieveManager.DashaKillCount)
        {
            result = EAchievementType.NormalKill;
        }
        targetData.UpdateKillingHeroData(targetData);
        return(result);
    }
 /// <summary>
 /// Gets the type of the achievement.
 /// </summary>
 /// <returns>The achievement by type.</returns>
 /// <param name="achDatabase">Ach database.</param>
 /// <param name="achievementType">Achievement type.</param>
 /// <created>Stef</created>
 private Achievement GetAchievementByType(List<Achievement> achDatabase, EAchievementType achievementType)
 {
     foreach (var item in achDatabase)
     {
         if (item.achievementType == achievementType)
         {
             return item;
         }
     }
     return null;
 }
 /// <summary>
 /// Checks if type exist.
 /// </summary>
 /// <returns><c>true</c>, if if type exist was checked, <c>false</c> otherwise.</returns>
 /// <param name="achievementList">Achievement list.</param>
 /// <param name="type">Type.</param>
 /// <created>Stef</created>
 private bool CheckIfTypeExist(List<Achievement> achievementList, EAchievementType type)
 {
     foreach (var item in achievementList)
     {
         if (item.achievementType == type)
         {
             return true;
         }
     }
     return false;
 }
        /// <summary>
        /// Increments the countToUnlock
        /// </summary>
        /// <param name="type">Type.</param>
        /// <created>Stef</created>
        public void RegisterEvent(EAchievementType type, int score)
        {
            List<Achievement> achievementList = achievementDatabase.SelectAll<Achievement>();
            Achievement achDatabase = null;

            if (!CheckIfTypeExist(achievementList, type))
            {
                return;
            }

            switch (type)
            {
                case EAchievementType.Score1000:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.Score1000);
                    achDatabase.count += score;
                    achievementDatabase.Update(achDatabase);
                    break;
                case EAchievementType.Start:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.Start);
                    achDatabase.count++;
                    achievementDatabase.Update(achDatabase);
                    break;
                case EAchievementType.Score10000:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.Score10000);
                    achDatabase.count += score;
                    achievementDatabase.Update(achDatabase);
                    break;
                case EAchievementType.FirstLevelCompleted:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.FirstLevelCompleted);
                    achDatabase.count++;
                    achievementDatabase.Update(achDatabase);
                    break;
                case EAchievementType.StartPascal:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.StartPascal);
                    achDatabase.count++;
                    achievementDatabase.Update(achDatabase);
                    break;
                case EAchievementType.StartPython:
                    achDatabase = GetAchievementByType(achievementList, EAchievementType.StartPython);
                    achDatabase.count++;
                    achievementDatabase.Update(achDatabase);
                    break;
            }

            ParseAchievements(type, achDatabase);
        }
 /// <summary>
 /// Checks if the achievement has to be thrown
 /// </summary>
 /// <param name="type">Type.</param>
 /// <param name="achDatabase">Ach database.</param>
 /// <created>Stef</created>
 public void ParseAchievements(EAchievementType type, Achievement achDatabase)
 {
     if (type == EAchievementType.Score1000)
     {
         if (achDatabase.count >= achDatabase.countToUnlock) RaiseAchievementUnlocked(achDatabase);
     }
     else if (type == EAchievementType.Score10000)
     {
         if (achDatabase.count >= achDatabase.countToUnlock) RaiseAchievementUnlocked(achDatabase);
     }
     else if (achDatabase.count == achDatabase.countToUnlock)
     {
         RaiseAchievementUnlocked(achDatabase);
     }
 }