コード例 #1
0
ファイル: sdBuffEffect.cs プロジェクト: tsinglee2009/Dczg
    public static bool    Add(sdActorInterface castActor, sdActorInterface target, Hashtable buffeffect, HeaderProto.EDoOperationType doType, int layer)
    {
        sdEffectOperation.OpParameter param = new sdEffectOperation.OpParameter();
        param.id          = (int)buffeffect["dwOperationID"];
        param.data        = (int)buffeffect["dwOperationData"];
        param.data1       = (int)buffeffect["dwOperationData1"];
        param.data2       = 0;
        param.layer       = layer;
        param.doType      = (int)doType;
        param.attackActor = castActor;
        param.targetActor = target;
        param.trans       = target.transform;

        return(sdEffectOperation.Do(target, param));
    }
コード例 #2
0
ファイル: sdBuff.cs プロジェクト: tsinglee2009/Dczg
    void    DoBeginEffect(HeaderProto.EDoOperationType doType, int layer)
    {
        bool bBegin = (doType == HeaderProto.EDoOperationType.DO_OPERATION_TYPE_START);

        for (int i = 0; i < 8; i++)
        {
            if (effects[i] == null)
            {
                continue;
            }
            int templateid      = (int)effects[i]["effectID"];
            int iType           = (int)effects[i]["byEffectType"];
            int byEffectExplain = (int)effects[i]["byEffectExplain"];                                //属性类型HeaderProto.EProperty
            int id = (int)effects[i]["dwOperationID"];                                               //HeaderProto.EOpreationFlag
            int dwOperationData  = (int)effects[i]["dwOperationData"];
            int dwOperationData1 = (int)effects[i]["dwOperationData1"];
            int dwPeriodicData   = (int)effects[i]["dwPeriodicData"];
            int dwEXData         = (int)effects[i]["dwEXData"];

            if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_START)
            {
                if (!bBegin)
                {
                    if (dwEXData == 0)
                    {
                        return;
                    }
                }
                switch (dwPeriodicData)
                {
                case 0: {                         //对buff的所有者
                    sdBuffEffect.Add(m_CasterActor, GetActor(), effects[i], doType, layer);
                    break;
                }

                case 1: {                       //对buff的释放者
                    sdBuffEffect.Add(m_CasterActor, m_CasterActor, effects[i], doType, layer);
                    break;
                }

                case 2: {
                    if (bBegin)
                    {
                        //获取AOE范围内的所有目标.
                        List <sdActorInterface> lstAoe = GetEffectedActors();
                        foreach (sdActorInterface a in lstAoe)
                        {
                            sdBuffEffect.Add(m_CasterActor, a, effects[i], doType, layer);
                        }
                    }
                    break;
                }
                }
            }
            else if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_MOD_PRO)
            {
                ModifyActorProperty(
                    (HeaderProto.EProperty)byEffectExplain,
                    (HeaderProto.EOpreationFlag)id,
                    (HeaderProto.EOpreationFlag)dwOperationData,
                    dwOperationData1,
                    bBegin);
            }
            else if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_MOD_SKILL_INFO_PRO)
            {
                ModifySkillProperty(
                    (HeaderProto.ESkillInfoPro)byEffectExplain,
                    (HeaderProto.EOpreationFlag)id,
                    (HeaderProto.EOpreationFlag)dwOperationData,
                    dwOperationData1,
                    (HeaderProto.EEffectSkillBuffOptType)dwPeriodicData,
                    dwEXData,
                    bBegin);
            }
            else if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_MOD_SKILL_ACTION_PRO)
            {
                ModifySkillActionProperty(
                    (HeaderProto.ESkillActionPro)byEffectExplain,
                    (HeaderProto.EOpreationFlag)id,
                    (HeaderProto.EOpreationFlag)dwOperationData,
                    dwOperationData1,
                    (HeaderProto.EEffectSkillBuffOptType)dwPeriodicData,
                    dwEXData,
                    bBegin);
            }
            else if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_MOD_SKILL_EFFECT_PRO)
            {
                ModifySkillEffectProperty(
                    (HeaderProto.ESkillEffectPro)byEffectExplain,
                    (HeaderProto.EOpreationFlag)id,
                    (HeaderProto.EOpreationFlag)dwOperationData,
                    dwOperationData1,
                    (HeaderProto.EEffectSkillBuffOptType)dwPeriodicData,
                    dwEXData,
                    bBegin);
            }
            else if (iType == (int)HeaderProto.EBuffEffectType.BUFF_EFFECT_MOD_SUMMONOBJECT_PRO)
            {
                ModifySummonObjectProperty(
                    (HeaderProto.ESummonObjectPro)byEffectExplain,
                    (HeaderProto.EOpreationFlag)id,
                    (HeaderProto.EOpreationFlag)dwOperationData,
                    dwOperationData1,
                    dwPeriodicData,
                    dwEXData,
                    bBegin);
            }
        }
    }