Ejemplo n.º 1
0
        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            //Klickar man ned i det har gått mer än 1 ruta sedan förra gången man gjorde det öppnas inventoryn
            wait++;
            if (Keyboard.GetState().IsKeyDown(Keys.I))
            {
                if (!inventoryInUse && wait > 1)
                {
                    inventoryInUse = true;
                }
                else if (wait > 1)
                {
                    inventoryInUse = false;
                }
                wait = 0;
            }

            if (isInteractingWithItem)
            {
                itemClickedOn.Draw(gameTime, spriteBatch, 0);
            }

            if (inventoryInUse)
            {
                backgroundSprite.Draw(gameTime, spriteBatch, 1f, 0.002f);

                foreach (Item item in inventory)
                {
                    item.Draw(gameTime, spriteBatch, 0f);
                }

                string textToDraw    = null;
                bool   drawText      = false;
                bool   clickedOnItem = false;
                //Om man håller inne musknappen över ett föremål...
                foreach (Item item in inventory)
                {
                    if (Mousecontrol.rightClickedOnItem(item))
                    {
                        clickedOnItem = true;
                    }
                }
                if ((Mouse.GetState().RightButton == ButtonState.Pressed && clickedOnItem))
                {
                    //...blir texten som ska skrivas ut beskrivningen för föremålet
                    textToDraw = Mousecontrol.getDescription();
                    drawText   = true;
                }
                //Om man håller musen över ett föremål...
                else if (clickedOnItem)
                {
                    //...blir texten som ska skrivas ut namnet på föremålet
                    textToDraw = Mousecontrol.getName();
                    drawText   = true;
                }
                //Om man ska skriva ut text
                if (drawText)
                {
                    //Texten placeras längst ned i inventoryn.
                    spriteBatch.DrawString(game.Content.Load <SpriteFont>(@"textfont"), textToDraw,
                                           new Vector2(game.Window.ClientBounds.Width / 6 - textToDraw.Count() * 4f,
                                                       0), Color.White);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Ritar ut allt som ska ritas ut i rummet
        /// </summary>
        public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            updateLayerPosition();

            // ritar ut alla objekt i rummet
            foreach (Item item in items)
            {
                item.Draw(gameTime, spriteBatch);
            }

            // dörrar
            foreach (Door item in doors)
            {
                item.Draw(gameTime, spriteBatch);
            }

            // bakgrunden
            animbackground.Draw(gameTime, spriteBatch, 1f, 0.3f);
            // förgrunden
            spriteBatch.Draw(foreground,
                             Vector2.Zero,
                             new Rectangle(0, 0,
                                           game.Window.ClientBounds.Width,
                                           game.Window.ClientBounds.Height),
                             Color.White,
                             0,
                             Vector2.Zero,
                             1,
                             SpriteEffects.None,
                             0.003f);

            if (!Registry.inventoryInUse)
            {
                string textToDraw    = null;
                bool   drawText      = false;
                bool   clickedOnItem = false;
                bool   clickedOnDoor = false;
                foreach (Item item in items)
                {
                    if (Mousecontrol.rightClickedOnItem(item))
                    {
                        clickedOnItem = true;
                    }
                }

                if ((Mouse.GetState().RightButton == ButtonState.Pressed && clickedOnItem))
                {
                    textToDraw = Mousecontrol.getDescription();
                    drawText   = true;
                }
                else if (clickedOnItem)
                {
                    textToDraw = Mousecontrol.getName();
                    drawText   = true;
                }
                if (!clickedOnItem)
                {
                    foreach (Door door in doors)
                    {
                        if (Mousecontrol.rightClickedOnItem(door) && Mouse.GetState().RightButton == ButtonState.Pressed)
                        {
                            clickedOnDoor = true;
                        }
                    }
                    if (clickedOnDoor)
                    {
                        textToDraw = Mousecontrol.getDescription();
                        drawText   = true;
                    }
                }

                if (drawText)
                {
                    spriteBatch.DrawString(game.Content.Load <SpriteFont>(@"textfont"), textToDraw,
                                           new Vector2(game.Window.ClientBounds.Width / 6 - 4f * (textToDraw.Count()),
                                                       0), Color.White);
                }
            }

            // npc:er
            foreach (NPC npc in npcs)
            {
                npc.Draw(gameTime, spriteBatch, Registry.playerPosition);
            }
            if (dialogIsActive)
            {
                if (soundhasplayed == false)
                {
                    dialogSound.Play();
                    soundhasplayed = true;
                }
                roomDialog.Speak(gameTime, spriteBatch, Vector2.Zero);
            }
        }