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)); }
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); } } }