public void AddSkill(SkillProto proto, int index) { if (ownerSkillDic.ContainsKey(proto.ID)) { DebugUtils.Log(DebugUtils.Type.AI_Skill, string.Format("Unit {0} can't equip the skill {1} twice!", owner.unitType, proto.ID)); return; } // temp code.//--test skill add Id 7/8/9/10/12/15/16 if (skillFilter.Contains(proto.ID)) { UnitSkillTriggerType triggerEvent = (UnitSkillTriggerType)proto.TriggerEvent; if (!ownerSkills.ContainsKey(triggerEvent)) { ownerSkills.Add(triggerEvent, new List <SkillHandler>()); } RegisteOwnerStateListener(triggerEvent); SkillHandler data = new SkillHandler(); data.skillProto = proto; data.skillIndex = index; data.enabled = false; data.skill = null; data.unitSkillTriggerType = triggerEvent; data.triggerValue = proto.TriggerValue; ownerSkillDic.Add(proto.ID, data); ownerSkills[triggerEvent].Add(data); DebugUtils.Log(DebugUtils.Type.AI_SkillTrigger, string.Format("force {0} unit {1} equip the {2}. metaId = {3}, trigger = {4} ", owner.mark, owner.id, proto.Name, proto.ID, triggerEvent)); } }
public virtual void Initialize(long id, Soldier owner, SkillProto skillProto, int skillIndex) { InitializeSkillData(skillProto); this.owner = owner; this.id = id; mark = owner.mark; type = LogicUnitType.Skill; index = skillIndex; if (skillIndex == 1) { skillActionDuration = owner.skill1Duration; skillActionHitTime = owner.skill1HitTime; } else if (skillIndex == 2) { skillActionDuration = owner.skill2Duration; skillActionHitTime = owner.skill2HitTime; } playerOwner = owner.owner; skillEnable = true; DebugUtils.Log(DebugUtils.Type.AI_Skill, string.Format("Skill {0} has been initialize, id = {1}, metaId = {2}", skillName, id, metaId)); }
public override void Initialize(long id, Soldier owner, UnitSkillData skillProto, int index) { base.Initialize(id, owner, skillProto, index); ownerOrginBulletMetaId = owner.projectileId; battryBulletMetaId = carrierId; buffList = new List <AttributeEffect>(); }
protected virtual void InitializeSkillData(SkillProto skillProto) { skillName = skillProto.Name; metaId = skillProto.ID; textId = skillProto.Txt_ID; iconId = skillProto.IconID; duration = ConvertUtils.ToLogicInt(skillProto.Duration); distance = ConvertUtils.ToLogicInt(skillProto.Distance); radius = ConvertUtils.ToLogicInt(skillProto.SkillRadius); repetition = skillProto.Repetition; attributeEffects.Clear(); string ae = skillProto.AttributeEffectIDs; if (!string.IsNullOrEmpty(ae)) { string[] ary = ae.Split('|'); for (int i = 0; i < ary.Length; i++) { int result = -1; if (int.TryParse(ary[i], out result)) { attributeEffects.Add(result); } else { DebugUtils.LogError(DebugUtils.Type.AI_Skill, string.Format("Parse skill proto's AttributeEffectIDs column failed, id = {0}, AttributeEffectIDs = {1}", skillProto.ID, skillProto.AttributeEffectIDs)); } } DebugUtils.Assert(attributeEffects.Count != 0, string.Format("Why skill {0}'s attributeEffect's count equal to 0, metaid = {1}", skillProto.ID, skillProto.AttributeEffectIDs)); } else { DebugUtils.LogError(DebugUtils.Type.AI_Skill, string.Format("skill {0} attributeEffect string is null or empty, metaId = {1} ", skillProto.ID, skillProto.AttributeEffectIDs)); } carrierType = skillProto.CarrierType; carrierId = skillProto.CarrierID; effectId = skillProto.SkillEffectID; skillEffectBindPoint = skillProto.skill_effect_bindpoint; skillHitRes = skillProto.skill_hit_res; skillHitBindPoint = skillProto.skill_hit_bindpoint; }
public override void Initialize(long id, Soldier owner, UnitSkill skillProto, int index) { base.Initialize(id, owner, skillProto, index); effectOwnerDic = new Dictionary <long, List <AttributeEffect> >(); }
public void ReleaseSkill(int index, int skillMetaId, Vector3 position) { SkillProto proto = DataManager.GetInstance().unitSkillsProtoData.Find(p => p.ID == skillMetaId); // TODO: Wait new data struct int carrierType = proto.CarrierType; int fireEffectId = 0; string bindPoint = string.Empty; if (proto.CarrierID <= 0) { fireEffectId = proto.SkillEffectID; bindPoint = proto.skill_effect_bindpoint; PlayEffect(fireEffectId, bindPoint); } else { int carrierId = proto.CarrierID; // 1 projectile if (carrierType == 1) { ProjectileProto projectileProto = null; if (unitProjectiles.ContainsKey(carrierId)) { projectileProto = unitProjectiles[carrierId]; } else { projectileProto = DataManager.GetInstance().projectileProtoData.Find(p => p.ID == carrierId); unitProjectiles.Add(carrierId, projectileProto); } if (projectileProto != null) { fireEffectId = projectileProto.FireEffect_ResourceId; bindPoint = projectileProto.fire_res_bindpoint; PlayEffect(fireEffectId, bindPoint); } } else if (carrierType == 2) { // trap } else if (carrierType == 3) { SummonProto summonProto = null; if (summonProtos.ContainsKey(carrierId)) { summonProto = summonProtos[carrierId]; } else { summonProto = DataManager.GetInstance().summonProtoData.Find(p => p.ID == carrierId); summonProtos.Add(carrierId, summonProto); } if (summonProto != null) { // summon fireEffectId = summonProto.Born_effect_id; PlayEffect(fireEffectId, position); } } } if (index == 1) { PlayAnimation(TRIGGER_SKILL1, 1); } else if (index == 2) { PlayAnimation(TRIGGER_SKILL2, 1); } else { DebugUtils.Assert(false, "Can't handle this skill index in soldier render, index = " + index); } }
public override void Initialize(long id, Soldier owner, UnitSkillData skillProto, int index) { base.Initialize(id, owner, skillProto, index); attributeEffect = new List <AttributeEffect>(); }