Esempio n. 1
0
        public bool TrySetSkillSlot(SkillNameTag skillNameTag,
                                    SkillSlotTag skillSlotTag, SkillComponentTag skillComponentTag)
        {
            SkillTypeTag skillTypeTag = GetComponent <PCSkillManager>()
                                        .GetSkillTypeTag(skillNameTag);
            bool canSetSlot;

            switch (skillSlotTag)
            {
            case SkillSlotTag.Merit1:
            case SkillSlotTag.Merit2:
            case SkillSlotTag.Merit3:
                canSetSlot = VerifyMeritSlot(skillTypeTag, skillComponentTag);
                break;

            case SkillSlotTag.Flaw1:
            case SkillSlotTag.Flaw2:
            case SkillSlotTag.Flaw3:
                canSetSlot = VerifyFlawSlot(skillComponentTag);
                break;

            default:
                canSetSlot = false;
                break;
            }

            if (canSetSlot &&
                slotCompDict.TryGetValue(skillNameTag, out var slotComp))
            {
                slotComp[skillSlotTag] = skillComponentTag;
                return(true);
            }
            return(false);
        }
Esempio n. 2
0
        private int SetBaseDamage(SkillNameTag skillNameTag)
        {
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillNameTag);
            int damage = zeroDamage;

            Dictionary <SkillComponentTag, EffectData> compEffect;
            SkillComponentTag checkComp;

            if (skillType == SkillTypeTag.Attack)
            {
                damage     = baseDamage;
                compEffect = GetComponent <PCSkillManager>()
                             .GetSkillEffect(skillNameTag);
                checkComp = SkillComponentTag.AirCurse;

                if (compEffect.TryGetValue(checkComp, out EffectData effectData))
                {
                    damage += effectData.Power;
                }
            }

            nameDamage[skillNameTag] = damage;
            return(damage);
        }
Esempio n. 3
0
        private void Effect(CommandTag commandTag)
        {
            SkillTypeTag skillType = skillManager.GetSkillTypeTag(commandTag);

            if (!printEffect.Contains(skillType))
            {
                return;
            }

            SkillNameTag skillName = skillManager.GetSkillNameTag(commandTag);
            Dictionary <SkillComponentTag, EffectData> compInt
                = skillManager.GetSkillEffect(skillName);

            SkillComponentTag[] sortedComp = SortComponents(skillType, compInt);

            string            comp;
            string            effect;
            SkillComponentTag current;

            for (int i = 0; i < sortedComp.Length; i++)
            {
                current = sortedComp[i];
                comp    = skillManager.GetSkillComponentName(current);
                effect  = skillManager.GetSkillEffectName(current,
                                                          compInt[current]);

                SearchText(uiCurseText[i]).text = comp;
                SearchText(uiCurseData[i]).text = effect;
            }
        }
Esempio n. 4
0
        private void PCTeleportSelf_TakingAction(object sender,
                                                 PublishActionEventArgs e)
        {
            if (e.SubTag != SubTag.PC)
            {
                return;
            }

            SkillNameTag skillName = GetComponent <PCSkillManager>()
                                     .GetSkillNameTag(e.Action);
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillName);

            if (skillType != SkillTypeTag.Move)
            {
                return;
            }

            int[] source = GetComponent <MetaInfo>().Position;
            int[] target = targetPosition;

            GetComponent <LocalManager>().SetPosition(target);
            GameCore.AxeManCore.GetComponent <TileOverlay>().TryHideTile(source);
            GameCore.AxeManCore.GetComponent <TileOverlay>().TryHideTile(target);

            GameCore.AxeManCore.GetComponent <LogManager>().Add(
                new LogMessage(LogCategoryTag.Combat, LogMessageTag.PCTeleport));
        }
Esempio n. 5
0
        private SkillComponentTag[] SortComponents(SkillTypeTag skillTypeTag,
                                                   Dictionary <SkillComponentTag, EffectData> compInt)
        {
            Queue <SkillComponentTag> sortedComp = new Queue <SkillComponentTag>();

            SkillComponentTag[] checkList;

            switch (skillTypeTag)
            {
            case SkillTypeTag.Buff:
                checkList = sortedEnhance;
                break;

            case SkillTypeTag.Curse:
                checkList = sortedCurse;
                break;

            default:
                checkList = new SkillComponentTag[] { };
                break;
            }

            foreach (SkillComponentTag sct in checkList)
            {
                if (compInt.ContainsKey(sct))
                {
                    sortedComp.Enqueue(sct);
                }
            }
            return(sortedComp.ToArray());
        }
Esempio n. 6
0
        private int SetBaseRange(SkillNameTag skillNameTag)
        {
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillNameTag);
            int range = minRange;

            Dictionary <SkillComponentTag, EffectData> compEffect;
            SkillComponentTag checkComp;

            if (skillType != SkillTypeTag.Buff)
            {
                range      = baseRange;
                compEffect = GetComponent <PCSkillManager>()
                             .GetSkillEffect(skillNameTag);
                checkComp = SkillComponentTag.AirMerit;

                if (compEffect.TryGetValue(checkComp, out EffectData effectData))
                {
                    range += effectData.Power;
                }
            }

            nameRange[skillNameTag] = range;
            return(range);
        }
Esempio n. 7
0
        private void PCBuffSelf_TakingAction(object sender,
                                             PublishActionEventArgs e)
        {
            if (e.SubTag != SubTag.PC)
            {
                return;
            }

            SkillNameTag skillName = GetComponent <PCSkillManager>()
                                     .GetSkillNameTag(e.Action);
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillName);

            if (skillType != SkillTypeTag.Buff)
            {
                return;
            }

            Dictionary <SkillComponentTag, EffectData> compInt
                = GetComponent <PCSkillManager>().GetSkillEffect(skillName);

            foreach (SkillComponentTag sct in buffComps)
            {
                if (compInt.ContainsKey(sct))
                {
                    GetComponent <ActorStatus>().AddStatus(sct, compInt[sct]);
                }
            }

            GameCore.AxeManCore.GetComponent <LogManager>().Add(
                new LogMessage(LogCategoryTag.Combat, LogMessageTag.PCBuff));
        }
Esempio n. 8
0
 public string GetShortSkillTypeName(SkillTypeTag skillTypeTag)
 {
     if (shortTypeNameDict.TryGetValue(skillTypeTag, out string shortType))
     {
         return(shortType);
     }
     return(invalidName);
 }
Esempio n. 9
0
 public string GetLongSkillTypeName(SkillTypeTag skillTypeTag)
 {
     if (longTypeNameDict.TryGetValue(skillTypeTag, out string longType))
     {
         return(longType);
     }
     return(invalidName);
 }
Esempio n. 10
0
 private bool VerifyMeritSlot(SkillTypeTag skillTypeTag,
                              SkillComponentTag skillComponentTag)
 {
     if (validMeritSlot.TryGetValue(skillTypeTag, out var comp))
     {
         return(Array.Exists(comp, e => e == skillComponentTag));
     }
     return(false);
 }
Esempio n. 11
0
        public SkillTypeTag GetSkillTypeTag(SkillNameTag skillName,
                                            out string shortTypeName, out string fullTypeName)
        {
            SkillTypeTag skillType = skillTypeDict[skillName];

            shortTypeName = shortTypeNameDict[skillType];
            fullTypeName  = fullTypeNameDict[skillType];

            return(skillType);
        }
Esempio n. 12
0
        private void SkillNameType(CommandTag e)
        {
            SkillNameTag skillName = skillManager.GetSkillNameTag(e);
            SkillTypeTag skillType = skillManager.GetSkillTypeTag(skillName);

            string name = skillManager.GetSkillName(skillName);
            string type = skillManager.GetLongSkillTypeName(skillType);

            SearchText(UITag.SkillText).text = type;
            SearchText(UITag.SkillData).text = name;
        }
Esempio n. 13
0
        private void SetTemplateData(SkillNameTag skillName,
                                     SkillTypeTag skillType)
        {
            SkillSlotTag skillSlot = SkillSlotTag.SkillType;

            nameTypeDict[skillName] = skillType;
            xmlFile
            .Element(skillName.ToString())
            .Element(skillSlot.ToString())
            .Value
                = skillType.ToString();
        }
Esempio n. 14
0
        private void Damage(CommandTag commandTag)
        {
            SkillTypeTag skillType = skillManager.GetSkillTypeTag(commandTag);

            if (skillType != SkillTypeTag.Attack)
            {
                return;
            }

            SearchText(UITag.Status1Text).text
                = GetComponent <UITextData>().GetStringData(
                      UITextCategoryTag.ActorStatus, UITextDataTag.Damage);
            SearchText(UITag.Status1Data).text
                = skillManager.GetSkillDamage(commandTag).ToString();
        }
Esempio n. 15
0
        private int SetBaseRange(SkillNameTag skillNameTag)
        {
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillNameTag);
            int range = zeroRange;

            Dictionary <SkillComponentTag, int[]> compEffect;
            SkillComponentTag checkComp;

            if (skillType != SkillTypeTag.Enhance)
            {
                range      = baseRange;
                compEffect = GetComponent <PCSkillManager>()
                             .GetSkillEffect(skillNameTag);
                checkComp = SkillComponentTag.AirMerit;

                if (compEffect.TryGetValue(checkComp, out int[] powerDuration))
Esempio n. 16
0
        private int SetBaseDamage(SkillNameTag skillNameTag)
        {
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillNameTag);
            int damage = zeroDamage;

            Dictionary <SkillComponentTag, int[]> compEffect;
            SkillComponentTag checkComp;

            if (skillType == SkillTypeTag.Attack)
            {
                damage     = baseDamage;
                compEffect = GetComponent <PCSkillManager>()
                             .GetSkillEffect(skillNameTag);
                checkComp = SkillComponentTag.AirCurse;

                if (compEffect.TryGetValue(checkComp, out int[] powerDuration))
Esempio n. 17
0
        private void PCAttackTarget_TakingAction(object sender,
                                                 PublishActionEventArgs e)
        {
            if (e.SubTag != SubTag.PC)
            {
                return;
            }

            SkillNameTag skillName = GetComponent <PCSkillManager>()
                                     .GetSkillNameTag(e.Action);
            SkillTypeTag skillType = GetComponent <PCSkillManager>()
                                     .GetSkillTypeTag(skillName);

            if (skillType != SkillTypeTag.Attack)
            {
                return;
            }

            if (!GameCore.AxeManCore.GetComponent <SearchObject>()
                .Search(targetPosition[0], targetPosition[1], MainTag.Actor,
                        out GameObject[] targets))
Esempio n. 18
0
        private void VerifySkillTarget_VerifyingSkill(object sender,
                                                      VerifyingSkillEventArgs e)
        {
            SkillNameTag skillName = skillManager.GetSkillNameTag(e.UseSkill);
            SkillTypeTag skillType = skillManager.GetSkillTypeTag(skillName);

            int[]        position = aimMarker.GetComponent <MetaInfo>().Position;
            GameObject[] go       = GetComponent <SearchObject>().Search(
                position[0], position[1]);

            bool canUseSkill;

            switch (skillType)
            {
            case SkillTypeTag.Move:
                canUseSkill = VerifyMove(go);
                break;

            case SkillTypeTag.Attack:
            case SkillTypeTag.Curse:
                canUseSkill = VerifyAttackCurse(go);
                break;

            case SkillTypeTag.Buff:
                canUseSkill = VerifyBuff(go);
                break;

            default:
                canUseSkill = false;
                break;
            }

            if (!canUseSkill)
            {
                e.CanUseSkill.Push(false);
            }
        }
Esempio n. 19
0
 public string GetShortSkillTypeName(SkillTypeTag skillTypeTag)
 {
     return(GameCore.AxeManCore.GetComponent <SkillData>()
            .GetShortSkillTypeName(skillTypeTag));
 }
Esempio n. 20
0
 public string GetShortSkillTypeName(SkillTypeTag skillTypeTag)
 {
     return(GameCore.AxeManCore.GetComponent <ConvertSkillMetaInfo>()
            .GetShortSkillTypeName(skillTypeTag));
 }
Esempio n. 21
0
 public string GetLongSkillTypeName(SkillTypeTag skillTypeTag)
 {
     return(GetStringData(longType, skillTypeTag.ToString()));
 }
Esempio n. 22
0
 public string GetShortSkillTypeName(SkillTypeTag skillTypeTag)
 {
     return(GetStringData(shortType, skillTypeTag.ToString()));
 }