示例#1
0
        public override void UpdateOverride(GameTime gameTime, GameObject g)
        {
            base.UpdateOverride(gameTime, g);
            double ms = gameTime.ElapsedGameTime.TotalMilliseconds;

            if (Vper.HasValue)
            {
                Vper += GameSpeedManager.ApplySpeed(Aper, ms);
            }
            else
            {
                Vdeg += GameSpeedManager.ApplySpeed(Adeg, ms);
            }

            var    currPos = new Vector2((float)g.X, (float)g.Y);
            var    oriPos  = new Vector2((float)g.Ox, (float)g.Oy);
            double r       = Vector2.Distance(currPos, oriPos);

            if (r == 0)
            {
                return;
            }

            var rot = Vper.HasValue ? GameSpeedManager.ApplySpeed(Vper.Value, ms) / r : GameSpeedManager.ApplySpeed(Vdeg, ms);

            var vec1 = Vector2.Subtract(currPos, oriPos);
            var vec2 = new Vector2((float)(vec1.X * Math.Cos(rot) - vec1.Y * Math.Sin(rot)), (float)(vec1.X * Math.Sin(rot) + vec1.Y * Math.Cos(rot)));
            var vec3 = Vector2.Add(vec2, oriPos);

            g.MoveX += vec3.X - g.X;
            g.MoveY += vec3.Y - g.Y;
        }
        public override void UpdateOverride(GameTime gameTime, GameObject gameObject)
        {
            base.UpdateOverride(gameTime, gameObject);
            double ms = gameTime.ElapsedGameTime.TotalMilliseconds;

            gameObject.MoveX += GameSpeedManager.ApplySpeed(Vx, ms);
            gameObject.MoveY += GameSpeedManager.ApplySpeed(Vy, ms);
        }
        public override void UpdateOverride(GameTime gameTime, GameObject gameObject)
        {
            var isShooting = Capacity == 0 || remainingBullets > 0;
            var vdeg       = isShooting ? VdegShooting : VdegReloading;

            Alpha += GameSpeedManager.ApplySpeed(vdeg, gameTime.ElapsedGameTime.TotalMilliseconds);

            base.UpdateOverride(gameTime, gameObject);
        }
        public override void UpdateOverride(GameTime gameTime, GameObject g)
        {
            base.UpdateOverride(gameTime, g);
            double ms       = gameTime.ElapsedGameTime.TotalMilliseconds;
            double moveStep = GameSpeedManager.ApplySpeed(Vr, ms);

            var dir = DirectionOverride ?? g.GeneralDirection;

            g.MoveX += Math.Cos(dir) * moveStep;
            g.MoveY += Math.Sin(dir) * moveStep;
        }
示例#5
0
        private void DrawBackground(GameTime gameTime, Texture2D bgTexture, double v, int textureWidth, ref double x, int y = 0)
        {
            x += (double)GameSpeedManager.ApplySpeed(v, gameTime.ElapsedGameTime.TotalMilliseconds);
            if (x < -textureWidth)
            {
                x = 0;
            }
            var color = Player.IsPaybackActive ? Color.FromNonPremultiplied(255, 50, 255, 255)
                                : Player.IsManaActive ? Color.FromNonPremultiplied(50, 50, 255, 255) : Color.White;

            spriteBatch.Draw(bgTexture, new Rectangle((int)x, y, textureWidth, 768), color);
            spriteBatch.Draw(bgTexture, new Rectangle((int)(x < 0 ? x + textureWidth : x - textureWidth), y, textureWidth, 768), color);
        }
示例#6
0
        private void UpdateMana(GameTime gameTime)           //Slow down time
        {
            if (IsManaActive)
            {
                Mana.Amount -= GameSpeedManager.ApplySpeed(manaDrainSpeed, gameTime.ElapsedMs());
            }
            else
            {
                Mana.Amount = MathHelper.Clamp((float)(Mana.Amount + GameSpeedManager.ApplySpeed(manaRegainSpeed, gameTime.ElapsedMs())), 0, (float)Mana.OriginalAmount);
            }

            manaDrawer.Rate = Mana.Amount / (double)Mana.OriginalAmount;
            if (Mana.HasRunOut)
            {
                StopMana();
            }
        }
示例#7
0
        private void UpdatePayback(GameTime gameTime)          //"Rain of bullets"
        {
            if (IsPaybackActive)
            {
                Payback.Amount -= GameSpeedManager.ApplySpeed(paybackDrainSpeed, gameTime.ElapsedMs());
            }
            else
            {
                Payback.Amount = MathHelper.Clamp((float)(Payback.Amount + GameSpeedManager.ApplySpeed(paybackRegainSpeed, gameTime.ElapsedMs())), 0, (float)Payback.OriginalAmount);
                if (Payback.Amount == Payback.OriginalAmount)
                {
                    paybackDrawer.Color = Color.DarkGreen;
                }
            }

            paybackDrawer.Rate = Payback.Amount / (double)Payback.OriginalAmount;
            if (Payback.HasRunOut)
            {
                IsPaybackActive = false;
            }
        }
        public override void UpdateOverride(GameTime gameTime, GameObject gameObject)
        {
            base.UpdateOverride(gameTime, gameObject);
            var keys   = Keyboard.GetState().GetPressedKeys();
            var player = ((Player)gameObject);

            gunCooldown.Update(gameTime.ElapsedGameTime.TotalMilliseconds);
            if (keys.Contains(Keys.C) || keys.Contains(Keys.Space) || player.IsPaybackActive)
            {
                if (gunCooldown.IsElapsed)
                {
                    ((Player)gameObject).Shoot();
                    gunCooldown.Reset(player.IsPaybackActive ? 10 : 120);
                }
            }
            if (keys.Contains(Keys.Up))
            {
                gameObject.MoveY -= GameSpeedManager.ApplySpeed(v, gameTime.ElapsedGameTime.TotalMilliseconds);
            }
            if (keys.Contains(Keys.Down))
            {
                gameObject.MoveY += GameSpeedManager.ApplySpeed(v, gameTime.ElapsedGameTime.TotalMilliseconds);
            }
            if (keys.Contains(Keys.Left))
            {
                gameObject.MoveX -= GameSpeedManager.ApplySpeed(v, gameTime.ElapsedGameTime.TotalMilliseconds);
            }
            if (keys.Contains(Keys.Right))
            {
                gameObject.MoveX += GameSpeedManager.ApplySpeed(v, gameTime.ElapsedGameTime.TotalMilliseconds);
            }
            if (keys.Contains(Keys.X))
            {
                if (lockMana)
                {
                    return;
                }
                if (player.IsManaActive)
                {
                    player.StopMana();
                }
                else
                {
                    player.StartMana();
                }

                lockMana = true;
            }
            else
            {
                lockMana = false;
            }
            if (keys.Contains(Keys.Y) || keys.Contains(Keys.Z))
            {
                player.ActivatePayback();
            }
            if (keys.Contains(Keys.P) || keys.Contains(Keys.B))
            {
                if (lockPause)
                {
                    return;
                }

                GameSpeedManager.TogglePause();

                lockPause = true;
            }
            else
            {
                lockPause = false;
            }
        }