Esempio n. 1
0
 private void AddAction(BaseAction action)
 {
     if (action != null)
     {
         PendingActions.Add(action);
     }
 }
Esempio n. 2
0
        public static BaseAction ValidateAction(BaseAction action)
        {
            var resultAction = CheckOutcomeConditions(action);
            resultAction = CheckIncomeConditions(resultAction);

            return resultAction;
        }
Esempio n. 3
0
 private static BaseAction CheckOutcomeConditions(BaseAction action)
 {
     BaseAction result = action;
     if (action.Source.Conditions == null) return result;
     foreach (ICondition condition in action.Source.Conditions.OrderBy(x => x.Priority))
         result = condition.TransformOutcomeAction(result);
     return result;
 }
Esempio n. 4
0
 public void Observe(BaseAction action, World world)
 {
     foreach (var gameEvent in Events)
     {
         if (gameEvent.Condition(action, world))
         {
             gameEvent.Reaction();
         }
     }
 }
Esempio n. 5
0
 public virtual BaseAction TransformOutcomeAction(BaseAction action)
 {
     return action;
 }
Esempio n. 6
0
 public abstract BaseAction TransformOutcomeAction(BaseAction action);
Esempio n. 7
0
 private static BaseAction CheckIncomeConditions(BaseAction action)
 {
     var resultAction = action;
     if (resultAction as ISingleTargetAffecter == null) return action;
     return (action as ISingleTargetAffecter).Target.Conditions.OrderBy(x => x.Priority).Aggregate(resultAction, (current, condition) => condition.TransformIncomeAction(current));
 }