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); }
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); }