Exemplo n.º 1
0
        private void CheckAchivementsForCondition <T>(AchievementConditionData condition, T parameterValue)
        {
            foreach (AchievementData achievement in _gameDataRef.Achievements)
            {
                if (achievement.Enabled && achievement.ConditionID.Equals(condition.ID))
                {
                    if (!IsAchievementUnlocked(achievement.ID))
                    {
                        switch (condition.ParamType)
                        {
                        case AchievementConditionData.ParameterType.Int:
                            int paramCurrent = 0;
                            int paramTarget  = 0;
                            if (int.TryParse(parameterValue.ToString(), out paramCurrent) && int.TryParse(achievement.ConditionParameter, out paramTarget))
                            {
                                if (paramCurrent >= paramTarget)
                                {
                                    UnlockAchievement(achievement);
                                }
                            }
                            break;

                        case AchievementConditionData.ParameterType.Float:
                            float paramCurrentFloat = 0;
                            float paramTargetFloat  = 0;
                            if (float.TryParse(parameterValue.ToString(), out paramCurrentFloat) && float.TryParse(achievement.ConditionParameter, out paramTargetFloat))
                            {
                                if (paramCurrentFloat >= paramTargetFloat)
                                {
                                    UnlockAchievement(achievement);
                                }
                            }
                            break;

                        case AchievementConditionData.ParameterType.CustomCondition:
                            if (_customConditionDelegate != null)
                            {
                                if (_customConditionDelegate(achievement.ID, parameterValue))
                                {
                                    UnlockAchievement(achievement);
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void UpdateConditionParameter <T>(int conditionID, T parameterValue)
        {
            AchievementConditionData condition = _gameDataRef.GetAchievementCondition(conditionID);

            if (condition != null)
            {
                IDictionary parameters = null;

                switch (condition.ParamType)
                {
                case AchievementConditionData.ParameterType.Int:
                    parameters = _parametersInt;
                    break;

                case AchievementConditionData.ParameterType.Float:
                    parameters = _parametersFloat;
                    break;

                case AchievementConditionData.ParameterType.CustomCondition:
                    CheckAchivementsForCondition <T>(condition, parameterValue);
                    break;
                }

                if (parameters != null)
                {
                    if (parameters.Contains(conditionID))
                    {
                        switch (condition.ParamUpdatePolicy)
                        {
                        case AchievementConditionData.ParameterUpdatePolicy.Add:
                            parameters[conditionID] = Sum(parameters[conditionID], parameterValue);
                            break;

                        case AchievementConditionData.ParameterUpdatePolicy.Override:
                            parameters[conditionID] = parameterValue;
                            break;
                        }
                    }
                    else
                    {
                        parameters.Add(conditionID, parameterValue);
                    }

                    CheckAchivementsForCondition <T>(condition, (T)parameters[conditionID]);
                }
            }
        }
Exemplo n.º 3
0
 public KillAchievementCondition(AchievementConditionData data) : base(data)
 {
 }
Exemplo n.º 4
0
 public EnemySuicideAchievementCondition(AchievementConditionData data) : base(data)
 {
 }
Exemplo n.º 5
0
 public ReceiveBehaviourAchievementCondition(AchievementConditionData data) : base(data)
 {
 }
Exemplo n.º 6
0
 protected AchievementCondition(AchievementConditionData data)
 {
     this.Data = data;
 }