private void UpdateSuperShieldFromInput(Entity player, float dt)
        {
            PlayerComponent     play = player.GetComponent <PlayerComponent>();
            PlayerShipComponent ship = player.GetComponent <PlayerShipComponent>();

            if (play.Player.InputMethod.GetSnapshot().SuperShield == true && ship.SuperShieldAvailable && ship.SuperShieldMeter > 0)
            {
                foreach (Entity shield in ship.ShipShields)
                {
                    //shield.GetComponent<PlayerShieldComponent>().LaserReflectionActive = true;
                    shield.GetComponent <VectorSpriteComponent>().Hidden      = false;
                    shield.GetComponent <CollisionComponent>().CollisionMask  = (byte)(Constants.Collision.COLLISION_GROUP_ENEMIES | Constants.Collision.COLLISION_GROUP_RAYCAST);
                    shield.GetComponent <CollisionComponent>().CollisionGroup = (byte)(Constants.Collision.COLLISION_GROUP_PLAYER);
                }
                ship.SuperShieldMeter = Math.Max(ship.SuperShieldMeter - CVars.Get <float>("player_super_shield_spend_rate") * dt, 0);
                //Console.WriteLine("Super shield meter at " + ship.SuperShieldMeter);
            }
            else
            {
                if (ship.SuperShieldMeter <= 0 || play.Player.InputMethod.GetSnapshot().SuperShield == false)
                {
                    for (int i = 1; i < 4; i++)
                    {
                        //ship.ShipShields[i].GetComponent<PlayerShieldComponent>().LaserReflectionActive = false;
                        ship.ShipShields[i].GetComponent <VectorSpriteComponent>().Hidden      = true;
                        ship.ShipShields[i].GetComponent <CollisionComponent>().CollisionMask  = Constants.Collision.GROUP_MASK_NONE;
                        ship.ShipShields[i].GetComponent <CollisionComponent>().CollisionGroup = Constants.Collision.GROUP_MASK_NONE;
                        //Console.WriteLine("Super Shield collision mask set to NONE");
                    }
                }
                ship.SuperShieldMeter = MathHelper.Min(ship.SuperShieldMeter + CVars.Get <float>("player_super_shield_regen_rate") * dt, CVars.Get <float>("player_super_shield_max"));
                //Console.WriteLine("Super shield at " + ship.SuperShieldMeter);
                if (ship.SuperShieldMeter == CVars.Get <float>("player_super_shield_max"))
                {
                    //Console.WriteLine("Super shield resource replenished");
                    ship.SuperShieldAvailable = true;
                }
                else
                {
                    ship.SuperShieldAvailable = false;
                    //Console.WriteLine("Player super shield out of resource");
                }
            }
        }
Пример #2
0
        private void SpawnPlayer(Player player, Vector2 position, Color color)
        {
            Entity playerShipEntity = PlayerShipEntity.Create(SharedState.Engine, position, color);

            SuperShieldDisplayEntity.Create(SharedState.Engine, playerShipEntity);

            PlayerShipComponent playerShipComp = playerShipEntity.GetComponent <PlayerShipComponent>();

            // Default
            playerShipComp.AddShield(PlayerShieldEntity.Create(SharedState.Engine, playerShipEntity, MathHelper.ToRadians(0.0f), true));
            // Super shields
            playerShipComp.AddShield(PlayerShieldEntity.Create(SharedState.Engine, playerShipEntity, MathHelper.ToRadians(90.0f), false));
            playerShipComp.AddShield(PlayerShieldEntity.Create(SharedState.Engine, playerShipEntity, MathHelper.ToRadians(180.0f), false));
            playerShipComp.AddShield(PlayerShieldEntity.Create(SharedState.Engine, playerShipEntity, MathHelper.ToRadians(270.0f), false));

            playerShipEntity.AddComponent(new PlayerComponent(player));

            // Queue an event
            EventManager.Instance.QueueEvent(new PlayerShipSpawnEvent(playerShipEntity, position));
        }
Пример #3
0
 protected override void HandlePlayerSpawned(PlayerShipComponent playerShipController)
 {
     base.HandlePlayerSpawned(playerShipController);
     _shipMovement = playerShipController.ShipMovement;
 }
Пример #4
0
 protected override bool HandlePlayerDespawned(PlayerShipComponent playerShipController)
 {
     base.HandlePlayerDespawned(playerShipController);
     _shipMovement = null;
     return(true);
 }
Пример #5
0
 protected override void HandlePlayerSpawned(PlayerShipComponent playerShipController)
 {
     base.HandlePlayerSpawned(playerShipController);
     _playerWeapon = playerShipController.PlayerWeapon;
 }
Пример #6
0
 protected override void HandlePlayerSpawned(PlayerShipComponent playerShipController)
 {
     base.HandlePlayerSpawned(playerShipController);
     _shipHyperSpace = playerShipController.HyperSpace;
 }