Esempio n. 1
0
 public override RoboAction OnRobotStay(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     switch (actionPhase)
     {
     case ActionPhase.ActionPusher:
         position.IsDead = true;
         break;
     }
     return(base.OnRobotStay(actionPhase, action, position));
 }
Esempio n. 2
0
 public override RoboAction OnRobotStay(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     switch (actionPhase)
     {
     case ActionPhase.ActionRotator:
         return(new RoboRotation(
                    (FieldType & FieldType.RotatorLeft) == FieldType.RotatorLeft ? Rotation.Left : Rotation.Right
                    ));
     }
     return(base.OnRobotStay(actionPhase, action, position));
 }
Esempio n. 3
0
 public override RoboAction OnRobotStay(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     switch (actionPhase)
     {
     case ActionPhase.ActionConveyor:
         return(new RoboMovement
                (
                    (FieldType & FieldType.ConveyorDown) == FieldType.ConveyorDown ? Direction.Down :
                    (FieldType & FieldType.ConveyorLeft) == FieldType.ConveyorLeft ? Direction.Left :
                    (FieldType & FieldType.ConveyorRight) == FieldType.ConveyorRight ? Direction.Right :
                    Direction.Up
                ));
     }
     return(base.OnRobotStay(actionPhase, action, position));
 }
Esempio n. 4
0
 /// <summary>
 /// Main function for handling robot action - splits behavior in enter (move in), rotation and stay to ease up programming...
 /// </summary>
 /// <param name="actionPhase">
 /// A <see cref="ActionPhase"/>
 /// </param>
 /// <param name="action">
 /// A <see cref="RoboAction"/>
 /// </param>
 /// <param name="position">
 /// A <see cref="RoboPosition"/>
 /// </param>
 /// <returns>
 /// A <see cref="RoboAction"/>
 /// </returns>
 public virtual RoboAction OnRobotAction(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     if (position.IsDead)
     {
         return(null);
     }
     if (action is RoboMovement)
     {
         return(OnRobotEnter(actionPhase, action as RoboMovement, position));
     }
     if (action is RoboRotation)
     {
         return(OnRobotRotate(actionPhase, action as RoboRotation, position));
     }
     return(OnRobotStay(actionPhase, action, position));
 }
Esempio n. 5
0
        public static RoboPosition PerformAction(RoboBoard board, ActionPhase actionPhase, RoboAction action, RoboPosition position)
        {
            if (action == null)
            {
                return(position);
            }

            position.Assign(action.PerformAction(position, board));
            position.Assign(PerformAction(board, actionPhase, board.GetField(position).OnRobotAction(actionPhase, action, position), position));
            return(position);
        }
Esempio n. 6
0
 public override RoboAction OnRobotAction(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     position.IsDead = true;
     return(null);
 }
Esempio n. 7
0
 public virtual RoboAction OnRobotStay(ActionPhase actionPhase, RoboAction action, RoboPosition position)
 {
     return(null);
 }