Exemple #1
0
        protected virtual bool LookForFood()
        {
            var eatableCell = VisibleCells.FirstOrDefault(IsCellEatable);

            if (eatableCell != null)
            {
                EnqueueMovingToDestinationObject(eatableCell, Game.Map.GetObjectFromCell(eatableCell));
                _stateQueue.Enqueue(new Eating(this, () => Game.Map.GetObjectFromCell(eatableCell)));

                return(true);
            }

            return(false);
        }
Exemple #2
0
        protected override bool LookForFood()
        {
            if (!_bundle.IsEmpty)
            {
                _stateQueue.Enqueue(new Eating(this, () => _bundle.GameObjects.FirstOrDefault()));
                return(true);
            }

            if (base.LookForFood())
            {
                return(true);
            }

            var treeCell = VisibleCells.FirstOrDefault(p =>
            {
                var obj = Game.Map.GetObjectFromCell(p);
                if ((obj is Tree && obj.Name == "Apple tree") &&
                    obj.GetBehavior <CollectBehavior <Berry> >()?.CurrentCount > 0)
                {
                    return(true);
                }

                return(false);
            });

            if (treeCell != null)
            {
                EnqueueMovingToDestinationObject(treeCell, Game.Map.GetObjectFromCell(treeCell));

                var appleTree = Game.Map.GetObjectFromCell(treeCell) as Tree;
                _stateQueue.Enqueue(new ShakingTree(this, () => appleTree?.GetBehavior <CollectBehavior <Berry> >()));
                return(true);
            }

            return(false);
        }