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; } } } } }
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]); } } }
public KillAchievementCondition(AchievementConditionData data) : base(data) { }
public EnemySuicideAchievementCondition(AchievementConditionData data) : base(data) { }
public ReceiveBehaviourAchievementCondition(AchievementConditionData data) : base(data) { }
protected AchievementCondition(AchievementConditionData data) { this.Data = data; }