static void ApplyEffect(BaseEffectData effect, ITargetable[] targets, IEffectable source) { for (var i = 0; i < targets.Length; i++) { var target = targets[i]; effect.Apply(target, source); } }
public void AddEffect(BaseEffectData effectData) { if (!value.ContainsKey(effectData.EffectId)) { value.Add(effectData.EffectId, new List <BaseEffectData>()); } value[effectData.EffectId].Add(effectData); }
/// <summary> /// Resolves and apply an effect caused by a source uppon on or many targets. /// </summary> /// <param name="effect"></param> /// <param name="source"></param> /// <param name="targets"></param> public static void Resolve(BaseEffectData effect, IEffectable source, ITargetable[] targets) { if (effect == null) { Debug.LogError("Can't resolve a null effect."); return; } //apply the effect on the targets ApplyEffect(effect, targets, source); }
private BaseEffectView CreateEffectView(BaseEffectData baseEffectData) { var effectId = baseEffectData.EffectId; var effectPrefabPath = string.Format("Prefabs/CombatEffectVisuals/{0}EffectVisual", effectId); var effectObject = ObjectPool.Spawn(effectPrefabPath, _parentTransform); BaseEffectView effectView = effectObject.GetComponent <BaseEffectView>(); effectView.InitData(_selfEntity, effectId); return(effectView); }
private void BtnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tbName.Text)) { MessageBox.Show("You must enter the name for the effect."); return; } if (rbDamage.Checked) { DamageEffectData data = new DamageEffectData(); data.Name = tbName.Text; data.TargetType = (TargetType)Enum.Parse(typeof(TargetType), cboTarget.SelectedItem.ToString()); data.DamageType = (DamageType)Enum.Parse(typeof(DamageType), cboDamage.SelectedItem.ToString()); data.DieType = (DieType)Enum.Parse(typeof(DieType), cboDieType.SelectedIndex.ToString()); data.NumberOfDice = (int)sbNumOfDice.Value; data.Modifier = (int)sbModifier.Value; BaseEffectData = data; } else { HealEffectData data = new HealEffectData(); data.Name = tbName.Text; data.TargetType = (TargetType)Enum.Parse(typeof(TargetType), cboTarget.SelectedItem.ToString()); data.DieType = (DieType)Enum.Parse(typeof(DieType), cboDieType.SelectedIndex.ToString()); data.NumberOfDice = (int)sbNumOfDice.Value; data.Modifier = (int)sbModifier.Value; BaseEffectData = data; } Close(); }
public void FillTalents() { TalentData data = new TalentData { Name = "Bash", TalentPrerequisites = new string[0], LevelRequirement = 1, TalentType = TalentType.Activated, ActivationCost = 5, AllowedClasses = new string[] { "Fighter" }, AttributeRequirements = new Dictionary <string, int>() { { "Strength", 10 } }, AreaOfEffect = 8, AngleOfEffect = MathHelper.TwoPi, Range = 48, CastTime = 0, CoolDown = 1.5 }; BaseEffectData effect = (new DamageEffectData { TargetType = SpellClasses.TargetType.Enemy, AttackType = AttackType.Health, DamageType = DamageType.Crushing, DieType = DieType.D8, Modifier = 2, Name = "Bash", NumberOfDice = 2 }); data.Effects.Add(effect); talentData.Add("Bash", data); data = new TalentData() { Name = "Below The Belt", TalentPrerequisites = new string[0], LevelRequirement = 1, TalentType = TalentType.Activated, ActivationCost = 5, AllowedClasses = new string[] { "Rogue" }, AttributeRequirements = new Dictionary <string, int>() { { "Dexterity", 10 } }, AreaOfEffect = 8, AngleOfEffect = MathHelper.TwoPi, Range = 48, CastTime = 0, CoolDown = 1.5 }; effect = (new DamageEffectData() { TargetType = SpellClasses.TargetType.Enemy, AttackType = AttackType.Health, DamageType = DamageType.Piercing, DieType = DieType.D4, Modifier = 2, Name = "Below The Belt", NumberOfDice = 3 }); data.Effects.Add(effect); talentData.Add("Below The Belt", data); }
private void BtnCancel_Click(object sender, EventArgs e) { BaseEffectData = null; Close(); }
public void AddTargets(BaseEffectData effect, ITargetable[] targets) => Targets.Add(effect, targets);
public void FillSpellData() { SpellData data = new SpellData() { Name = "Spark Jolt", SpellPrerequisites = new string[0], SpellType = SpellType.Activated, LevelRequirement = 1, ActivationCost = 8, AllowedClasses = new string[] { "Wizard" }, AttributeRequirements = new Dictionary <string, int>() { { "Magic", 10 } }, AreaOfEffect = 32, AngleOfEffect = MathHelper.TwoPi, CastTime = 0, Duration = 0, CoolDown = 2, Range = 128, }; BaseEffectData effect = (new DamageEffectData { Name = "Spark Jolt", TargetType = TargetType.Enemy, AttackType = AttackType.Health, DamageType = DamageType.Air, DieType = DieType.D6, NumberOfDice = 3, Modifier = 2 }); data.Effects.Add(effect); spellData.Add("Spark Jolt", data); data = new SpellData() { Name = "Mend", SpellPrerequisites = new string[0], SpellType = SpellType.Activated, LevelRequirement = 1, ActivationCost = 6, AllowedClasses = new string[] { "Priest" }, AttributeRequirements = new Dictionary <string, int>() { { "Magic", 10 } }, Range = 0, AreaOfEffect = 0, AngleOfEffect = 0, CastTime = 0, CoolDown = 2 }; BaseEffectData healEffect = (new HealEffectData { Name = "Mend", TargetType = TargetType.Self, HealType = HealType.Health, DieType = DieType.D8, NumberOfDice = 2, Modifier = 2 }); data.Effects.Add(healEffect); spellData.Add("Mend", data); }