public FieldModel() { Length = GameSettings.FieldLength; Width = GameSettings.FieldWidth; DefenseRodHost = new RodModel(PlayerType.Host, RodType.Defense, GameSettings.DefenseRodHostTag, GameSettings.DefenseRodHostColumn); OffenseRodHost = new RodModel(PlayerType.Host, RodType.Offense, GameSettings.OffenseRodHostTag, GameSettings.OffenseRodHostColumn); DefenseRodGuest = new RodModel(PlayerType.Guest, RodType.Defense, GameSettings.DefenseRodGuestTag, GameSettings.DefenseRodGuestColumn); OffenseRodGuest = new RodModel(PlayerType.Guest, RodType.Offense, GameSettings.OffenseRodGuestTag, GameSettings.OffenseRodGuestColumn); Ball = new BallModel(Width / 2, Length / 2); }
public RodModelVM(RodModel model, SKCanvasView surface) { this.model = model; this.surface = new ModelViewSurface(this, surface); }
private static void ControlRod(PlayerType Player, FieldModel Field, RodModel Rod, Command Decision) { Anticipate Anticipated = Field.Ball.getRowIntersection(Rod.Column); int Coeff = Player == PlayerType.Host ? 1 : -1; if (Anticipated.Row == -1) { if (Rod.Position == RodPosition.Top) { Decision.MoveDown(Rod.Type); } else if (Rod.Position == RodPosition.Bottom) { Decision.MoveUp(Rod.Type); } else { Decision.NoAction(Rod.Type); } return; } if (!Rod.RowInPlayerReach(Anticipated.Row)) { // move to AnticipateDefend.Row if (Rod.Position == RodPosition.Middle && Anticipated.Row >= 6) { Decision.MoveDown(Rod.Type); } else if (Rod.Position == RodPosition.Middle) { Decision.MoveUp(Rod.Type); } else if (Rod.Position == RodPosition.Top) { Decision.MoveDown(Rod.Type); } else { Decision.MoveUp(Rod.Type); } return; } if (!Anticipated.Near) { Decision.NoAction(Rod.Type); return; } //Check here // Here the ball is in reach and the rod is in position and ready to shoot if (Anticipated.Column == (-1 * Coeff) && !(Player == PlayerType.Guest && Field.Ball.Column == 5)) { Decision.Kick(Rod.Type, DIRECTION.FORWARD, 1); return; } if (Anticipated.Column == 0) { Decision.Kick(Rod.Type, getKickDirection(Player, Anticipated.Row, 1), 1); } if (Anticipated.Column == (1 * Coeff)) { if (Rod.Type == RodType.Defense) { Decision.Kick(Rod.Type, getKickDirection(Player, Anticipated.Row, 5), 5); } else { Decision.Kick(Rod.Type, getGoalDirection(Player, Anticipated.Row), 5); } } }