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