private void doorUpdate() { bool clickedThisFrame = false; foreach (Door item in doors) { if (Mousecontrol.clickedOnItem(item.getSprite().Position, item.getSprite().FrameSize, Mousecontrol.clicked()) && !Registry.inventoryInUse) { if (!item.isLocked) { toChangeRoom = true; nextDoor = item; clickedThisFrame = true; } } else if (Mousecontrol.clicked() && !clickedThisFrame) { toChangeRoom = false; //nextDoor = new Door(); } } if (toChangeRoom) { if (Mousecontrol.inProximityToItem(nextDoor.position, new Point(nextDoor.getSprite().FrameSize.X + 2, nextDoor.getSprite().FrameSize.Y + 2))) { toChangeRoom = false; int nextRoomId = int.Parse(nextDoor.nextRoomID); Vector2 door2Position = nextDoor.door2Position; nextDoor = new Door(); changeRoom(nextRoomId, door2Position); } } }
public bool giveDoorItem(Item itemClickedOn) { bool temp = false; foreach (Door door in doors) { if (door.isLocked && Mousecontrol.clickedOnItem(door.getSprite().Position, door.getSprite().FrameSize, true) && (itemClickedOn.name == door.getKey())) { door.Unlock(); temp = true; } } return(temp); }
public bool giveNPCItem(Item itemClickedOn) { bool temp = false; foreach (NPC npc in npcs) { if (Mousecontrol.clickedOnItem(npc.getPosition, npc.getFrameSize, true) && (itemClickedOn.name == npc.wantedItem)) { npc.givenItem(); temp = true; } } return(temp); }
private void mousecontrolUpdate() { //Om man klickar med musen //Om man klickar på ett föremål i rummet bool clickedThisFrame = false; foreach (Item item in items) { if (Mousecontrol.clickedOnItem(item.getSprite().Position, item.getSprite().FrameSize, Mousecontrol.clicked())) { if (item.isPickable) { isItemClicked = true; itemClicked = item; clickedThisFrame = true; } } else if (Mousecontrol.clicked() && !clickedThisFrame) { isItemClicked = false; } } }
public void Update(GameTime gameTime, Rectangle clientBounds) { clickedOnNew = false; clickedOnOpen = false; if (Mousecontrol.clickedOnItem(openSprite.Position, openSprite.FrameSize, Mousecontrol.clicked())) { clickedOnOpen = true; } if (Mousecontrol.clickedOnItem(newSprite.Position, newSprite.FrameSize, Mousecontrol.clicked())) { clickedOnNew = true; } if (clickedOnNew) { newSprite.Update(gameTime, clientBounds); } if (clickedOnOpen) { openSprite.Update(gameTime, clientBounds); } if (Mousecontrol.mouseOverItem(openSprite.Position, openSprite.FrameSize)) { openNowSprite = openSprite2; } else if (Mousecontrol.mouseOverItem(newSprite.Position, newSprite.FrameSize)) { newNowSprite = newSprite2; } else { newNowSprite = newSprite; openNowSprite = openSprite; } }
public void Update() { if (isInteractingWithItem && !inventoryInUse) { if (Mousecontrol.clicked()) { isInteractingWithItem = false; } } if (isInteractingWithItem) { itemClickedOn.setPosition(new Vector2(Mouse.GetState().X / 3 - itemClickedOn.getSprite().Texture.Width / 2, Mouse.GetState().Y / 3 - itemClickedOn.getSprite().Texture.Height / 2)); } //Uppdatering av muskontroll if (inventoryInUse) { if (isInteractingWithItem) { //Om man klickar med vänstra musknappen... if (Mousecontrol.clicked()) { bool clickedOnItem = false; Item tempItem = new Item(); foreach (Item item in inventory) { //På ett föremål... if (Mousecontrol.clickedOnItem(item.getSprite().Position, item.getSprite().FrameSize, true)) { clickedOnItem = true; tempItem = item; } } //...och om föremålet går att kombinera och man klickar på ett föremål som går att kombinera if (itemClickedOn.isCombinable && clickedOnItem && itemClickedOn.isCombinable) { //...går det att kombinera föremålen så kombineras de och annars läggs det föremålet som man klickat på tillbaks i inventoryn if (!combineItem(itemClickedOn, tempItem)) { addItem(itemClickedOn); } isInteractingWithItem = false; } else { addItem(itemClickedOn); isInteractingWithItem = false; } } } else { //Om man klickar ner musen... if (Mousecontrol.clicked()) { bool clickedOnItem = false; //... och om man klickar på ett föremål i sin inventory... foreach (Item item in inventory) { if (Mousecontrol.clickedOnItem(item.getPosition(), item.getSprite().FrameSize, true)) { itemClickedOn = item; clickedOnItem = true; } } if (clickedOnItem) { //Blir föremålet ett föremål som följer musen och den tas bort från själva inventoryn isInteractingWithItem = true; removeItem(itemClickedOn); } } } } Registry.itemsInInventory = inventory; Registry.inventoryInUse = inventoryInUse; }
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); } }
public void Update(Game game, GameTime gameTime, Rectangle clientBounds) { if (Registry.playersClothes == Registry.WhichClothes.vanliga) { currentSprite = vanligSprite; } else if (Registry.playersClothes == Registry.WhichClothes.militar) { currentSprite = militarSprite; } else if (Registry.playersClothes == Registry.WhichClothes.babyjerry) { currentSprite = babyjerrySprite; } else if (Registry.playersClothes == Registry.WhichClothes.jkea) { currentSprite = jkeaSprite; } else if (Registry.playersClothes == Registry.WhichClothes.kvinna) { currentSprite = kvinnaSprite; } else if (Registry.playersClothes == Registry.WhichClothes.vanligaKort) { currentSprite = vanligaKortSprite; } else if (Registry.playersClothes == Registry.WhichClothes.finkladd) { currentSprite = finkladdSprite; } else if (Registry.playersClothes == Registry.WhichClothes.fall) { currentSprite = fallSprite; } else if (Registry.playersClothes == Registry.WhichClothes.finkladd2) { currentSprite = finkladd2Sprite; } else if (Registry.playersClothes == Registry.WhichClothes.vanliga2) { currentSprite = vanlig2Sprite; } //scaleToPosition(clientBounds); //Är inventoryn öppen ska spelaren inte röra på sig if (Registry.changingRoom) { position = Registry.nextRoomDoorPosition; target = position; } if (!inventory.InventoryInUse || Registry.changingRoom) { //Rör spelaren på sig? isMoving = true; //styrning av spelare mouseState = Mouse.GetState(); //mousePosition = mouseState/3 för att mouseState inte har något med upplösningen (som tredubblas) att göra mousePosition.X = (mouseState.X / 3); mousePosition.Y = (mouseState.Y / 3); if (Mousecontrol.clicked()) { target.X = mousePosition.X - 15; target.Y = mousePosition.Y - 67; } if (Registry.pause) { target = position; } direction = target - position; direction.Normalize(); if (position.X != target.X && position.Y != target.Y) { position.X += direction.X * speed; position.Y += direction.Y * speed; } if (position.X < target.X + 1 && position.X > target.X - 1 && position.Y < target.Y + 1 && position.Y > target.Y - 1) { speed = 0; //Spelaren rör inte på sig isMoving = false; } else { speed = 1.5f; } oldState = mouseState; } //Rör spelaren på sig ska den animeras som vanilgt if (isMoving) { //Skillnad i X-led och skillnad i Y-led if (position.Y <= target.Y) { deltaY = target.Y - position.Y; } else { deltaY = position.Y - target.Y; } if (position.X < target.X) { deltaX = target.X - position.X; } else { deltaX = position.X - target.X; } //Bestämmning av vilken animation som ska användas av spelaren //Är man påväg åt höger, vänster, up eller ner? //Går man mest vertikalt eller horisontellt? if (position.X <= target.X && deltaX > deltaY) { flip = true; yBounds = 0; rightCurrentFrame = new Point(0, 1); downCurrentFrame = new Point(0, 2); upCurrentFrame = new Point(0, 3); } else if (position.X >= target.X && deltaX > deltaY) { flip = false; yBounds = 0; rightCurrentFrame = new Point(0, 1); downCurrentFrame = new Point(0, 2); upCurrentFrame = new Point(0, 3); } else if (position.Y >= target.Y && deltaX < deltaY) { yBounds = 2; leftCurrentFrame = new Point(0, 0); downCurrentFrame = new Point(0, 2); rightCurrentFrame = new Point(0, 1); } else { yBounds = 1; leftCurrentFrame = new Point(0, 0); rightCurrentFrame = new Point(0, 1); upCurrentFrame = new Point(0, 3); } } //Rör spelaren inte på sig så ska han ha en stillastående sprite else { yBounds = 3; leftCurrentFrame = new Point(0, 0); rightCurrentFrame = new Point(0, 1); downCurrentFrame = new Point(0, 2); upCurrentFrame = new Point(0, 3); } if (inventory.InteractingWithItem && !inventory.InventoryInUse) { if (Mousecontrol.clicked() && Registry.currentRoom.giveNPCItem(inventory.getItemClickedon)) { inventory.removeItem(inventory.getItemClickedon); } else if (Mousecontrol.clicked() && Registry.currentRoom.giveDoorItem(inventory.getItemClickedon)) { inventory.removeItem(inventory.getItemClickedon); } else if (Mousecontrol.clicked()) { addItem(inventory.getItemClickedon); } } inventory.Update(); currentSprite.Position = position; Registry.playerPosition = position; updateLayerDepth(); if (!inventory.InventoryInUse) { currentSprite.Update(gameTime, clientBounds, yBounds); } }
public void Update(GameTime gameTime, Rectangle clientBounds) { // När man klickar på NPC:n så börjar dialogen if (Mousecontrol.clickedOnItem(position, new Point(stillTexture.Width / 3, stillTexture.Height), Mousecontrol.clicked()) && !isTalking && !Registry.inventoryInUse) { Talk(); } // -- Händelser baserade på dialoger -- // if (activeDialog.getActiveLine() == "give") // NPC:n ger bort sin item { giveItem = true; dialogNumber++; } if (activeDialog.getActiveLine() == "0" || Keyboard.GetState().IsKeyDown(Keys.S)) // Avslutar dialogen { isTalking = false; } activeDialog.checkLines(); // Spriteändringar beroende på om NPC:N pratar if (activeDialog.getSpeaker() == "NPC") { activeSprite = talkSprite; } else { activeSprite = stillSprite; } if (!isTalking) { activeSprite = stillSprite; } if (position.Y != 0) { layerPosition = (1 - (position.Y + activeSprite.Texture.Height) / 180) / 3; //3-D EFFEKTER!!!! NPC:n hamnar bakom och framför saker beroende på vart den står } else { layerPosition = 0.2f; } activeSprite.Update(gameTime, clientBounds); // Följ efterspelaren if (lookatplayer) { if (position.X < Registry.playerPosition.X) { flip = false; } else { flip = true; } } }