コード例 #1
0
        public override void Update(IManageInput inputService, GameTime gameTime)
        {
            //Hvis spilleren er helt til høyre av skjermen
            if(_player1.FootBox.Right >= spriteService.GameWindowSize.X)
            {
                //Hvis spilleren er i øvre tredjedel av skjermen skal man endre InGameLevelState til "FightingLevel"
                if (_player1.FootBox.Bottom < 315 && _player1.FootBox.Bottom > 190)
                {
                    ClearLevel();
                    _inGameService.ChangeInGameState("FightingLevel", _player1.FootBox.Width +2, _player1.FootBox.Y);
                }
                //Hvis spilleren er i midtre tredjedel av skjermen skal man endre InGameLevelState til "MiningLevel"
                else if (_player1.FootBox.Bottom < 490 && _player1.FootBox.Bottom > 380)
                {
                    ClearLevel();
                    _inGameService.ChangeInGameState("MiningLevel", _player1.FootBox.Width + 2, _player1.FootBox.Y);
                }
                //Hvis spilleren er i nedre tredjedel av skjermen skal man endre InGameLevelState til "TownLevel"
                else if (_player1.FootBox.Bottom < 690 && _player1.FootBox.Bottom > 570)
                {
                    ClearLevel();
                    _inGameService.ChangeInGameState("TownLevel", _player1.FootBox.Width + 2, _player1.FootBox.Y);
                }
            }

            base.Update(inputService, gameTime);
        }
コード例 #2
0
        /// <summary>
        /// Allows the game component to perform any initialization it needs to before starting
        /// to run.  This is where it can query for any required services and load content.
        /// </summary>
        public override void Initialize()
        {
            player = (Midi.Player)Game.Services.GetService(typeof(Midi.Player));
            inputManager = (IManageInput)Game.Services.GetService(typeof(IManageInput));
            splasher = (Graphics.SplashText)Game.Services.GetService(typeof(Graphics.SplashText));

            Enabled = false;

            ((BandMaster)Game).ModeChanged += delegate (Object o, EventArgs a) 
            {
                if (((BandMaster)Game).Mode == this)
                    Helpers.Wait(2.0,  ((BandMaster)Game).StartTheDance);
                if (applause != null)
                {
                    applause.Volume = 1f;
                }
            };
            ((BandMaster)Game).SongChanged += onSongChanged;
            ((BandMaster)Game).SongLoaded += onSongLoaded;
            player.Completed += onSongDone;

            ((BandMaster)Game).Updated += delegate()
            {
                if (applause != null) applause.Volume = applauseVolume.Value;
            };

            base.Initialize();
        }
コード例 #3
0
 public override void Update(IManageInput inputService)
 {
     //Hvis spilleren trykket på venstreknappen denne framen
     if (hovered && inputService.MouseWasPressedThisFrame("left"))
     {
         buttonPressed();
     }
     base.Update(inputService);
 }
コード例 #4
0
ファイル: PlayButton.cs プロジェクト: struckAnerve/vikingvalg
        public override void Update(IManageInput inputService)
        {
            //dersom knappen trykkes starter spillet
            if (hovered && inputService.CurrMouse.LeftButton == ButtonState.Pressed)
            {
                hovered = false;
                _menuController.stateService.ChangeState("InGame");
            }

            base.Update(inputService);
        }
コード例 #5
0
ファイル: Button.cs プロジェクト: struckAnerve/vikingvalg
 /// <summary>
 /// Sjekker om musen er over boksen eller ikke
 /// </summary>
 public virtual void Update(IManageInput inputService)
 {
     //om knappen hovres eller ikke
     if (hovered == false && _clickableBox.Contains(inputService.CurrMouse.X, inputService.CurrMouse.Y))
     {
         hovered = true;
         _sourceRectangle.X = _destinationRectangle.Width;
     }
     else if (hovered == true && !_clickableBox.Contains(inputService.CurrMouse.X, inputService.CurrMouse.Y))
     {
         hovered = false;
         _sourceRectangle.X = 0;
     }
 }
コード例 #6
0
ファイル: NeutralNPC.cs プロジェクト: struckAnerve/vikingvalg
        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);
        }
コード例 #7
0
        /// <summary>
        /// Allows the game component to perform any initialization it needs to before starting
        /// to run.  This is where it can query for any required services and load content.
        /// </summary>
        public override void Initialize()
        {
            //initialiserer komponenter
            _stateService = (IManageStates)Game.Services.GetService(typeof(IManageStates));
            _inputService = (IManageInput)Game.Services.GetService(typeof(IManageInput));

            //oppretter hovedmenyen
            _mainMenu = new MainMenu((IManageSprites)Game.Services.GetService(typeof(IManageSprites)), _stateService);
            _mainMenu.MainState();
            ToDrawMainMenu = _mainMenu.toDrawMenuClass;

            //oppretter pausemenyen
            _pauseMenu = new PauseMenu((IManageSprites)Game.Services.GetService(typeof(IManageSprites)), _stateService);
            _pauseMenu.MainState();
            ToDrawPauseMenu = _pauseMenu.toDrawMenuClass;

            base.Initialize();
        }
コード例 #8
0
ファイル: MainMenu.cs プロジェクト: struckAnerve/vikingvalg
 public override void Update(IManageInput inputService, GameTime gameTime)
 {
     //oppdaterer det som er i tegnelisten
     foreach (Sprite toUpdate in toDrawMenuClass)
     {
         if (toUpdate is IUseInput)
         {
             IUseInput needsInput = (IUseInput)toUpdate;
             needsInput.Update(inputService);
         }
         else
         {
             toUpdate.Update();
         }
         if (toUpdate is AnimatedSprite)
         {
             AnimatedSprite updatableAnimation = (AnimatedSprite)toUpdate;
             updatableAnimation.animationPlayer.Update(gameTime);
         }
     }
 }
コード例 #9
0
ファイル: Menu.cs プロジェクト: struckAnerve/vikingvalg
 public abstract void Update(IManageInput inputService, GameTime gameTime);
コード例 #10
0
        public virtual void Update(IManageInput inputService, GameTime gameTime)
        {
            //Går du helt til venstre på skjermen (uten å være i ChooseDirectionLevel) blir du tatt til ChooseDirectionLevel
            if (_player1.FootBox.Left <= 0 && _inGameService.InGameState != "ChooseDirectionLevel")
            {
                ClearLevel();
                _inGameService.ChangeInGameState("ChooseDirectionLevel", (int)spriteService.GameWindowSize.X - _player1.FootBox.Width - 2, returnPositionY);
            }

            //fjern det som skal fjernes fra tegnelisten
            if (_toRemoveInGameLevel != null)
            {
                foreach (Sprite toRemove in _toRemoveInGameLevel)
                {
                    _toDrawInGameLevel.Remove(toRemove);
                }
                _toRemoveInGameLevel.Clear();
            }
            //legg til det som skal legges til i tegnelisten
            if (_toDrawQueue != null)
            {
                foreach (Sprite toDraw in _toDrawQueue)
                {
                    _toDrawInGameLevel.Add(toDraw);
                }
                _toDrawQueue.Clear();
            }
            //oppdater det som ligger i tegnelisten
            foreach (Sprite toUpdate in _toDrawInGameLevel.ToList())
            {
                if (toUpdate is IUseInput)
                {
                    IUseInput needsInput = (IUseInput)toUpdate;
                    needsInput.Update(inputService);
                }
                else if (toUpdate is AnimatedStaticSprite)
                {
                    AnimatedStaticSprite needsGameTime = (AnimatedStaticSprite)toUpdate;
                    if(needsGameTime.IsPlaying)
                        needsGameTime.Update(gameTime);
                }
                else
                {
                    toUpdate.Update();
                    if (toUpdate is Stone)
                    {
                        Stone stoneToUpdate = (Stone)toUpdate;
                        if (stoneToUpdate.stoneHitArt.IsPlaying)
                            stoneToUpdate.stoneHitArt.Update(gameTime);
                    }
                }
                if (toUpdate is AnimatedSprite)
                {
                    AnimatedSprite updatableAnimation = (AnimatedSprite)toUpdate;
                    if (updatableAnimation.animationPlayer.Update(gameTime) == true)
                    {
                        updatableAnimation.idle();
                    }
                }
            }
        }
コード例 #11
0
        public override void Update(IManageInput inputService, GameTime gameTime)
        {
            //Sjekker om den aktive fienden er død, hvis den er det, fjern den, bytt til ny active enemy
            if (activeEnemy.CurrHp <= 0)
            {
                levelEnemies.Remove(activeEnemy);
                RemoveInGameLevelDrawable(activeEnemy);
                if (levelEnemies.Count > 0)
                {
                    activeEnemy = levelEnemies[0];
                    foreach (AnimatedCharacter enemy in levelEnemies)
                    {
                        enemy.activeEnemy = activeEnemy;
                    }
                    _player1.activeEnemy = activeEnemy;
                }
                else
                {
                    _player1.activeEnemy = null;
                }
            }

            base.Update(inputService, gameTime);
        }
コード例 #12
0
ファイル: TownLevel.cs プロジェクト: struckAnerve/vikingvalg
 public override void Update(IManageInput inputService, GameTime gameTime)
 {
     base.Update(inputService, gameTime);
 }
コード例 #13
0
ファイル: Player.cs プロジェクト: struckAnerve/vikingvalg
 /// <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);
     }
 }
コード例 #14
0
ファイル: Player.cs プロジェクト: struckAnerve/vikingvalg
 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();
     }
 }
コード例 #15
0
        public void Update(IManageInput inputService)
        {
            foreach (PlayerTextAnswer answer in playerAnswers)
            {
                //sjekker om et svaralternativ er hovret eller ikke
                if (!answer.hovered && answer.answerBox.Contains(inputService.CurrMouse.X, inputService.CurrMouse.Y))
                {
                    answer.hovered = true;
                    answer.textColor = _hoveredAnswerColor;
                }
                else if(answer.hovered && !answer.answerBox.Contains(inputService.CurrMouse.X, inputService.CurrMouse.Y))
                {
                    answer.hovered = false;
                    answer.textColor = _defaultAnswerColor;
                }

                //hvis svaralternativet klikkes
                if(answer.hovered && inputService.MouseWasPressedThisFrame("left"))
                {
                    _npc.AnswerClicked(answer);
                    break;
                }
            }
        }
コード例 #16
0
        /// <summary>
        /// Allows the game component to perform any initialization it needs to before starting
        /// to run.  This is where it can query for any required services and load content.
        /// </summary>
        public override void Initialize()
        {
            //laster inn komponenter
            _spriteService = (IManageSprites)Game.Services.GetService(typeof(IManageSprites));
            _stateService = (IManageStates)Game.Services.GetService(typeof(IManageStates));
            _collisionService = (IManageCollision)Game.Services.GetService(typeof(IManageCollision));
            _inputService = (IManageInput)Game.Services.GetService(typeof(IManageInput));
            _audioService = (IManageAudio)Game.Services.GetService(typeof(IManageAudio));

            //oppretter musikkkontrollerne
            _spriteService.LoadDrawable(new StaticSprite("musicOptions"));
            _spriteService.LoadDrawable(new StaticSprite("soundOptions"));
            musicToggle = new musicToggleButton("musicOptions", new Rectangle((int)_spriteService.GameWindowSize.X - 40, 0, 40, 40), new Rectangle(0, 0, 40, 40), Game);
            soundToggle = new SoundToggleButton("soundOptions", new Rectangle((int)_spriteService.GameWindowSize.X - 80, 0, 40, 40), new Rectangle(0, 0, 40, 40), Game);
            _persistentInGameUI.Add(musicToggle);
            _persistentInGameUI.Add(soundToggle);

            //oppretter Random
            rand = new Random();

            //oppretter spilleren
            _player1 = new Player(new Rectangle(100, 100, 150, 330), 0.5f, Game);
            _spriteService.LoadDrawable(_player1);

            //oppretter spillbanene
            _chooseDirectionlevel = new ChooseDirectionLevel(_player1, Game);
            _fightingLevel = new FightingLevel(_player1, Game);
            _miningLevel = new MiningLevel(_player1, Game);
            _townLevel = new TownLevel(_player1, Game);

            //Selve spillet starter på denne banen
            ChangeInGameState("ChooseDirectionLevel", 100, 450);

            base.Initialize();
        }