示例#1
0
        public override bool CanInteract(GameObject with)
        {
            if (owner.ContainsFeed)
            {
                return(false);
            }

            FarmPlayer player = with as FarmPlayer;

            if (player == null)
            {
                return(false);
            }

            if (player.Inventory.HasItemInHands)
            {
                AnimalFeedItem feedItem = player.Inventory.ItemInHands as AnimalFeedItem;

                if (feedItem != null)
                {
                    if (feedItem.FeedType == owner.FeedType)
                    {
                        return(true);
                    }
                }
                else
                {
                    return(false);
                }
            }

            return(false);
        }
示例#2
0
        private void CheckFoodAmount()
        {
            // Haetaan lato bg mapeista koska se ei ole aktiivisena.
            TileMap barn = (game.GameStateManager.Current as GameplayScreen)
                           .World.MapManager.MapsInBackground().First(c => c.Name == mapContainedIn);

            int traysWithFood = 0;
            int consumers     = 0;

            foreach (GameObjectManager gameObjectManager in barn.ObjectManagers.AllManagers())
            {
                // Lasketaan jokaisesta managerista ruokinta astioiden määrä jotka sisältävät ruokaa.
                traysWithFood += gameObjectManager.GameObjectsOfType <FeedingTray>(
                    f => f.ContainsFeed).Count();

                // Lasketaan ladossa olevien eläinten määrä jotka voivat syödä tämän astian sisältämää ruokaa.
                consumers += gameObjectManager.GameObjectsOfType <Animal>(
                    a => a.Dataset.FeedTable.Contains(FeedType)).Count();
            }

            // Jos ruokaa on enemmän kuin syöjiä, disposataan ruoka.
            if (traysWithFood > consumers)
            {
                feed = null;
            }
        }
示例#3
0
        public AnimalFeedItem GetFeed()
        {
            AnimalFeedItem feedItem = feed;

            feed = null;

            return(feedItem);
        }
示例#4
0
        public AnimalFeedItem GetFeed()
        {
            AnimalFeedItem feed = null;

            if (FeedContained > 0)
            {
                feed = new AnimalFeedItem(game, feedDataset);
                FeedContained--;
            }

            return(feed);
        }
示例#5
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            Collider.Update(gameTime);

            if (fader != null)
            {
                fader.Update(gameTime);
                if (!fader.IsFading)
                {
                    feed  = null;
                    fader = null;
                }
            }

            if (feed != null)
            {
                Vector2 feedPosition = new Vector2(this.position.X + feed.Size.Width / 2, this.position.Y);
                feed.Position = feedPosition;
            }
        }
示例#6
0
 public void InsertFeed(AnimalFeedItem feedItem)
 {
     feed          = feedItem;
     feedItem.Size = new Size(feedItem.Size.Width, feedItem.Size.Height / 2);
 }