예제 #1
0
    private void OnWeightChangeCallback(object sender, WeightChangeArgs args)
    {
        if (effectManager == null)
        {
            return;
        }

        if (args.newWeight > maxWeight)
        {
            if (effect == null)
            {
                effect               = new MovementEffect("Inventory overload", 0.2f, EffectStyle.Debuff, EffectType.Physical);
                effect.IsInfinite    = true;
                effect.ShouldBeSaved = false;
                effectManager.AddEffect(effect);
            }
        }
        else
        {
            if (effect != null)
            {
                effectManager.RemoveEffect(effect);
                effect = null;
            }
        }
    }
예제 #2
0
 public override void ApplyMovementEffect(MovementEffect effect)
 {
     if (effect.GetSpeedMultiplier() < 1.0f)
     {
         return;
     }
     movementEffects.AddLast(effect);
 }
예제 #3
0
    private List <LongEffect> CreateLongEffectsFromText(List <string> text)
    {
        List <LongEffect> effects = new List <LongEffect>();

        int i = -1;

        while (i < text.Count - 1)
        {
            switch (text[++i])
            {
            case "DamageModifierEffect":
                DamageModifierEffect dmEffect = new DamageModifierEffect()
                {
                    damageMultiplier = float.Parse(text[++i]),
                    duration         = float.Parse(text[++i]),
                    shieldBadPrefab  = ShieldBadPrefab,
                    shieldGoodPrefab = ShieldGoodPrefab
                };
                effects.Add(dmEffect);
                break;

            case "HealthLongEffect":
                HealthLongEffect hlEffect = new HealthLongEffect()
                {
                    healthModifier = float.Parse(text[++i]),
                    intensity      = float.Parse(text[++i]),
                    duration       = float.Parse(text[++i]),
                    dummyMonoBehaviourForStartingCoroutines = this
                };
                effects.Add(hlEffect);
                break;

            case "MovementEffect":
                MovementEffect mEffect = new MovementEffect()
                {
                    movementSpeedMultiplier = float.Parse(text[++i]),
                    rotationSpeedMultiplier = float.Parse(text[++i]),
                    duration = float.Parse(text[++i])
                };
                effects.Add(mEffect);
                break;

            case "":
                break;

            default:
                Debug.LogError("Unknown long effect type: " + text[i]);
                break;
            }
        }

        return(effects);
    }
예제 #4
0
 public void ApplyMovementEffect(MovementEffect effect)
 {
     movementEffects.AddLast(effect);
 }