Пример #1
0
        byte MiniScreen.Update(GameTime gameTime, KeyboardState prevStateKb, MouseState prevStateM)
        {
            if (flasher != null)
            {
                if ((flashCounter & 1) == 0)
                {
                    flashTimer -= gameTime.ElapsedGameTime.TotalSeconds * timerMult * 4.2;
                }
                else
                {
                    flashTimer += gameTime.ElapsedGameTime.TotalSeconds * timerMult * 4.2;
                }
                if (flasher.health > 0)               //Attack Flash
                {
                    flash.Parameters["time"].SetValue((float)(flashTimer + 0.1));
                }
                else                                                                     //Dying flash
                {
                    flash.Parameters["time"].SetValue((float)(flashTimer / 1.1 + 0.01)); //the added value controls the offset, multiplication controls transition speed
                }
                if (flashTimer > 0.2)                                                    // || flashTimer < 0)
                {
                    flashTimer = 0.2;
                    flashCounter++;
                    //flashColor = Color.Red;
                }
                else if (flashTimer < 0)
                {
                    flashTimer = 0;
                    flashCounter++;
                    //flashColor = Color.Blue;
                }
                if (flashCounter > 11)
                {
                    flasher      = null;
                    flashTimer   = 0;
                    flashCounter = 1;
                    //flashColor = Color.Green;
                }

                switch (flashCounter)
                {
                case 0:
                    flashColor = Color.Red;
                    break;

                case 1:
                    //Final color
                    flashColor = Color.Transparent;
                    break;

                case 2:
                    flashColor = Color.Transparent;
                    break;

                case 3:
                    flashColor = new Color(128, 128, 64);
                    break;

                case 4:
                    flashColor = new Color(192, 192, 128);
                    break;

                case 5:
                    flashColor = new Color(192, 192, 128);
                    break;

                case 6:
                    flashColor = new Color(192, 192, 128);
                    break;

                case 7:
                    flashColor = new Color(128, 128, 64);
                    break;

                case 8:
                    flashColor = new Color(128, 128, 64);
                    break;

                case 9:
                    flashColor = new Color(128, 128, 64);
                    break;

                case 10:
                    flashColor = Color.Black;
                    break;

                default:
                    flashColor = Color.Transparent;
                    break;
                }
            }

            enemy.Update(gameTime);

            travis.Update(gameTime, Keyboard.GetState());

            world.Step((float)gameTime.ElapsedGameTime.TotalSeconds);
            combatTimer += gameTime.ElapsedGameTime.TotalSeconds;
            waiterTimer += gameTime.ElapsedGameTime.TotalSeconds;
            turnWaiter  += gameTime.ElapsedGameTime.TotalSeconds;

            commandName.finishMessage();
            commandName.Update(gameTime, prevStateKb, prevStateM);
            UpdateBackground(gameTime);

            if (curPhase == Phase.EnemyDeathPhase)
            {
                if (flasher == null)                //Executed after flashing finishes
                {
                    //Renders an extra frame at the end so the sprite is invisible during transition
                    if (exitReady)
                    {
                        return(255);
                    }
                    if (enemy.IsKilled() && !deathMessageDisplayed)
                    {
                        exitReady = true;
                        //return 255;
                        text = new Hud(new string[] { enemy.deathMessage }, content, 30, 2, posY: 3, canClose: true);
                        text.finishMessage();
                        text.visible          = false;
                        deathMessageDisplayed = true;
                    }
                    enemy.Kill();
                }
                Console.WriteLine("flash: " + flashCounter);

                if (text.messageComplete())
                {
                    if (flashCounter == 1)
                    {
                        text = new Hud(new string[] { "" }, content, 30, 2, posY: 3, canClose: false);
                        text.finishMessage();
                        //text.finishText();
                        //text.visible = false;
                        victory    = true;
                        turnWaiter = 0;
                    }
                }
            }


            if (turnWaiter > 0.2)
            {
                if (text.messageComplete())
                {
                    if (waiter != null)
                    {
                        if (waiter.attacked)
                        {
                            if (waiter is Enemy)
                            {
                                if (waiter.IsDone(gameTime, combatTimer))
                                {
                                    waiter.ForceFinish();
                                    waiter     = null;
                                    turnWaiter = 0;
                                }
                            }
                            else
                            {
                                if (waiter.IsDone(gameTime, waiterTimer))
                                {
                                    waiterTimer = 0;
                                    waiter.ForceFinish();
                                    waiter     = null;
                                    turnWaiter = 0;
                                }
                            }
                        }
                        else
                        {
                            waiter.TakeDamage(10, combatTimer);
                            waiter.attacked = true;
                        }
                    }
                    else
                    {
                        advanceBattle(gameTime, prevStateKb, prevStateM);
                    }
                }
                //else
                //text.Update(gameTime, prevState);

                if (victory && turnWaiter > 0.5)
                {
                    return(255);
                }
            }
            text.Update(gameTime, prevStateKb, prevStateM);

            //prevState = Keyboard.GetState();

            //if (prevStateKb.IsKeyDown(Keys.Q) && Keyboard.GetState().IsKeyUp(Keys.Q))
            //	return 255;

            return(toReturn);
        }
Пример #2
0
        public byte Update(GameTime dt, KeyboardState prevStateKb, MouseState prevStateM)
        {
            if (enemiesKilled == 3)
            {
                return(255);
            }
            timer += dt.ElapsedGameTime.TotalSeconds * 2;

            //Don't need widthOffset due to body position being centered around the body
            int widthOffset = shipWidth / 2;

            MouseState    mState  = Mouse.GetState();
            KeyboardState kbState = Keyboard.GetState();

            if (kbState.IsKeyDown(Keys.Right) || kbState.IsKeyDown(Keys.Left))
            {
                usingKeyboard = true;
            }
            else if (mState.Position != prevStateM.Position)
            {
                usingKeyboard = false;
                mouseX        = shipBody.Position.X;
            }

            if (usingKeyboard)
            {
                Vector2 pos = shipBody.Position;

                if (kbState.IsKeyDown(Keys.Right))
                {
                    shipBody.SetTransform(new Vector2((float)(pos.X + maxVelocity * dt.ElapsedGameTime.TotalSeconds), Game1.height - ship.Height - 6), 0);
                }
                else if (kbState.IsKeyDown(Keys.Left))
                {
                    shipBody.SetTransform(new Vector2((float)(pos.X - maxVelocity * dt.ElapsedGameTime.TotalSeconds), Game1.height - ship.Height - 6), 0);
                }
            }
            else
            {
                mousePos = (int)(mState.X * Game1.resMultiplier);

                if (mouseX <= Game1.width && mousePos - mouseX > 5)
                {
                    mouseX += maxVelocity * dt.ElapsedGameTime.TotalSeconds;
                }
                else if (mouseX >= shipWidth / 2 && mousePos - mouseX < -5)
                {
                    mouseX -= maxVelocity * dt.ElapsedGameTime.TotalSeconds;
                }

                shipBody.SetTransform(new Vector2((float)mouseX, Game1.height - ship.Height - 6), 0);
            }

            if ((kbState.IsKeyDown(Keys.Space) && prevStateKb.IsKeyUp(Keys.Space)) ||
                (prevStateM.LeftButton == ButtonState.Released && Mouse.GetState().LeftButton == ButtonState.Pressed))
            {
                pellets.Add(new Pellet(world, (int)shipBody.Position.X));
            }

            double pelletDt = dt.ElapsedGameTime.TotalSeconds * 200;

            for (int i = 0; i < pellets.Count; i++)
            {
                if (pellets[i] != null && (pellets[i].Update(pelletDt)))
                {
                    pellets.RemoveAt(i);
                }
            }

            for (int i = 0; i < aliens.Count; i++)
            {
                if (aliens[i] != null)
                {
                    aliens[i].Update(dt.ElapsedGameTime.TotalSeconds);
                }
            }

            world.Step((float)dt.ElapsedGameTime.TotalSeconds);

            //UpdateBackground(dt);

            return(1);
        }
Пример #3
0
        public byte Update(GameTime dt, KeyboardState prevStateKb, MouseState prevStateM)
        {
            if (collectedCount < 0)
            {
                return(2);
            }

            timer   += dt.ElapsedGameTime.TotalSeconds * 2;
            bgTimer += dt.ElapsedGameTime.TotalSeconds * 24;            //background moves at 24fps

            bgTimer %= 149;

            //Don't need widthOffset due to body position being centered around the body
            int widthOffset = basket.Width / 2;

            MouseState    mState  = Mouse.GetState();
            KeyboardState kbState = Keyboard.GetState();

            if (kbState.IsKeyDown(Keys.Right) || kbState.IsKeyDown(Keys.Left))
            {
                usingKeyboard = true;
            }
            else if (mState.Position != prevStateM.Position)
            {
                usingKeyboard = false;
                mouseX        = basketBody.Position.X;
            }

            if (usingKeyboard)
            {
                Vector2 pos = basketBody.Position;

                if (kbState.IsKeyDown(Keys.Right))
                {
                    facingLeft = false;
                    basketBody.SetTransform(new Vector2((float)(pos.X + maxVelocity * dt.ElapsedGameTime.TotalSeconds), Game1.height - basket.Height / 2 - 18), 0);
                }
                else if (kbState.IsKeyDown(Keys.Left))
                {
                    facingLeft = true;
                    basketBody.SetTransform(new Vector2((float)(pos.X - maxVelocity * dt.ElapsedGameTime.TotalSeconds), Game1.height - basket.Height / 2 - 18), 0);
                }
            }
            else
            {
                mousePos = (int)(mState.X * Game1.resMultiplier);

                if (mouseX <= Game1.width && mousePos - mouseX > 5)
                {
                    facingLeft = false;
                    mouseX    += maxVelocity * dt.ElapsedGameTime.TotalSeconds;
                }
                else if (mouseX >= basket.Width / 2 && mousePos - mouseX < -5)
                {
                    facingLeft = true;
                    mouseX    -= maxVelocity * dt.ElapsedGameTime.TotalSeconds;
                }

                basketBody.SetTransform(new Vector2((float)mouseX, Game1.height - basket.Height / 2 - 18), 0);
            }

            //Destroys apples that go below the screen
            for (int i = 0; i < apples.Count; i++)
            {
                if (apples[i] != null && (apples[i].Update(dt.ElapsedGameTime.TotalSeconds * 2)))
                {
                    apples.RemoveAt(i);
                }
            }

            spawnTimer += dt.ElapsedGameTime.TotalSeconds;

            if (spawnTimer > 1)
            {
                spawnTimer = 0;
                int spawnPoint = random.Next(20, Game1.width - 20);

                if (spawnedCount < 2 || !spawnBadApples)
                {
                    apples.Add(new Apple(world, apple, false, spawnPoint));
                    spawnedCount++;
                }
                else
                {
                    //Spawn bad apple
                    spawnedCount = 0;
                    apples.Add(new Apple(world, badApple, true, spawnPoint));
                }
            }

            if (collectedCount == 3)
            {
                return(255);
            }

            world.Step((float)dt.ElapsedGameTime.TotalSeconds);

            return(1);
        }