Example #1
0
    public static void saveSkill(DSkillBaseData skilldata)
    {
        if (skillsDic.ContainsKey(skilldata.id))
        {
            skillsDic[skilldata.id] = skilldata;
        }
        else
            skillsDic.Add(skilldata.id, skilldata);

        CreateXML();
    }
Example #2
0
    public bool useSkill(DSkillBaseData useskilldata)
    {
        foreach(DSkillBaseData skilldata in skillList)
        {
            if(useskilldata.id == skilldata.id)
            {
                //int index = skillList.IndexOf(skilldata);
                if (skillCdTime[skilldata.id] <= 0)
                {
                    if (ConfigManager.intance.skillDefaultDic.ContainsKey(useskilldata.id))
                        skillCdTime[skilldata.id] = ConfigManager.intance.skillDefaultDic[useskilldata.id].cdTime;
                    lastUseSkill = useskilldata;
                    normalCdTime = Random.Range(2,DefaultSkillParam.skillCdTime);
                    return true;
                }
            }
        }

        return false;
    }
Example #3
0
 public float getCDTime(DSkillBaseData skilldata)
 {
     if (skillCdTime.ContainsKey(skilldata.id))
         return skillCdTime[skilldata.id];
     else
         return 0;
 }
Example #4
0
    public void casterSkill(DSkillBaseData baseskilldata)
    {
        DBaseFightRole attackrole = selfRoles[0];
        if(attackrole != null)
        {
            attackrole.useSkill(baseskilldata);
        }

    }
Example #5
0
 private bool isAttackEnemy(DSkillBaseData skilldata)
 {
     if (fightstate == RoleFightState.Chaos)
         return false;
     else return skilldata.isAttackSkill();
 }
Example #6
0
    //被击伤害

    IEnumerator beantonBlood(DRoleData castRoleData, DSkillBaseData baseskilldata, float delayTime)
    {
        yield return new WaitForSeconds(delayTime);

        int phyPlus = 0;
        int magPlus = 0;
        if (ConfigManager.intance.skillDefaultDic.ContainsKey(baseskilldata.id))
        {
            DSkillDefaultData defaultskill = ConfigManager.intance.skillDefaultDic[baseskilldata.id];
            if (defaultskill.attack_plus.ContainsKey((int)EBaseAttr.Phy_Attack))
            {
                phyPlus = (int)castRoleData.getBaseAttrByType(EBaseAttr.Phy_Attack) * defaultskill.attack_plus[(int)EBaseAttr.Phy_Attack]/100;
            }
            if (defaultskill.attack_plus.ContainsKey((int)EBaseAttr.Mag_Attack))
            {
                magPlus = (int)castRoleData.getBaseAttrByType(EBaseAttr.Mag_Attack) * defaultskill.attack_plus[(int)EBaseAttr.Mag_Attack]/100;
            }
        }
        int harm = FightCalculateTool.calculateHarm(castRoleData, roledata, phyPlus, magPlus);
        roledata.addBaseBuffAttr(EBaseAttr.Hp, -harm);

        hpbarui.updateHp();
        if (roledata.getBaseAttrByType(EBaseAttr.Hp) <=0 )
        {
            isDead = true;
            doDead();
        }
    }
Example #7
0
    //被击buff
    IEnumerator addBuffByBeaton(DSkillBaseData baseskilldata,float delayTime)
    {
        yield return new WaitForSeconds(delayTime);
         DSkillDefaultData skillDefdata = null;

         if (ConfigManager.intance.skillDefaultDic.ContainsKey(baseskilldata.id))
            skillDefdata = ConfigManager.intance.skillDefaultDic[baseskilldata.id];
         if (skillDefdata != null)
         {
             DBuffData buffdata;
             foreach (int buffid in skillDefdata.buffenemy)
             {
                 buffdata = ConfigManager.intance.basebuffDataDic[buffid];
                 if (buffdata != null)
                 {
                     addBuffBydata(buffdata);
                 }
             }

         }
         hpbarui.updateHp();
    }
Example #8
0
    //使用技能发动攻击
    public bool useSkill(DSkillBaseData baseSkilldata)
    {
        if (!canUseSkillNow())
            return false;

        if (baseSkilldata != null)
        {
            GameObject firstenemy = FightRoleManager._instance.findAttackEnemy(this, EAttackStragety.EAttackStragety_Nearest, isAttackEnemy(baseSkilldata));

            if (firstenemy != null)
            {
                isCasteringSkill = true;
                casterdata = new SkillCasterData();
                casterdata.castRole = gameObject;
                casterdata.skilldata = baseSkilldata;

                float dist = FightRoleManager._instance.getFightRoleDistance(this, firstenemy.GetComponent<DBaseFightRole>());
                roleModel.transform.LookAt(firstenemy.GetComponent<DBaseFightRole>().roleModel.transform, Vector3.up);

                if (skillManager != null)
                {
                    skillManager.useSkill(baseSkilldata);
                }
                if (dist > DefaultSkillParam.PathFindingDist)//当距离大于可自动寻路距离,不作攻击,只表现一下施放动作和特性
                {
                    StartCoroutine(showAttackMov());

                }
                else if (dist > baseSkilldata.minAttackDist)
                {
                    StartCoroutine(gotoEnemy());
                }
                else
                {
                    //roleModel.transform.LookAt(firstenemy.transform, Vector3.up);
                    if (casterdata.skilldata.isNeedAppoint)
                    {
                        skillstep = ESkillStep.Selecting;
                    }
                    else
                    {
                        if (casterdata.skilldata.isUseMoveEff)
                            StartCoroutine(ShowMoveEffectToEnemy(firstenemy));
                        else
                            StartCoroutine(showBeantonMov());
                        if (casterdata.skilldata.isShakeCamera)
                            Invoke("shakeCamera", casterdata.skilldata.shakeTime);
                        StartCoroutine(showAttackMov());
                    }
                }
            }
            else
            {
                if (skillManager != null)
                {
                    skillManager.useSkill(baseSkilldata);
                }
                isCasteringSkill = true;
                casterdata = new SkillCasterData();
                casterdata.castRole = gameObject;
                casterdata.skilldata = baseSkilldata;
                StartCoroutine(showAttackMov());
                return true;
            }
        }
        return false;

    }
Example #9
0
    public static void LoadXml()
    {
        string xmlurl;
#if UNITY_EDITOR
        xmlurl = Application.dataPath + "/TextInfo/skillConfig.xml";
#endif
#if UNITY_ANDROID
         xmlurl = Application.persistentDataPath + "/skillConfig.xml";
#endif
        //创建xml文档
         if (!File.Exists(xmlurl))
        {
            return;
        }
        XmlDocument xml = new XmlDocument();
        XmlReaderSettings set = new XmlReaderSettings();
        set.IgnoreComments = true;//这个设置是忽略xml注释文档的影响。有时候注释会影响到xml的读取
        xml.Load(XmlReader.Create((xmlurl), set));
        //得到objects节点下的所有子节点
        XmlNodeList xmlNodeList = xml.SelectSingleNode("allskill").ChildNodes;
        DSkillBaseData skilldata;
        //遍历所有子节点
        foreach (XmlElement oneskill in xmlNodeList)
        {

            skilldata = new DSkillBaseData();
            skilldata.id = int.Parse(oneskill.GetAttribute("id"));
            skilldata.skillName = oneskill.GetAttribute("name");
            skilldata.skilltype = (ESkillType)(int.Parse(oneskill.GetAttribute("skilltype")));
            skilldata.minAttackDist = float.Parse(oneskill.GetAttribute("minAttackDist"));

            skilldata.animatorClip = (eAnimatorState)(int.Parse(oneskill.GetAttribute("animatorClip")));
            skilldata.fireEffUrl = oneskill.GetAttribute("fireEffUrl");
            skilldata.fireTime = float.Parse(oneskill.GetAttribute("fireTime"));
            skilldata.fireEffPos = (EFirePos)(int.Parse(oneskill.GetAttribute("fireEffPos")));
            skilldata.isUseMoveEff = oneskill.GetAttribute("isUseMoveEff") == "1";
            skilldata.moveEffUrl = oneskill.GetAttribute("moveEffUrl");
            skilldata.isSingleMove = oneskill.GetAttribute("isSingleMove") == "1";
            skilldata.moveBeginTime = float.Parse(oneskill.GetAttribute("moveBeginTime"));
            skilldata.isQunGong = oneskill.GetAttribute("isQunGong") == "1";
            skilldata.harmDist = float.Parse(oneskill.GetAttribute("harmDist"));
            skilldata.isNeedAppoint = oneskill.GetAttribute("isNeedAppoint") == "1";
            skilldata.explodeEffUrl = oneskill.GetAttribute("explodeEffUrl");

            if (oneskill.HasAttribute("isShakeCamera"))
                skilldata.isShakeCamera = oneskill.GetAttribute("isShakeCamera") == "1";
            if (oneskill.HasAttribute("shakeTime"))
                skilldata.shakeTime = float.Parse(oneskill.GetAttribute("shakeTime"));

            if (oneskill.HasAttribute("beatonData"))
                skilldata.parseBeatonStr(oneskill.GetAttribute("beatonData"));
           // skilldata.animatorBeatonClip = (eAnimatorState)(int.Parse(oneskill.GetAttribute("animatorBeatonClip")));
          //  skilldata.beatonEffUrl = oneskill.GetAttribute("beatonEffUrl");
          //  skilldata.beatonTime = float.Parse(oneskill.GetAttribute("beatonTime"));
          //  if (oneskill.HasAttribute("eBeatonbackFly"))
         //   skilldata.eBeatonbackFly = (EBeatonToBackFly)(int.Parse(oneskill.GetAttribute("eBeatonbackFly")));

            skillsDic.Add(skilldata.id, skilldata);
        }

    }
Example #10
0
    void setSkilldata()
    {
        skilldata = new DSkillBaseData();
        skilldata.skillName = skillNameText.value;
        skilldata.id = int.Parse(skillIDText.value);
        skilldata.animatorClip = animatorClip;
        skilldata.skilltype = skilltype;
        // skilldata.near_farAtk = near_farAtk;
        skilldata.minAttackDist = float.Parse(skillMinDistTxt.value);

        if (attackEffPrefab != null)
            skilldata.fireEffUrl = attackEffPrefab.name;

        skilldata.fireTime = float.Parse(skillAttackEffectTimeTxt.value);
        skilldata.fireEffPos = fireEffPos;

        skilldata.isUseMoveEff = isUseMoveEffTgle.value;
        if (moveEffPrefab != null)
            skilldata.moveEffUrl = moveEffPrefab.name;
        skilldata.moveBeginTime = float.Parse(moveEffStartTimeInput.value);
        skilldata.isSingleMove = !isSingleMoveEffTgle.value;

        skilldata.isQunGong = isAttackAllTgle.value;

        skilldata.harmDist = float.Parse(harmDisTxt.value);

        skilldata.isNeedAppoint = isNeedAppointTgle.value;
        if (explodeEffPrefab != null)
            skilldata.explodeEffUrl = explodeEffPrefab.name;

        skilldata.isShakeCamera = isShakeCameraTgle.value;
        skilldata.shakeTime = float.Parse(shakeTimeInput.value);
        skilldata.beatonDatas = beatonPanelMg.getbeatonData();
        //skilldata.animatorBeatonClip = animatorBeatonClip;

        //if (beatonEffPrefab != null)
        //    skilldata.beatonEffUrl = beatonEffPrefab.name;
        //skilldata.beatonTime = float.Parse(beatonTimeInput.value);
        //skilldata.eBeatonbackFly = beatonBackOrFly;
    }