Files
hk4e/gdconf/quest_data.go
2023-04-01 06:41:14 +08:00

399 lines
16 KiB
Go

package gdconf
import (
"hk4e/pkg/logger"
)
type QuestCond struct {
Type int32
Param []int32
ComplexParam string
Count int32
}
type QuestExec struct {
Type int32
Param []string
}
// QuestData 任务配置表
type QuestData struct {
QuestId int32 `csv:"子任务ID"`
ParentQuestId int32 `csv:"父任务ID,omitempty"`
Sequence int32 `csv:"序列,omitempty"`
// 领取条件
AcceptCondCompose int32 `csv:"[领取条件]组合,omitempty"`
AcceptCondType1 int32 `csv:"[领取条件]1类型,omitempty"`
AcceptCondType1Param1 int32 `csv:"[领取条件]1参数1,omitempty"`
AcceptCondType1Param2 int32 `csv:"[领取条件]1参数2,omitempty"`
AcceptCondType1Param3 int32 `csv:"[领取条件]1参数3,omitempty"`
AcceptCondType2 int32 `csv:"[领取条件]2类型,omitempty"`
AcceptCondType2Param1 int32 `csv:"[领取条件]2参数1,omitempty"`
AcceptCondType2Param2 int32 `csv:"[领取条件]2参数2,omitempty"`
AcceptCondType2Param3 int32 `csv:"[领取条件]2参数3,omitempty"`
AcceptCondType3 int32 `csv:"[领取条件]3类型,omitempty"`
AcceptCondType3Param1 int32 `csv:"[领取条件]3参数1,omitempty"`
AcceptCondType3Param2 int32 `csv:"[领取条件]3参数2,omitempty"`
AcceptCondType3Param3 int32 `csv:"[领取条件]3参数3,omitempty"`
// 完成条件
FinishCondCompose int32 `csv:"[完成条件]组合,omitempty"`
FinishCondType1 int32 `csv:"[完成条件]1类型,omitempty"`
FinishCondType1Param1 int32 `csv:"[完成条件]1参数1,omitempty"`
FinishCondType1Param2 int32 `csv:"[完成条件]1参数2,omitempty"`
FinishCondType1ComplexParam string `csv:"[完成条件]1复杂参数,omitempty"`
FinishCondType1Count int32 `csv:"[完成条件]1次数,omitempty"`
FinishCondType2 int32 `csv:"[完成条件]2类型,omitempty"`
FinishCondType2Param1 int32 `csv:"[完成条件]2参数1,omitempty"`
FinishCondType2Param2 int32 `csv:"[完成条件]2参数2,omitempty"`
FinishCondType2ComplexParam string `csv:"[完成条件]2复杂参数,omitempty"`
FinishCondType2Count int32 `csv:"[完成条件]2次数,omitempty"`
FinishCondType3 int32 `csv:"[完成条件]3类型,omitempty"`
FinishCondType3Param1 int32 `csv:"[完成条件]3参数1,omitempty"`
FinishCondType3Param2 int32 `csv:"[完成条件]3参数2,omitempty"`
FinishCondType3ComplexParam string `csv:"[完成条件]3复杂参数,omitempty"`
FinishCondType3Count int32 `csv:"[完成条件]3次数,omitempty"`
// 失败条件
FailCondCompose int32 `csv:"[失败条件]组合,omitempty"`
FailCondType1 int32 `csv:"[失败条件]1类型,omitempty"`
FailCondType1Param1 int32 `csv:"[失败条件]1参数1,omitempty"`
FailCondType1ComplexParam string `csv:"[失败条件]1复杂参数,omitempty"`
FailCondType1Count int32 `csv:"[失败条件]1次数,omitempty"`
FailCondType2 int32 `csv:"[失败条件]2类型,omitempty"`
FailCondType2Param1 int32 `csv:"[失败条件]2参数1,omitempty"`
FailCondType2ComplexParam string `csv:"[失败条件]2复杂参数,omitempty"`
FailCondType2Count int32 `csv:"[失败条件]2次数,omitempty"`
// 执行
ExecType1 int32 `csv:"[执行]1类型,omitempty"`
ExecType1Param1 string `csv:"[执行]1参数1,omitempty"`
ExecType1Param2 string `csv:"[执行]1参数2,omitempty"`
ExecType2 int32 `csv:"[执行]2类型,omitempty"`
ExecType2Param1 string `csv:"[执行]2参数1,omitempty"`
ExecType2Param2 string `csv:"[执行]2参数2,omitempty"`
ExecType3 int32 `csv:"[执行]3类型,omitempty"`
ExecType3Param1 string `csv:"[执行]3参数1,omitempty"`
ExecType3Param2 string `csv:"[执行]3参数2,omitempty"`
ExecType4 int32 `csv:"[执行]4类型,omitempty"`
ExecType4Param1 string `csv:"[执行]4参数1,omitempty"`
ExecType4Param2 string `csv:"[执行]4参数2,omitempty"`
// 失败执行
FailExecType1 int32 `csv:"[失败执行]1类型,omitempty"`
FailExecType1Param1 string `csv:"[失败执行]1参数1,omitempty"`
FailExecType1Param2 string `csv:"[失败执行]1参数2,omitempty"`
FailExecType2 int32 `csv:"[失败执行]2类型,omitempty"`
FailExecType2Param1 string `csv:"[失败执行]2参数1,omitempty"`
FailExecType2Param2 string `csv:"[失败执行]2参数2,omitempty"`
FailExecType3 int32 `csv:"[失败执行]3类型,omitempty"`
FailExecType3Param1 string `csv:"[失败执行]3参数1,omitempty"`
FailExecType3Param2 string `csv:"[失败执行]3参数2,omitempty"`
// 开始执行
StartExecType1 int32 `csv:"[开始执行]1类型,omitempty"`
StartExecType1Param1 string `csv:"[开始执行]1参数1,omitempty"`
StartExecType1Param2 string `csv:"[开始执行]1参数2,omitempty"`
StartExecType2 int32 `csv:"[开始执行]2类型,omitempty"`
StartExecType2Param1 string `csv:"[开始执行]2参数1,omitempty"`
StartExecType2Param2 string `csv:"[开始执行]2参数2,omitempty"`
StartExecType3 int32 `csv:"[开始执行]3类型,omitempty"`
StartExecType3Param1 string `csv:"[开始执行]3参数1,omitempty"`
StartExecType3Param2 string `csv:"[开始执行]3参数2,omitempty"`
AcceptCondList []*QuestCond // 领取条件
FinishCondList []*QuestCond // 完成条件
FailCondList []*QuestCond // 失败条件
ExecList []*QuestExec // 执行
FailExecList []*QuestExec // 失败执行
StartExecList []*QuestExec // 开始执行
}
func (g *GameDataConfig) loadQuestData() {
g.QuestDataMap = make(map[int32]*QuestData)
fileNameList := []string{"QuestData.txt", "QuestData_Exported.txt"}
for _, fileName := range fileNameList {
questDataList := make([]*QuestData, 0)
readTable[QuestData](g.txtPrefix+fileName, &questDataList)
for _, questData := range questDataList {
// 领取条件
questData.AcceptCondList = make([]*QuestCond, 0)
if questData.AcceptCondType1 != 0 {
paramList := make([]int32, 0)
if questData.AcceptCondType1Param1 != 0 {
paramList = append(paramList, questData.AcceptCondType1Param1)
}
if questData.AcceptCondType1Param2 != 0 {
paramList = append(paramList, questData.AcceptCondType1Param2)
}
if questData.AcceptCondType1Param3 != 0 {
paramList = append(paramList, questData.AcceptCondType1Param3)
}
questData.AcceptCondList = append(questData.AcceptCondList, &QuestCond{
Type: questData.AcceptCondType1,
Param: paramList,
})
}
if questData.AcceptCondType2 != 0 {
paramList := make([]int32, 0)
if questData.AcceptCondType2Param1 != 0 {
paramList = append(paramList, questData.AcceptCondType2Param1)
}
if questData.AcceptCondType2Param2 != 0 {
paramList = append(paramList, questData.AcceptCondType2Param2)
}
if questData.AcceptCondType2Param3 != 0 {
paramList = append(paramList, questData.AcceptCondType2Param3)
}
questData.AcceptCondList = append(questData.AcceptCondList, &QuestCond{
Type: questData.AcceptCondType2,
Param: paramList,
})
}
if questData.AcceptCondType3 != 0 {
paramList := make([]int32, 0)
if questData.AcceptCondType3Param1 != 0 {
paramList = append(paramList, questData.AcceptCondType3Param1)
}
if questData.AcceptCondType3Param2 != 0 {
paramList = append(paramList, questData.AcceptCondType3Param2)
}
if questData.AcceptCondType3Param3 != 0 {
paramList = append(paramList, questData.AcceptCondType3Param3)
}
questData.AcceptCondList = append(questData.AcceptCondList, &QuestCond{
Type: questData.AcceptCondType3,
Param: paramList,
})
}
// 完成条件
questData.FinishCondList = make([]*QuestCond, 0)
if questData.FinishCondType1 != 0 {
paramList := make([]int32, 0)
if questData.FinishCondType1Param1 != 0 {
paramList = append(paramList, questData.FinishCondType1Param1)
}
if questData.FinishCondType1Param2 != 0 {
paramList = append(paramList, questData.FinishCondType1Param2)
}
questData.FinishCondList = append(questData.FinishCondList, &QuestCond{
Type: questData.FinishCondType1,
Param: paramList,
ComplexParam: questData.FinishCondType1ComplexParam,
Count: questData.FinishCondType1Count,
})
}
if questData.FinishCondType2 != 0 {
paramList := make([]int32, 0)
if questData.FinishCondType2Param1 != 0 {
paramList = append(paramList, questData.FinishCondType2Param1)
}
if questData.FinishCondType2Param2 != 0 {
paramList = append(paramList, questData.FinishCondType2Param2)
}
questData.FinishCondList = append(questData.FinishCondList, &QuestCond{
Type: questData.FinishCondType2,
Param: paramList,
ComplexParam: questData.FinishCondType2ComplexParam,
Count: questData.FinishCondType2Count,
})
}
if questData.FinishCondType3 != 0 {
paramList := make([]int32, 0)
if questData.FinishCondType3Param1 != 0 {
paramList = append(paramList, questData.FinishCondType3Param1)
}
if questData.FinishCondType3Param2 != 0 {
paramList = append(paramList, questData.FinishCondType3Param2)
}
questData.FinishCondList = append(questData.FinishCondList, &QuestCond{
Type: questData.FinishCondType3,
Param: paramList,
ComplexParam: questData.FinishCondType3ComplexParam,
Count: questData.FinishCondType3Count,
})
}
// 失败条件
questData.FailCondList = make([]*QuestCond, 0)
if questData.FailCondType1 != 0 {
paramList := make([]int32, 0)
if questData.FailCondType1Param1 != 0 {
paramList = append(paramList, questData.FailCondType1Param1)
}
questData.FailCondList = append(questData.FailCondList, &QuestCond{
Type: questData.FailCondType1,
Param: paramList,
ComplexParam: questData.FailCondType1ComplexParam,
Count: questData.FailCondType1Count,
})
}
if questData.FailCondType2 != 0 {
paramList := make([]int32, 0)
if questData.FailCondType2Param1 != 0 {
paramList = append(paramList, questData.FailCondType2Param1)
}
questData.FailCondList = append(questData.FailCondList, &QuestCond{
Type: questData.FailCondType2,
Param: paramList,
ComplexParam: questData.FailCondType2ComplexParam,
Count: questData.FailCondType2Count,
})
}
// 执行
questData.ExecList = make([]*QuestExec, 0)
if questData.ExecType1 != 0 {
paramList := make([]string, 0)
if questData.ExecType1Param1 != "" {
paramList = append(paramList, questData.ExecType1Param1)
}
if questData.ExecType1Param2 != "" {
paramList = append(paramList, questData.ExecType1Param2)
}
questData.ExecList = append(questData.ExecList, &QuestExec{
Type: questData.ExecType1,
Param: paramList,
})
}
if questData.ExecType2 != 0 {
paramList := make([]string, 0)
if questData.ExecType2Param1 != "" {
paramList = append(paramList, questData.ExecType2Param1)
}
if questData.ExecType2Param2 != "" {
paramList = append(paramList, questData.ExecType2Param2)
}
questData.ExecList = append(questData.ExecList, &QuestExec{
Type: questData.ExecType2,
Param: paramList,
})
}
if questData.ExecType3 != 0 {
paramList := make([]string, 0)
if questData.ExecType3Param1 != "" {
paramList = append(paramList, questData.ExecType3Param1)
}
if questData.ExecType3Param2 != "" {
paramList = append(paramList, questData.ExecType3Param2)
}
questData.ExecList = append(questData.ExecList, &QuestExec{
Type: questData.ExecType3,
Param: paramList,
})
}
if questData.ExecType4 != 0 {
paramList := make([]string, 0)
if questData.ExecType4Param1 != "" {
paramList = append(paramList, questData.ExecType4Param1)
}
if questData.ExecType4Param2 != "" {
paramList = append(paramList, questData.ExecType4Param2)
}
questData.ExecList = append(questData.ExecList, &QuestExec{
Type: questData.ExecType4,
Param: paramList,
})
}
// 失败执行
questData.FailExecList = make([]*QuestExec, 0)
if questData.FailExecType1 != 0 {
paramList := make([]string, 0)
if questData.FailExecType1Param1 != "" {
paramList = append(paramList, questData.FailExecType1Param1)
}
if questData.FailExecType1Param2 != "" {
paramList = append(paramList, questData.FailExecType1Param2)
}
questData.FailExecList = append(questData.FailExecList, &QuestExec{
Type: questData.FailExecType1,
Param: paramList,
})
}
if questData.FailExecType2 != 0 {
paramList := make([]string, 0)
if questData.FailExecType2Param1 != "" {
paramList = append(paramList, questData.FailExecType2Param1)
}
if questData.FailExecType2Param2 != "" {
paramList = append(paramList, questData.FailExecType2Param2)
}
questData.FailExecList = append(questData.FailExecList, &QuestExec{
Type: questData.FailExecType2,
Param: paramList,
})
}
if questData.FailExecType3 != 0 {
paramList := make([]string, 0)
if questData.FailExecType3Param1 != "" {
paramList = append(paramList, questData.FailExecType3Param1)
}
if questData.FailExecType3Param2 != "" {
paramList = append(paramList, questData.FailExecType3Param2)
}
questData.FailExecList = append(questData.FailExecList, &QuestExec{
Type: questData.FailExecType3,
Param: paramList,
})
}
// 开始执行
questData.StartExecList = make([]*QuestExec, 0)
if questData.StartExecType1 != 0 {
paramList := make([]string, 0)
if questData.StartExecType1Param1 != "" {
paramList = append(paramList, questData.StartExecType1Param1)
}
if questData.StartExecType1Param2 != "" {
paramList = append(paramList, questData.StartExecType1Param2)
}
questData.StartExecList = append(questData.StartExecList, &QuestExec{
Type: questData.StartExecType1,
Param: paramList,
})
}
if questData.StartExecType2 != 0 {
paramList := make([]string, 0)
if questData.StartExecType2Param1 != "" {
paramList = append(paramList, questData.StartExecType2Param1)
}
if questData.StartExecType2Param2 != "" {
paramList = append(paramList, questData.StartExecType2Param2)
}
questData.StartExecList = append(questData.StartExecList, &QuestExec{
Type: questData.StartExecType2,
Param: paramList,
})
}
if questData.StartExecType3 != 0 {
paramList := make([]string, 0)
if questData.StartExecType3Param1 != "" {
paramList = append(paramList, questData.StartExecType3Param1)
}
if questData.StartExecType3Param2 != "" {
paramList = append(paramList, questData.StartExecType3Param2)
}
questData.StartExecList = append(questData.StartExecList, &QuestExec{
Type: questData.StartExecType3,
Param: paramList,
})
}
g.QuestDataMap[questData.QuestId] = questData
}
}
g.ParentQuestMap = make(map[int32]map[int32]*QuestData)
for _, questData := range g.QuestDataMap {
questMap, exist := g.ParentQuestMap[questData.ParentQuestId]
if !exist {
questMap = make(map[int32]*QuestData)
g.ParentQuestMap[questData.ParentQuestId] = questMap
}
questMap[questData.QuestId] = questData
}
logger.Info("QuestData count: %v", len(g.QuestDataMap))
}
func GetQuestDataById(questId int32) *QuestData {
return CONF.QuestDataMap[questId]
}
func GetQuestDataMap() map[int32]*QuestData {
return CONF.QuestDataMap
}
func GetQuestDataMapByParentQuestId(parentQuestId int32) map[int32]*QuestData {
return CONF.ParentQuestMap[parentQuestId]
}