コード例 #1
0
 public void RemoveDeadTwo()
 {
     foreach (IEffect effect in EffectsToDie)
     {
         RoomEffects.Remove(effect);
     }
 }
コード例 #2
0
    /// <summary>
    /// Runs when a new room is generated
    /// </summary>
    public void OnRoomStart(RoomParameters room)
    {
        RoomEffects fx = room.Effect;

        LowGravity(fx.HasFlag(RoomEffects.LowGravity));
        Darkness(fx.HasFlag(RoomEffects.Darkness));
        LargeEnemies(fx.HasFlag(RoomEffects.LargeEnemies));
        Timer(fx.HasFlag(RoomEffects.Timer), room);
    }
コード例 #3
0
    /// <summary>
    /// Scales a float variable to its required value using the provided mode if applicable
    /// </summary>
    /// <returns></returns>
    public static float GetEffectValue(float originalValue, EffectValueType inputType)
    {
        RoomEffects          fxs        = CurrentRoomEffects;
        RoomEffectController controller = RoomEffectController;

        if (controller == null)
        {
            return(originalValue);
        }

        switch (inputType)
        {
        case EffectValueType.EnemySpeed:
            if (PowerUpManager.HasPowerUp(PowerUp.SlowDown))
            {
                return(originalValue * PowerUpManager.SlowDownTimeScale);
            }

            if (fxs.HasFlag(RoomEffects.FastFoe))
            {
                return(originalValue * controller.FastFoeSpeedMultiplier);
            }
            break;

        case EffectValueType.EnemyWaitTime:
            if (PowerUpManager.HasPowerUp(PowerUp.SlowDown))
            {
                return(originalValue / PowerUpManager.SlowDownTimeScale);
            }

            if (fxs.HasFlag(RoomEffects.FastFoe))
            {
                return(originalValue / controller.FastFoeSpeedMultiplier);
            }

            break;

        case EffectValueType.ProjectileSize:
            if (fxs.HasFlag(RoomEffects.LargeProjectiles))
            {
                return(originalValue * controller.LargeProjectilesGrowMultiplier);
            }
            break;

        case EffectValueType.PlayerAcceleration:
            if (fxs.HasFlag(RoomEffects.Icy))
            {
                return(originalValue * controller.IcyGroundAccelerationMultiplier);
            }
            break;

        case EffectValueType.PlayerDeceleration:
            if (fxs.HasFlag(RoomEffects.Icy))
            {
                return(originalValue * controller.IcyGroundDecelerationMultiplier);
            }
            break;


        case EffectValueType.PlayerMaxSpeed:
            if (fxs.HasFlag(RoomEffects.Icy))
            {
                return(originalValue * controller.IcyGroundMaxSpeedMultiplier);
            }
            break;
        }

        return(originalValue);
    }
コード例 #4
0
 public void AddEffect(IEffect effect) => RoomEffects.Add(effect);
コード例 #5
0
 public void AddEffect(Vector2 location, EffectEnum sprite)
 => RoomEffects.Add(effectFactory.MakeSprite(sprite, location));