Exemple #1
0
 /// <summary>
 /// Holder oversikt over hvilke knapper som er trykket, og hvorvidt spilleren er blokkert
 /// </summary>
 /// <param name="inputService">Inputservice som holder oversikt over input</param>
 public void walk(IManageInput inputService)
 {
     /* Hvis "walking" animasjonen ikke er aktiv, og AnimationState ikke er "walking"
      * aktiveres "walking" animasjonen, og bytter AnimationState til "walking" */
     if (animationPlayer.CurrentAnimation != "walking" && AnimationState != "walking")
     {
         animationPlayer.TransitionToAnimation("battleBlockWalk", 0.2f);
         AnimationState = "walking";
     }
     /* Hvis AnimationState er "walking"
      * (Man kan ikke bruke currentanimation, fordi han skal bevege seg mens han er i overgang mellom to animasjoner)*/
     if (AnimationState == "walking")
     {
         //Start gålyden
         _audioManager.PlayLoop("walk");
         //Hvis man både holder nede venstre og høyre, stå stille
         if (inputService.KeyIsDown(Keys.Right) && inputService.KeyIsDown(Keys.Left))
         {
             idle();
         }
         //Hvis man holder nede høyreknappen, og man ikke er blokkert fra høyre
         else if (inputService.KeyIsDown(Keys.Right) && !BlockedRight)
         {
             //Ikke snu karakteren, beveg han mot høyre
             _destinationRectangle.X += _xSpeed;
             Flipped = false;
         }
         //Hvis man holder nede venstreknappen, og man ikke er blokkert fra venstre
         else if (inputService.KeyIsDown(Keys.Left) && !BlockedLeft)
         {
             //Snu karakteren og beveg han mot venstre
             _destinationRectangle.X -= _xSpeed;
             Flipped = true;
         }
         //Hvis man både holder nede opp og ned, stå stille
         if (inputService.KeyIsDown(Keys.Up) && inputService.KeyIsDown(Keys.Down))
         {
             idle();
         }
         //Hvis man holder nede opp, og man ikke er blokkert fra venstre
         else if (inputService.KeyIsDown(Keys.Up) && !BlockedTop)
         {
             _destinationRectangle.Y -= _xSpeed;
         }
         //Hvis man holder nede ned, og man ikke er blokkert fra venstre
         else if (inputService.KeyIsDown(Keys.Down) && !BlockedBottom)
         {
             _destinationRectangle.Y += _xSpeed;
         }
         //Flytter hitboxen til samme sted som spilleren
         _footBox.Y = ((int)(_destinationRectangle.Y + footBoxYOffset));
         _footBox.X = (int)(_destinationRectangle.X - footBoxXOffset);
         TargetBox.X = (int)(_footBox.X - targetBoxXDif / 2);
         TargetBox.Y = (int)_footBox.Y - targetBoxYDif / 2;
         healthbar.setPosition(_footBox);
     }
 }
Exemple #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();
     }
 }