Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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;
                }
            }
        }