示例#1
0
        protected override bool PirateComes(Pirate pirate)
        {
            KillFoesFor(pirate);
            pirate.ApplyCommand(Pirate.Actions.Free);

            return(true);
        }
示例#2
0
        protected override bool PirateComes(Pirate pirate)
        {
            PirateWent(pirate);
            switch (cannonDirection)
            {
            case CannonDirection.East:
                ReachEastBorder(pirate);
                break;

            case CannonDirection.West:
                ReachWestBorder(pirate);
                break;

            case CannonDirection.North:
                ReachNorthBorder(pirate);
                break;

            case CannonDirection.South:
                ReachSouthBorder(pirate);
                break;
            }
            pirate.ApplyCommand(Pirate.Actions.Swim);
            var cells = Field.Cells(pirate.Position);

            Field.MovePirateTo(pirate, cells);
            return(false);
        }
示例#3
0
        protected override bool PirateComes(Pirate pirate)
        {
            // todo: validate condition


            if (ContainsBuddyFor(pirate))
            {
                Pirates.ToList().ForEach(p => p.ApplyCommand(Pirate.Actions.Free));
                pirate.ApplyCommand(Pirate.Actions.Free);
                return(true);
            }

            pirate.ApplyCommand(Pirate.Actions.Trap);
            KillFoesFor(pirate);

            return(true);
        }
示例#4
0
 public override bool PirateWent(Pirate pirate)
 {
     if (IsShipHere())
     {
         GetShip().Pirates.Remove(pirate);
         pirate.ApplyCommand(Pirate.Actions.Free);
     }
     return(true);
 }
示例#5
0
        protected override bool PirateComes(Pirate pirate)
        {
            if (IsShipHere())
            {
                pirate.ApplyCommand(
                    GetShip().IsMotherShip(pirate)
                        ? Pirate.Actions.Ship
                        : Pirate.Actions.Kill
                    );
            }
            else
            {
                pirate.ApplyCommand(Pirate.Actions.Swim);
                pirate.LostGold();
                KillFoesFor(pirate);
            }

            return(true);
        }
示例#6
0
        protected override bool PirateComes(Pirate pirate)
        {
            pirate.ApplyCommand(Pirate.Actions.Ship);

            return(false);
        }