Example #1
0
        public override IEnumerable <Action <Move> > Perform()
        {
            while (true)
            {
                if (me.OwnsThePuck())
                {
                    foreach (var action in passThePuck.Perform())
                    {
                        yield return(action);
                    }
                    continue;
                }

                if (distanceToPuck < 120)
                {
                    yield return(move => {
                        move.Turn = me.GetAngleTo(world.Puck);
                        move.Action = ActionType.TakePuck;
                    });

                    continue;
                }

                if (!meNearDefensePoint)
                {
                    if (goalieBetweenMeAndDefensePoint)
                    {
                        foreach (var action in new ReachAndSlowdownBehaviour(me, turnOverPoint, true).Perform())
                        {
                            yield return(action);
                        }
                    }

                    foreach (var action in new ReachAndSlowdownBehaviour(me, myNetDefensePoint, true).Perform())
                    {
                        yield return(action);
                    }
                }

                yield return(move => {
                    move.Action = ActionType.TakePuck;
                    move.Turn = me.GetAdjustedAngleTo(world.Puck);
                });
            }
        }