public EffectDescriptor(UnitEffect.EFFECT_TYPE type, int value, CIGameObject producer, EffectResponsibility responsibility) { Type = type; Responsibility = responsibility; Value = value; EffectProducer = producer; }
/**********************************************************************************/ // функция применения эффектов // /**********************************************************************************/ public void ApplyEffect(EffectDescriptor effect) { if (!m_isActive) { return; } UnitEffect.EFFECT_TYPE eType = effect.Type; bool weHaveEffect = m_effects.ContainsKey(eType); bool effectWasApplied = false; if (weHaveEffect) { if (m_effects[eType] != null) { m_effects[eType].EffectProducer = effect.EffectProducer; m_effects[eType].Activate(effect.Value); effectWasApplied = true; } } if (effectWasApplied == false && effect.Responsibility == EffectDescriptor.EffectResponsibility.REQUIRED) { Debug.LogError("We cann't apply effect: " + eType + " !"); } }
/**********************************************************************************/ // функция применения эффектов // /**********************************************************************************/ public override void ApplyEffect(EffectDescriptor effect) { UnitEffect.EFFECT_TYPE eType = effect.Type; bool weHaveEffect = m_effects.ContainsKey(eType); if (weHaveEffect) { m_effects[eType].EffectProducer = effect.EffectProducer; m_effects[eType].Activate(effect.Value); } else if (effect.Responsibility == EffectDescriptor.EffectResponsibility.REQUIRED) { Debug.LogError("We cann't apply effect: " + eType + " !"); } }
/**********************************************************************************/ // функция добавления новых эффектов // /**********************************************************************************/ public void SetEffect(UnitEffect.EFFECT_TYPE effectSlot, UnitEffect effect) { m_effects[effectSlot] = effect; }