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