Ejemplo n.º 1
0
        public void Update(IManageInput inputService)
        {
            //Sjekker om spilleren prøver å snakke med NPCen
            if(_player1.FootBox.Intersects(_talkingRangeBox) && _player1.FacesTowards(this._talkingRangeBox.Center.X) && inputService.KeyWasPressedThisFrame(Keys.F))
            {
                ChangeConversationState();
            }
            if (inConversation)
            {
                if (!_player1.FootBox.Intersects(_talkingRangeBox))
                {
                    ChangeConversationState();
                }
            }

            dialogController.Update(inputService);
        }
Ejemplo n.º 2
0
 public void Update(IManageInput inputService)
 {
     if(inputService.KeyWasPressedThisFrame(Keys.P)) levelUp();
     //setter layerdepth til bunnen av spilleren
     setLayerDepth(_footBox.Bottom);
     //Øker hastigheten til walk-animasjonen
     if (animationPlayer.CurrentAnimation == "battleBlockWalk")
         animationPlayer.PlaySpeedMultiplier = 1.4f;
     else
         animationPlayer.PlaySpeedMultiplier = 1f;
     //Hvis spilleren ikke går, stopp gålyden
     if (AnimationState != "walking") _audioManager.StopLoop("walk");
     //Hvis spilleren ikke angriper
     if (AnimationState != "slashing")
     {
         //SJekk hvilke knapper som blir trykket og aktiver funksjonene
         if (inputService.KeyIsDown(Keys.Space))
         {
             attackSlash();
         }
         else if (inputService.KeyIsDown(Keys.LeftShift))
         {
             block();
         }
         //Hvis én av piltastene er nede, aktiver walk
         else if (inputService.KeyIsDown(Keys.Left) || inputService.KeyIsDown(Keys.Down) || inputService.KeyIsDown(Keys.Up) || inputService.KeyIsDown(Keys.Right))
         {
             walk(inputService);
         }
         //Hvis ingenting blir trykket, stå stille
         else
         {
             idle();
         }
     }
     //Hvis spilleren angriper og er på slutten av animasjonen
     else if (animationPlayer.Transitioning == false && animationPlayer.CurrentKeyframeIndex > 0 && animationPlayer.CurrentKeyframeIndex == (animationPlayer.currentPlayingAnimation.Keyframes.Count() - 1))
     {
         //Hvis det finnes en aktiv fiende
         if (activeEnemy != null)
         {
             //Hvis targetboksen er innenfor fiendens footbox, og spilleren ser mot fienden
             if (TargetBox.Intersects(activeEnemy.FootBox) && FacesTowards((float)activeEnemy.FootBox.Center.X))
             {
                 //Aktiver tilfeldig angrepslyd og gjør skade på fienden
                 _audioManager.AddSound(Directory + "/attack" + rInt(1, 3));
                 activeEnemy.takeDamage(_damage);
             }
         }
         //Hvis det finnes steiner som kan treffes
         else if (StonesToMine != null)
         {
             //Sjekker om spillerens targetbox er innenfor en av steinene i listen, og om han står mot dem
             foreach (Stone stone in StonesToMine)
             {
                 if (TargetBox.Intersects(stone.FootBox) && stone.endurance > 0 && FacesTowards(stone.FootBox.Center.X))
                 {
                     //Aktiver tilfeldig "slå på stein"-lyd og gjør skade på steinen
                     _audioManager.AddSound(Directory + "/clang" + rInt(1, 4));
                     stone.IsHit();
                 }
             }
         }
         idle();
     }
 }