public void InitSlotSkills(InstituteSkillData headSkill) { if (dataManager == null) { dataManager = DataManager.GetInstance(); } this.nextInstituteSkill = headSkill; DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "InitSlotSkills thisInstituteSkill ID is " + this.nextInstituteSkill.skillID); List <InstituteSkillProto.InstituteSkill> protoSkills = dataManager.instituteSkillProtoData; slotInstituteSkills.Add(headSkill); int nextSkillID = headSkill.nextSkillID; while (nextSkillID != 0) { for (int i = 0; i < protoSkills.Count; i++) { if (protoSkills[i].ID == nextSkillID) { InstituteSkillData tempSkill = new InstituteSkillData(); tempSkill.SetSkillData(protoSkills[i].ID, protoSkills[i].Level, protoSkills[i].RequiredLevel, protoSkills[i].IconID, protoSkills[i].Txt_ID, protoSkills[i].Description_Id, protoSkills[i].Cost, protoSkills[i].BuffId, protoSkills[i].NextSkill); slotInstituteSkills.Add(tempSkill); nextSkillID = protoSkills[i].NextSkill; break; } } } skillMaxLv = slotInstituteSkills.Count; }
private void FillNextSkillInSlot(int applySkillID, int upgradeSkillID) { if (haveSkill == false) { haveSkill = true; } skillLv++; if (this.holdInstituteSkill != null) { MessageDispatcher.PostMessage(Constants.MessageType.RemoveBuildingBuffMessage, this.holdInstituteSkill.BuffsID); } this.holdInstituteSkill = slotInstituteSkills.Find(p => p.skillID == applySkillID); //This message just tell ui show instituteSkill value MessageDispatcher.PostMessage(Constants.MessageType.AddBuildingBuffMessage, this.holdInstituteSkill.BuffsID); if (upgradeSkillID != 0) { for (int i = 0; i < slotInstituteSkills.Count; i++) { if (slotInstituteSkills[i].nextSkillID == upgradeSkillID) { this.nextInstituteSkill = slotInstituteSkills.Find(p => p.skillID == slotInstituteSkills[i].nextSkillID); DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "There changed item instituteSkill, the new skill ID is :" + nextInstituteSkill.skillID); break; } } } }
private InstituteSkillData GetFillInstituteSkillData(InstituteSkillData inputSkillData) { if (inputSkillData.nextSkillID != 0) { Data.InstituteSkillProto.InstituteSkill skill = datamanager.instituteSkillProtoData.Find(p => p.ID == inputSkillData.nextSkillID); InstituteSkillData skillData = new InstituteSkillData(); skillData.skillID = skill.ID; skillData.skillLevel = skill.Level; skillData.skillNameID = skill.Txt_ID; skillData.skillRequiredLevel = skill.RequiredLevel; skillData.skillIconID = skill.IconID; skillData.skillDescriptionID = skill.Description_Id; skillData.skillCost = skill.Cost; skillData.nextSkillID = skill.NextSkill; skillData.BuffsID = skill.BuffId; return(skillData); } else { isSkillMaxLv = true; return(inputSkillData); } }
//This function will reset instituteSkill default setting. public void ResetSkillData(int unlockLv) { skillLv = 0; haveSkill = false; holdInstituteSkill = null; nextInstituteSkill = slotInstituteSkills[0]; RefreshInsituteSkillItem(false); RefreshInstituteStatus(); SetInsituteSkillUI(unlockLv); }
private void InstituteSkillRepeatedlyUpgrade(ref int cost, ref InstituteSkillData temp, int upgradeNum) { for (int i = 0; i < upgradeNum; i++) { cost += temp.skillCost; temp = GetFillInstituteSkillData(temp); } DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "Institute skill RepeatedlyUpgrade " + cost + " upgradeSkillID is " + temp.skillID); }
public void FillTargetSkillInSlot(int upgradedSkillID) { if (haveSkill == false) { haveSkill = true; } if (this.holdInstituteSkill != null) { MessageDispatcher.PostMessage(Constants.MessageType.RemoveBuildingBuffMessage, this.holdInstituteSkill.BuffsID); } if (upgradedSkillID == 0) { skillLv = slotInstituteSkills.Count; this.holdInstituteSkill = slotInstituteSkills[skillLv - 1]; this.nextInstituteSkill = this.holdInstituteSkill; } else { for (int i = 0; i < slotInstituteSkills.Count; i++) { if (slotInstituteSkills[i].nextSkillID == upgradedSkillID) { this.holdInstituteSkill = slotInstituteSkills[i]; if (upgradedSkillID != 0) { this.nextInstituteSkill = slotInstituteSkills.Find(p => p.skillID == slotInstituteSkills[i].nextSkillID); } else { this.nextInstituteSkill = this.holdInstituteSkill; } skillLv = slotInstituteSkills.IndexOf(nextInstituteSkill); break; } } } //This message just tell ui show instituteSkill value MessageDispatcher.PostMessage(Constants.MessageType.AddBuildingBuffMessage, this.holdInstituteSkill.BuffsID); }
//Init institute seted all skill and skills all Level data. public void InitInstituteSkillsData() { DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "InitInstituteSkills"); instituteHeadSkills = new List <InstituteSkillData>(); List <int> playerInstituteSkills = datamanager.GetPlayerSetedPackageInstituteSkills(datamanager.GetBattleConfigInsituteSkillIndex(datamanager.GetBattleType())); List <InstituteSkillProto> protoInstituteSkills = datamanager.instituteSkillProtoData; for (int i = 0; i < playerInstituteSkills.Count; i++) { for (int j = 0; j < protoInstituteSkills.Count; j++) { if (protoInstituteSkills[j].ID == playerInstituteSkills[i]) { InstituteSkillData tempSkill = new InstituteSkillData(); tempSkill.SetSkillData(protoInstituteSkills[j].ID, protoInstituteSkills[j].Level, protoInstituteSkills[j].RequiredLevel, protoInstituteSkills[j].IconID, protoInstituteSkills[j].Txt_ID, protoInstituteSkills[j].Description_Id, protoInstituteSkills[j].Cost, protoInstituteSkills[j].BuffId, protoInstituteSkills[j].NextSkill); instituteHeadSkills.Add(tempSkill); break; } } } }
//InstituteSkill upgrade use next skill id and upgrade unmber of times. public int InstituteSkillLevelUp(int skillID, int upgradeNum) { int cost = 0; int index = 0; InstituteSkillData temp = instituteHeadSkills.Find(p => p.skillID == skillID); List <int> buffsID; if (effectedSoldier == null) { effectedSoldier = town.GetAliveSoldiers(); usedInstituteSkills = new List <InstituteSkillData>(); } DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "The instituteSkill will upgrade, skill ID is " + skillID); if (temp != null) { if (playerSkillBuffs.Count > 0) { for (int i = 0; i < usedInstituteSkills.Count; i++) { if (usedInstituteSkills[i].nextSkillID == temp.skillID) { buffsID = GetBuffsID(usedInstituteSkills[i].BuffsID.Split('|')); RemoveBuff(buffsID[0]); RemoveDebuff(buffsID[1]); usedInstituteSkills.Remove(usedInstituteSkills[i]); } } } index = instituteHeadSkills.IndexOf(temp); if (upgradeNum == 1) { usedInstituteSkills.Add(temp); cost = temp.skillCost; buffsID = GetBuffsID(instituteHeadSkills[index].BuffsID.Split('|')); AddBuff(buffsID[0]); AddDebuff(buffsID[1]); instituteHeadSkills[index] = GetFillInstituteSkillData(temp); DebugUtils.Log(DebugUtils.Type.InstitutesSkill, string.Format("Add buff ID is:{0}, Add debuff ID is {1}.", buffsID[0], buffsID[1])); } else if (upgradeNum > 1) { InstituteSkillRepeatedlyUpgrade(ref cost, ref temp, upgradeNum); buffsID = GetBuffsID(temp.BuffsID.Split('|')); AddBuff(buffsID[0]); AddDebuff(buffsID[1]); instituteHeadSkills[index] = temp; usedInstituteSkills.Add(temp); DebugUtils.Log(DebugUtils.Type.InstitutesSkill, string.Format("Add buff ID is:{0}, Add debuff ID is {1}.", buffsID[0], buffsID[1])); } else { DebugUtils.LogError(DebugUtils.Type.InstitutesSkill, string.Format("Can't upgrade the skill,upgrade number of times is : {0}", upgradeNum)); } } else { DebugUtils.LogError(DebugUtils.Type.InstitutesSkill, "Can't find the skill." + skillID); } RenderMessage message = new RenderMessage(); message.ownerId = id; message.type = RenderMessage.Type.InstituteSkillLevelUp; message.arguments.Add("mark", mark); message.arguments.Add("applySkillID", skillID); if (upgradeNum == 1) { if (temp.nextSkillID != 0) { message.arguments.Add("upgradeSkillID", instituteHeadSkills[index].skillID); } else { message.arguments.Add("upgradeSkillID", 0); } } else if (upgradeNum > 1) { if (upgradeNum == maxLv || isSkillMaxLv) { message.arguments.Add("upgradeSkillID", 0); } else { message.arguments.Add("upgradeSkillID", instituteHeadSkills[index].skillID); } } PostRenderMessage(message); isSkillMaxLv = false; DebugUtils.Log(DebugUtils.Type.InstitutesSkill, "Institute skill return cost is " + cost + " applySkillID is " + skillID + " upgradeSkillID is " + instituteHeadSkills[index].skillID); return(cost); }