伤害流程过程
伤害流程存在形式整个伤害流程以的形式分成多个伤害流程组,需要按顺序一起执行的伤害流程放在同一个组内,同时每个伤害流程又可以有成功后的子伤害流程细,失败后的子
伤害流程组。
配置 \gameserver\ Share\hurtmgr.csv
\gameserver\Share\Functionbind.csv
类结构字段
一、配置表单条伤害流程主要字段
ID: Integer
Groupld: Integer
IsMain: integer
Func: string //伤害流程名字
IsChoose: Integer //是否有子伤害流程组
SuccGroup: Integer //成功执行的 Groupid
FailGroup: Integer //失败执行的 Groupid
//用于辅助伤害流程计算
ParamA: Integer//参数A
ParamB: Integer//参数B
ParamC: Inteqer//参数C
ParamD: Integer//参数D
Param1: Integer//参数1
Param2: Integer//参数2
二、伤害流程组宇段
Groupld: integer //groupid
IsEnd: Boolean //说明流程添加完毕
FList: TList //伤害流程列表
三、伤害流程函数绑定字段
FuncDesc: string //伤害流程名宇,对应 Func
FuncName: string //程序中的回调函数命名
自检过程
读取配置的时候为防止添加子伤害流程组时出现添加了它的某个上层伤害流程组导致出现死循环,因此读完配置后需要做一个是否循环引用的自检测。
伤害流程存在形式
伤害流程以回调函数( THurtfunc)形式来表示,每新加一条伤害流程就加个THurtfunc,
THurtfunc存放在THurtFuncRec结构体中,结构体如下:
THurtFuncRec = record
func: THurtFunc;
end
FunctionBind.csv表中的 FuncName表示我们程序中伤害流程函数的命名,读取
FunctionBind.csv表并将对应的函数包装为结构体THurtFuncRec,以 FuncDesc(伤害流程描
述)为key存入 FFuncHash中。
hurtmgr.csv表中的Func字段对应FunctionBind.csv中的FuncDesc,在添加伤害流程组的时候从FFuncHash中取出对应的回调函数结构体。
执行过程
调用方式:需要调用伤害流程的时候输入首个组id,按顺序依次执行该组内的伤害流程(调用对应的回调函数),若某条伤害流程有子伤害流程组,则执行完该伤害流程后执行子伤害流程组,子伤害流程组执行完后继执行该组内的下一条伤害流程
例:A伤害流程组内有三条伤害流程,A伤害流程1,A伤害流程2,A伤害流程3,A伤害
流程2又包含了成功后的子伤害流程组B,我们在调用A伤害流程组时的执行顺序如下: