public static void saveSkill(DSkillBaseData skilldata) { if (skillsDic.ContainsKey(skilldata.id)) { skillsDic[skilldata.id] = skilldata; } else skillsDic.Add(skilldata.id, skilldata); CreateXML(); }
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; }
public float getCDTime(DSkillBaseData skilldata) { if (skillCdTime.ContainsKey(skilldata.id)) return skillCdTime[skilldata.id]; else return 0; }
public void casterSkill(DSkillBaseData baseskilldata) { DBaseFightRole attackrole = selfRoles[0]; if(attackrole != null) { attackrole.useSkill(baseskilldata); } }
private bool isAttackEnemy(DSkillBaseData skilldata) { if (fightstate == RoleFightState.Chaos) return false; else return skilldata.isAttackSkill(); }
//被击伤害 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(); } }
//被击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(); }
//使用技能发动攻击 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; }
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); } }
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; }