Exemplo n.º 1
0
    /// <summary>
    /// 为target添加技能效果.
    /// skillEffectResID为skilleffect.txt的资源ID.
    /// </summary>
    public static ErrorCode AddSkillEffectByResource(AttackerAttr attackerAttr, BattleUnit target, uint skillEffectResID)
    {
        if (skillEffectResID == uint.MaxValue)
        {
            return(ErrorCode.Succeeded);
        }

        SkillEffectTableItem effectRes = DataManager.SkillEffectTable[skillEffectResID] as SkillEffectTableItem;

        if (effectRes == null)
        {
            SkillUtilities.ResourceNotFound("skilleffect", skillEffectResID);
            return(ErrorCode.ConfigError);
        }

        System.Type T = effectRes.GetType();
        for (uint i = 0; i < SkillEffectTableItem.SkillEffectCount; ++i)
        {
            SkillEffectItem item = effectRes.items[i];

            if (item.effectType == SkillEffectType.Invalid || item.effectID == uint.MaxValue)
            {
                break;
            }

            ErrorHandler.Parse(
                target.AddSkillEffect(attackerAttr, item.effectType, item.effectID),
                "in AddSkillEffectByResource"
                );
        }

        return(ErrorCode.Succeeded);
    }
Exemplo n.º 2
0
    private bool checkSkillEffect()
    {
        DataType myName           = DataType.DATA_SKILL_EFFECT;
        IDictionaryEnumerator itr = DataManager.SkillEffectTable.GetEnumerator();

        while (itr.MoveNext())
        {
            SkillEffectTableItem item = itr.Value as SkillEffectTableItem;

            for (uint i = 0; i < SkillEffectTableItem.SkillEffectCount; ++i)
            {
                SkillEffectItem subItem = item.items[i];
                SkillEffectType type    = subItem.effectType;
                uint            resId   = subItem.effectID;
                switch (type)
                {
                case SkillEffectType.Buff:
                    if (!checkLink(myName, item.resID, DataType.DATA_SKILL_BUFF, resId))
                    {
                        return(false);
                    }
                    break;

                case SkillEffectType.Displacement:
                    if (!checkLink(myName, item.resID, DataType.DATA_SKILL_DISPLACEMENT, resId))
                    {
                        return(false);
                    }
                    break;

                case SkillEffectType.Impact:
                    if (!checkLink(myName, item.resID, DataType.DATA_SKILL_IMPACT, resId))
                    {
                        return(false);
                    }
                    break;

                case SkillEffectType.Spasticity:
                    if (!checkLink(myName, item.resID, DataType.DATA_SKILL_SPASTICITY, resId))
                    {
                        return(false);
                    }
                    break;

                case SkillEffectType.Invalid:
                    break;

                default:
                    checkParam(false, myName, item.resID, "效果类型");
                    return(false);
                }
            }
        }
//      foreach (int key in DataManager.SkillEffectTable.Keys)
//      {
//
//      }

        return(true);
    }