Пример #1
0
        protected override void Update(GameTime gameTime)
        {
            KeyboardState keystate   = Keyboard.GetState();
            MouseState    mousestate = Mouse.GetState();

            viking.setFinish(goal.FinishVisible);

            mousePos = Resolution.MouseHelper.CurrentMousePosition;
            if (gamestate == 0)
            {
                //update menu screen
                gamestate = menu.Update(mousestate, mousePos, keystate, gameTime, paused);
                if (!paused)
                {
                    viking.Initialize(GraphicsDevice);
                    killcount = 0;
                }
                viking.setVolume(menu.getMasterVolume(), menu.getGunVolume(), menu.getMusicVolume(), menu.getOtherVolume());
            }
            else if (gamestate == 1)
            {
                paused = false;

                if (viking.musicIsPaused())
                {
                    viking.resumeMusic();
                }

                if (viking.dead())
                {
                    gamestate = 2;
                }

                updateEnemies(gameTime);
                updatePowerups(gameTime);
                updateSpiders(gameTime);
                updateSpawners(gameTime);

                goal.Update(gameTime, viking, speedModifier);

                timerstuff += (float)gameTime.ElapsedGameTime.TotalSeconds;

                if (timerstuff > waittimer)
                {
                    //viking.giveExp(50); // uncomment to give constant exp
                    //viking.damage(); // uncomment to give constant damage
                    timerstuff = 0;
                }


                if (viking.scrollLeft && groundBlock.X < 0)
                {
                    tausta1.X += (int)(250 * elapsed);
                    tausta2.X += (int)(250 * elapsed);
                    tausta3.X += (int)(250 * elapsed);

                    groundBlock.X += (int)(500 * elapsed);

                    treeRec.X += (int)(400 * elapsed);

                    speedModifier       = -(int)(500 * elapsed);
                    spiderSpeedModifier = -(int)(400 * elapsed);

                    levelLoc -= (int)(500 * elapsed);
                }
                else if (!viking.scrollRight)
                {
                    speedModifier       = 0;
                    spiderSpeedModifier = 0;
                }

                if (viking.scrollRight && groundBlock.X > -levelLength)
                {
                    tausta1.X -= (int)(250 * elapsed);
                    tausta2.X -= (int)(250 * elapsed);
                    tausta3.X -= (int)(250 * elapsed);

                    groundBlock.X -= (int)(500 * elapsed);

                    treeRec.X -= (int)(400 * elapsed);

                    speedModifier       = (int)(500 * elapsed);
                    spiderSpeedModifier = (int)(400 * elapsed);

                    levelLoc += (int)(500 * elapsed);
                }
                else if (!viking.scrollLeft)
                {
                    speedModifier       = 0;
                    spiderSpeedModifier = 0;
                }

                //Tausta1 lähtee 0, tausta 2 lähtee 1920, tausta 3 lähtee -1920
                if (tausta1.X < -1920 && viking.walkRight)
                {
                    tausta3.X = tausta2.X + 1920;
                }

                if (tausta2.X < -1920 && viking.walkRight)
                {
                    tausta1.X = tausta3.X + 1920;
                }

                if (tausta3.X < -1920 && viking.walkRight)
                {
                    tausta2.X = tausta1.X + 1920;
                }

                //toisee suuntaa
                if (tausta1.X > 1920 && !viking.walkRight)
                {
                    tausta2.X = tausta3.X - 1920;
                }

                if (tausta2.X > 1920 && !viking.walkRight)
                {
                    tausta3.X = tausta1.X - 1920;
                }

                if (tausta3.X > 1920 && !viking.walkRight)
                {
                    tausta1.X = tausta2.X - 1920;
                }

                elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;


                viking.Update(gameTime, elapsed, keystate, mousestate, mousePos);
                health.Update(viking);
                experience.Update(viking);
            }
            else if (gamestate == 2)
            {
                gamestate = theend.Update(gameTime);
            }

            if (keystate.IsKeyDown(Keys.Escape))
            {
                if (gamestate == 1)
                {
                    gamestate = 0;
                    paused    = true;
                    viking.pauseMusic();
                }
            }
            if (menu.menuExit())
            {
                this.Exit();
            }

            base.Update(gameTime);
        }