// Update
        public override void Update(GameTime gameTime)
        {
            if (this.fire == true)
            {
                if (Math.Abs(this.position.X - Player.positionSent.X) < 5)// se a distancia entre o jogador e o inimigo for menor que 5 ele dispara
                {
                    if (this.position.X - Player.positionSent.X > 0)
                    {
                        fireCounter += (float)gameTime.ElapsedGameTime.TotalSeconds;
                        if (fireCounter >= fireInterval)
                        {
                            Vector2 pos = this.position
                                          + new Vector2((float)Math.Sin(rot) * size.Y,
                                                        (float)Math.Cos(rot) * size.Y);
                            Bala bullet = new Bala(cManager, "bulletTestes", new Vector2(pos.X - 2f, pos.Y), -rot, this.nomedaSprite, jogo);

                            scene.AddSprite(bullet);
                            fireCounter = 0f;
                        }
                    }
                    if (this.position.X - Player.positionSent.X < 0)
                    {
                        fireCounter += (float)gameTime.ElapsedGameTime.TotalSeconds;
                        if (fireCounter >= fireInterval)
                        {
                            Vector2 pos = this.position
                                          + new Vector2((float)Math.Sin(rot) * size.Y,
                                                        (float)Math.Cos(rot) * size.Y);
                            Bala bullet = new Bala(cManager, "bulletTestes", pos, rot, this.nomedaSprite, jogo);

                            scene.AddSprite(bullet);
                            fireCounter = 0f;
                        }
                    }
                }
            }
            base.Update(gameTime);
        }
Exemple #2
0
        // Update
        public override void Update(GameTime gameTime)
        {
            positionSent = this.position;
            // apenas para debug
            if (state.IsKeyDown(Keys.L))
            {
                this.position.X += 0.1f;
            }
            if (state.IsKeyDown(Keys.J))
            {
                this.position.X -= 0.1f;
            }
            if (state.IsKeyDown(Keys.I))
            {
                this.position.Y += 0.1f;
            }
            if (state.IsKeyDown(Keys.K))
            {
                this.position.Y -= 0.1f;
            }

            if (Player.alunosSalvos == 3)// salva os tres alunos, volta ao inicio
            {
                jogoGanho.Play();
                jogo.recomecar();
            }

            if (state.IsKeyDown(Keys.D))
            {
                this.position.X += 0.05f;
                if (this.scene.Collides(this, out this.Collided, out this.CollisionPoint))
                {
                    if (this.Collided.nomedaSprite == "TEST-F")
                    {
                        boo.Play();
                        this.Destroy();
                        jogo.recomecar();
                    }
                    else if (this.Collided.nomedaSprite == "student1" || this.Collided.nomedaSprite == "student2" || this.Collided.nomedaSprite == "student3")
                    {
                        jogoGanho.Play();
                        alunosSalvos++;
                        this.Collided.Destroy();
                    }
                    else
                    {
                        if (CollisionPointLast != positionColision)
                        {
                            this.position.X -= 0.05f;
                        }
                    }
                }
            }

            if (state.IsKeyDown(Keys.A))
            {
                this.position.X -= 0.05f;
                if (this.scene.Collides(this, out this.Collided, out this.CollisionPoint))
                {
                    if (this.Collided.nomedaSprite == "TEST-F")
                    {
                        boo.Play();
                        this.Destroy();
                        jogo.recomecar();
                    }
                    else if (this.Collided.nomedaSprite == "student1" || this.Collided.nomedaSprite == "student2" || this.Collided.nomedaSprite == "student3")
                    {
                        jogoGanho.Play();
                        alunosSalvos++;
                        this.Collided.Destroy();
                    }
                    else
                    {
                        if (CollisionPointLast != positionColision)
                        {
                            this.position.X += 0.05f;
                        }
                    }
                }
            }

            if (state.IsKeyDown(Keys.Space) && isJumping == false && isFalling == false)
            {
                this.isJumping      = true;
                this.isFalling      = false;
                this.sourcePosition = this.position;
                this.direction      = new Vector2((float)Math.Sin(rotation), (float)Math.Cos(rotation));
            }

            mstate = Mouse.GetState();
            Point mpos = mstate.Position;

            Vector2 tpos = Camera.WorldPoint2Pixels(position);
            float   a    = (float)mpos.Y - tpos.Y;
            float   l    = (float)mpos.X - tpos.X;
            float   rot  = (float)Math.Atan2(a, l);

            rot += (float)Math.PI / 2f;

            fireCounter += (float)gameTime.ElapsedGameTime.TotalSeconds;
            if (mstate.LeftButton == ButtonState.Pressed && fireCounter >= fireInterval)
            {
                Vector2 pos = this.position
                              + new Vector2((float)Math.Sin(rot) * size.Y,
                                            (float)Math.Cos(rot) * size.Y);
                Bala bullet = new Bala(cManager, "pencil", pos, rot, this.nomedaSprite, jogo);
                scene.AddSprite(bullet);
                fireCounter = 0f;
            }

            Jump(gameTime);
            Camera.SetTarget(this.position);
            CollisionPointLast = positionColision;// guarda a posicao na sprite da ultima colisao
            base.Update(gameTime);
        }