public override IEnumerable <Action <Move> > Perform() { while (true) { if (me.State == HockeyistState.Swinging) { yield return(move => { move.Action = ActionType.Strike; }); continue; } foreach (var action in getThePuck.Perform()) { yield return(action); } if (reach == null) { reach = new ReachAndSlowdownBehaviour(me, PickClosestStrikePoint(), false); foreach (var action in reach.Perform()) { yield return(action); } } while (Math.Abs(me.GetAngleTo(world.NetStrikePoint())) > (game.StrikeAngleDeviation)) { yield return(move => { move.Turn = me.GetAngleTo(world.NetStrikePoint()); }); } yield return(move => { move.Action = ActionType.Strike; }); reach = null; } }
public override IEnumerable<Action<Move>> Perform () { while (true) { if (me.State == HockeyistState.Swinging) { yield return move => { move.Action = ActionType.Strike; }; continue; } foreach (var action in getThePuck.Perform()) { yield return action; } if (reach == null) { reach = new ReachAndSlowdownBehaviour (me, PickClosestStrikePoint (), false); foreach (var action in reach.Perform()) { yield return action; } } while (Math.Abs (me.GetAngleTo (world.NetStrikePoint ())) > (game.StrikeAngleDeviation)) { yield return move => { move.Turn = me.GetAngleTo (world.NetStrikePoint ()); }; } yield return move => { move.Action = ActionType.Strike; }; reach = null; } }