Beispiel #1
0
        public static void SetCondition(this IEnumerable <AchievementInfo> infos, AchievementsType type,
                                        Func <int, int, bool> conditionFunc)
        {
            var typedInfos = infos.Where(info => info.Achievement.Type == type);

            foreach (var info in typedInfos)
            {
                info.CheckCondition = conditionFunc;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Базовая функция проверки выполнения условия достижения.
        /// Не рассматривает возможность получения сразу нескольких достижений одного типа
        /// </summary>
        private void BaseCheckValue(AchievementsType type, int value)
        {
            if (!TryGetInfo(type, out var lockedInfos))
            {
                return;
            }

            var achievementInfo = lockedInfos.OrderBy(info => info.Achievement.CompareValue).First();

            if (achievementInfo.CheckCondition(value, achievementInfo.Achievement.CompareValue))
            {
                AddAchievement(achievementInfo.Achievement);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Базовая функция проверки выполнения условия достижения на точное совпадение
        /// </summary>
        private void EqualCheckValue(AchievementsType type, int value, [CanBeNull] Action clearBufferVariable)
        {
            if (!TryGetInfo(type, out var lockedInfos))
            {
                return;
            }

            var achievementInfo =
                lockedInfos.FirstOrDefault(info => info.CheckCondition(value, info.Achievement.CompareValue));

            if (achievementInfo != default)
            {
                AddAchievement(achievementInfo.Achievement);
            }

            clearBufferVariable?.Invoke();
        }
Beispiel #4
0
        /// <summary>
        /// Ищет все новые заработанные достижения указанного типа, фиксирует все в PlayerHistory,
        /// а выводит в UI лишь первое, согласно ключу сортировки
        /// (в текущей реализации, лучший результат, например, из ТопЧарта 1 и 50 выведет "Топ 1")
        /// </summary>
        private void MultipleCheckValue(AchievementsType type, int value, Func <AchievementInfo, int> orderSelector)
        {
            if (!TryGetInfo(type, out var lockedInfos))
            {
                return;
            }

            var achievementInfos = lockedInfos
                                   .Where(info => info.CheckCondition(value, info.Achievement.CompareValue))
                                   .ToArray();

            if (achievementInfos.Any())
            {
                var newUnlockedInfos = achievementInfos.OrderBy(orderSelector).ToArray();
                for (var i = 0; i < newUnlockedInfos.Length; i++)
                {
                    AddAchievement(newUnlockedInfos[i].Achievement, i == 0);
                }
            }
        }
Beispiel #5
0
 /// <summary>
 /// Поиск достижений определнного типа.
 /// </summary>
 private bool TryGetInfo(AchievementsType type, out IEnumerable <AchievementInfo> lockedInfos)
 {
     lockedInfos = achievementsData.LockedInfos.Where(info => info.Achievement.Type == type);
     return(lockedInfos.Any());
 }
Beispiel #6
0
    public void GiveAchievement(AchievementsType AchievementType)
    {
        switch (AchievementType)
        {
        case AchievementsType.Adventurer: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQAQ", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Bang: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQAw", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Unlucky: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQBA", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.TreasureHunter: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQBQ", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.NewJob: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQBg", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Defender: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQBw", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Panic: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQCA", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.LaserParty: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQCQ", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.AllSeingEye: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQCg", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Fisher: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQCw", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Secret: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQDA", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.WOW: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQEw", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.TryHard: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQFA", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.OMG: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQFQ", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.Ghost: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQFg", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.FarDistances: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQFw", (bool success) => {
                print(success);
            }); break;

        case AchievementsType.HighStakes: PlayGamesPlatform.Instance.UnlockAchievement("CgkIyriH1Y4ZEAIQGA", (bool success) => {
                print(success);
            }); break;

        default: print("Error! This achievement don't found!"); break;
        }
        Debug.Log("Выдано достижение: " + AchievementType.ToString());
    }