Exemplo n.º 1
0
    // Use this for initialization
    void Awake()
    {
        fenetre = GameObject.FindGameObjectWithTag("SystemInfos");
        param   = GameObject.FindGameObjectWithTag("GameManager").GetComponent <Parameters>();
        cost    = GameObject.FindGameObjectWithTag("cout").GetComponent <Text>();
        system  = GameObject.FindGameObjectWithTag("universewintext").GetComponentInChildren <Text>();
        ship    = GameObject.FindGameObjectWithTag("ship").GetComponent <shipMovement>();
        eventW  = GameObject.FindGameObjectWithTag("eventdisplay").GetComponent <RandomEventWindow>();

        ep = GameObject.FindGameObjectWithTag("GameManager").GetComponent <EventProbability>();
    }
    static void SetShipMovement(GameObject ship)
    {
        shipMovement move = ship.GetComponent <shipMovement>();

        foreach (Transform trans in ship.transform)
        {
            if (trans.tag == WARP)
            {
                move.warpParticle = trans.gameObject.particleSystem;
                break;
            }
        }
    }
Exemplo n.º 3
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (_started)
            {
                _timer -= (float)gameTime.ElapsedGameTime.TotalSeconds;
            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            // TODO: Add your update logic here
            prevKey          = newKeyboardState;
            newKeyboardState = Keyboard.GetState();

            if (newKeyboardState.IsKeyDown(Keys.Escape))
            {
                Exit();
            }
            if (eat < 2 && newKeyboardState.IsKeyDown(Keys.Space))
            {
                _started = true;
                _draw    = true;
                _sound   = false;
                if (died)
                {
                    shipRect.X = 900;
                    shipRect.Y = 900;
                    rotation   = 0;
                    direction  = new Vector2(0, -1);
                    _timer     = 21;
                }
                //eats the first space to prevent firing on start
                eat += 1;
            }

            if (_started)
            {
                if (_timer % 3 == 0)//(newKeyboardState.IsKeyDown(Keys.R) && !_meteorsStarted && prevKey.IsKeyDown(Keys.R))
                {
                    _meteorsStarted = true;
                    _enemySprite    = new List <Sprite>()
                    {
                        new Enemies(rock, this)
                        {
                            Position = new Vector2(100, 100),
                            Enemy    = new Enemy(Content.Load <Texture2D>("rock no trail"))
                        }
                    };
                }



                if ((newKeyboardState.IsKeyDown(Keys.Up) && (newKeyboardState.IsKeyDown(Keys.Left))) || (newKeyboardState.IsKeyDown(Keys.W) && (newKeyboardState.IsKeyDown(Keys.A))))
                {
                    movement = shipMovement.UpLeft;
                }
                else if ((newKeyboardState.IsKeyDown(Keys.Up) && (newKeyboardState.IsKeyDown(Keys.Right))) || (newKeyboardState.IsKeyDown(Keys.W) && (newKeyboardState.IsKeyDown(Keys.D))))
                {
                    movement = shipMovement.UpRight;
                }
                else if ((newKeyboardState.IsKeyDown(Keys.Down) && (newKeyboardState.IsKeyDown(Keys.Left))) || (newKeyboardState.IsKeyDown(Keys.S) && (newKeyboardState.IsKeyDown(Keys.A))))
                {
                    movement = shipMovement.DownLeft;
                }
                else if ((newKeyboardState.IsKeyDown(Keys.Down) && (newKeyboardState.IsKeyDown(Keys.Right))) || (newKeyboardState.IsKeyDown(Keys.S) && (newKeyboardState.IsKeyDown(Keys.D))))
                {
                    movement = shipMovement.DownRight;
                }
                else if (newKeyboardState.IsKeyDown(Keys.Up) || newKeyboardState.IsKeyDown(Keys.W))
                {
                    movement = shipMovement.Up;
                }
                else if (newKeyboardState.IsKeyDown(Keys.Down) || newKeyboardState.IsKeyDown(Keys.S))
                {
                    movement = shipMovement.Down;
                }
                else if (newKeyboardState.IsKeyDown(Keys.Left) || newKeyboardState.IsKeyDown(Keys.A))
                {
                    movement = shipMovement.Left;
                }
                else if (newKeyboardState.IsKeyDown(Keys.Right) || newKeyboardState.IsKeyDown(Keys.D))
                {
                    movement = shipMovement.Right;
                }
                else
                {
                    movement = shipMovement.Idle;
                }
            }

            if (_started && _draw)
            {
                switch (movement)
                {
                case shipMovement.UpLeft:
                    shipRect.Y -= 7;
                    shipRect.X -= 7;
                    rotation    = (float)-.5;
                    direction   = new Vector2(-1, -1);
                    moving      = true;
                    break;

                case shipMovement.UpRight:
                    shipRect.Y -= 7;
                    shipRect.X += 7;
                    rotation    = (float).5;
                    direction   = new Vector2(1, -1);
                    moving      = true;
                    break;

                case shipMovement.DownRight:
                    shipRect.Y += 7;
                    shipRect.X += 7;
                    rotation    = (float)2.2;
                    direction   = new Vector2(1, 1);
                    moving      = true;
                    break;

                case shipMovement.DownLeft:
                    shipRect.Y += 7;
                    shipRect.X -= 7;
                    rotation    = (float)-2.2;
                    direction   = new Vector2(-1, 1);
                    moving      = true;
                    break;

                case shipMovement.Up:
                    shipRect.Y -= 10;
                    rotation    = 0;
                    effect      = SpriteEffects.None;
                    direction   = new Vector2(0, -1);
                    moving      = true;
                    break;

                case shipMovement.Down:
                    shipRect.Y += 10;
                    rotation    = (float)3.125;
                    direction   = new Vector2(0, 1);
                    moving      = true;
                    break;

                case shipMovement.Left:
                    shipRect.X -= 10;
                    rotation    = (float)-1.6;
                    direction   = new Vector2(-1, 0);
                    moving      = true;
                    break;

                case shipMovement.Right:
                    shipRect.X += 10;
                    rotation    = (float)1.6;
                    direction   = new Vector2(1, 0);
                    moving      = true;
                    break;

                case shipMovement.Idle:
                    moving = false;
                    break;

                default: break;
                }

                if (_enemyParticles != null)
                {
                    foreach (var enemy in _enemyParticles)
                    {
                        enemy.Update(gameTime);
                    }
                }
                explosionParticleSystem.Update(gameTime);
                shipParticleSystem.Update(gameTime);
                fireParticalSystem.Update(gameTime);
            }

            //keep ship on screen
            if (shipRect.X < 0 + (shipRect.Width / 2))
            {
                shipRect.X = 0 + (shipRect.Width / 2);
            }

            if (shipRect.X > GraphicsDevice.Viewport.Width - (shipRect.Width / 2))
            {
                shipRect.X = GraphicsDevice.Viewport.Width - (shipRect.Width / 2);
            }

            if (shipRect.Y < 0 + (shipRect.Height / 2))
            {
                shipRect.Y = 0 + (shipRect.Height / 2);
            }

            if (shipRect.Y > GraphicsDevice.Viewport.Height - (shipRect.Height / 2))
            {
                shipRect.Y = GraphicsDevice.Viewport.Height - (shipRect.Height / 2);
            }



            foreach (var sprite in _sprite.ToArray())
            {
                sprite.Update(gameTime, _sprite, direction, 0);
            }

            if (_enemySprite != null)
            {
                foreach (var sprite in _enemySprite.ToArray())
                {
                    sprite.Update(gameTime, _enemySprite, direction, 5);
                }
            }

            if (_timer <= 0 && !_sound)
            {
                if (_enemySprite != null)
                {
                    for (int i = 1; i < _enemySprite.Count; i++)
                    {
                        _enemySprite.RemoveAt(i);
                    }
                }
                died     = true;
                _draw    = false;
                _started = false;
                var instance = soundEffects[0].CreateInstance();
                instance.Play();
                _sound       = true;
                eat          = 0;
                displayScore = score;
                score        = 0;
            }

            if (_enemySprite != null)
            {
                for (int e = 1; e < _enemySprite.Count; e++)
                {
                    scored = false;
                    for (int i = 1; i < _sprite.Count; i++)
                    {
                        try {
                            if (_enemySprite[e] == null || _sprite[i] == null)
                            {
                                continue;
                            }
                            else if (_sprite[i].isRemoved)
                            {
                                _sprite.RemoveAt(i);
                                i--;
                            }
                            else if (colliding(_enemySprite[e].Position, _sprite[i].Position))
                            {
                                if (!scored)
                                {
                                    _timer++;
                                    scored = true;
                                    score++;
                                    _enemySprite.RemoveAt(e);
                                    _sprite.RemoveAt(i);
                                }
                            }
                        }
                        catch (ArgumentOutOfRangeException oor)
                        {
                            continue;
                        }
                        if (scored)
                        {
                            continue;
                        }
                    }
                    try {
                        if (shipRect.Intersects(toRect(_enemySprite[e].Position)))
                        {
                            for (int i = 1; i < _enemySprite.Count; i++)
                            {
                                _enemySprite.RemoveAt(i);
                            }
                            died     = true;
                            _draw    = false;
                            _started = false;
                            var instance = soundEffects[0].CreateInstance();
                            instance.Play();
                            eat          = 0;
                            displayScore = score;
                            score        = 0;
                            break;
                        }
                    }
                    catch (ArgumentOutOfRangeException oor)
                    {
                        continue;
                    }
                }
            }

            player.Update(gameTime);

            base.Update(gameTime);
        }