Exemple #1
0
 public void BuildLodge(Beaver beaver)
 {
     if (beaver.CanAct() && beaver.CanBuildLodge())
     {
         Console.WriteLine("    Build Lodge: {0}, {1}+{2}/{3}", beaver.ToPoint(), beaver.Branches, beaver.Tile.Branches, this.Player.BranchesToBuildLodge);
         beaver.BuildLodge();
     }
 }
Exemple #2
0
        public static void Harvest(Beaver harvester, IEnumerable <Spawner> targets)
        {
            if (!harvester.CanAct() || harvester.OpenCarryCapacity() == 0)
            {
                return;
            }

            var targettables = targets.Where(t => t.Health > 0);
            var target       = targettables.FirstOrDefault(t => harvester.Tile._HasNeighbor(t.Tile));

            if (target != null)
            {
                while (harvester.CanAct() && target.Health > 0)
                {
                    harvester.Harvest(target);
                }
            }
        }
Exemple #3
0
        public static void Drop(Beaver dropper, IEnumerable <Tile> targets, string resource)
        {
            if (!dropper.CanAct() || dropper.GetCount(resource) == 0)
            {
                return;
            }

            var target = targets.FirstOrDefault(t => t == dropper.Tile || dropper.Tile._HasNeighbor(t));

            if (target != null)
            {
                dropper.Drop(target, resource, dropper.GetCount(resource));
            }
        }
Exemple #4
0
        public static void Pickup(Beaver picker, IEnumerable <Tile> targets, string resource)
        {
            if (!picker.CanAct() || picker.OpenCarryCapacity() == 0)
            {
                return;
            }

            var targettables = targets.Where(t => t.GetCount(resource) > 0 && picker.Tile._HasNeighbor(t));

            if (targettables.Any())
            {
                var target = targettables.MaxByValue(t => t.GetCount(resource));
                picker.Pickup(target, resource, Math.Min(target.GetCount(resource), picker.OpenCarryCapacity()));
            }
        }
Exemple #5
0
        public static void MoveAndDrop(Beaver dropper, IEnumerable <Tile> targets, string resource)
        {
            if (!dropper.CanAct() || dropper.GetCount(resource) == 0)
            {
                return;
            }

            if (dropper.CanMove())
            {
                var movePoints = targets.Concat(targets.SelectMany(t => t.GetNeighbors()))
                                 .Select(n => n.ToPoint());
                Move(dropper, movePoints);
            }

            Drop(dropper, targets, resource);
        }
Exemple #6
0
        public static void Attack(Beaver attacker, IEnumerable <Beaver> targets)
        {
            var targettables = targets.Where(t => t.CanBeAttacked());
            var target       = targettables.FirstOrDefault(t => attacker.Tile._HasNeighbor(t.Tile));

            if (target != null)
            {
                while (attacker.CanAct() && target.CanBeAttacked())
                {
                    if (attacker.Owner == target.Owner)
                    {
                        Console.WriteLine("DIE SLACKER");
                    }
                    attacker.Attack(target);
                }
            }
        }
Exemple #7
0
        public static void MoveAndPickup(Beaver picker, IEnumerable <Tile> targets, string resource)
        {
            if (!picker.CanAct() || picker.OpenCarryCapacity() == 0)
            {
                return;
            }

            var targetPoints = targets.Where(t => t.GetCount(resource) > 0);

            if (picker.CanMove())
            {
                var movePoints = targetPoints.Concat(targetPoints.SelectMany(t => t.GetNeighbors()))
                                 .Select(n => n.ToPoint());
                Move(picker, movePoints);
            }

            Pickup(picker, targets, resource);
        }