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;
                    }
                }
            }
        }
示例#3
0
        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);
        }
示例#5
0
        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);
        }
示例#7
0
        //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;
                    }
                }
            }
        }
示例#8
0
        //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);
        }