コード例 #1
0
        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));
            }
        }
コード例 #2
0
ファイル: Skill.cs プロジェクト: liushengchao112/Ember
        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));
        }
コード例 #3
0
        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>();
        }
コード例 #4
0
ファイル: Skill.cs プロジェクト: liushengchao112/Ember
        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;
        }
コード例 #5
0
        public override void Initialize(long id, Soldier owner, UnitSkill skillProto, int index)
        {
            base.Initialize(id, owner, skillProto, index);

            effectOwnerDic = new Dictionary <long, List <AttributeEffect> >();
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        public override void Initialize(long id, Soldier owner, UnitSkillData skillProto, int index)
        {
            base.Initialize(id, owner, skillProto, index);

            attributeEffect = new List <AttributeEffect>();
        }