任务接取、进度、完成状态

This commit is contained in:
flswld
2023-02-21 19:01:04 +08:00
parent 418655dea9
commit 7d21f24dc8
11 changed files with 746 additions and 52 deletions

View File

@@ -8,6 +8,13 @@ import (
"github.com/jszwec/csvutil"
)
type QuestCond struct {
Type int32
Param []int32
ComplexParam string
Count int32
}
// QuestData 任务配置表
type QuestData struct {
QuestId int32 `csv:"QuestId"` // ID
@@ -61,26 +68,131 @@ type QuestData struct {
FailCondType3Param2 int32 `csv:"FailCondType3Param2,omitempty"` // [失败条件]3参数2
FailCondType3ComplexParam string `csv:"FailCondType3ComplexParam,omitempty"` // [失败条件]3复杂参数
FailCondType3Count int32 `csv:"FailCondType3Count,omitempty"` // [失败条件]3次数
AcceptCondList []*QuestCond // 领取条件
FinishCondList []*QuestCond // 完成条件
FailCondList []*QuestCond // 失败条件
}
func (g *GameDataConfig) loadQuestData() {
g.QuestDataMap = make(map[int32]*QuestData)
data := g.readCsvFileData("QuestData.csv")
var questDataList []*QuestData
err := csvutil.Unmarshal(data, &questDataList)
if err != nil {
info := fmt.Sprintf("parse file error: %v", err)
panic(info)
}
for _, questData := range questDataList {
// list -> map
g.QuestDataMap[questData.QuestId] = questData
fileNameList := []string{"QuestData.csv", "QuestData_Exported.csv"}
for _, fileName := range fileNameList {
data := g.readCsvFileData(fileName)
var questDataList []*QuestData
err := csvutil.Unmarshal(data, &questDataList)
if err != nil {
info := fmt.Sprintf("parse file error: %v", err)
panic(info)
}
for _, questData := range questDataList {
// list -> map
// 领取条件
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,
})
}
// 失败条件
g.QuestDataMap[questData.QuestId] = questData
}
}
logger.Info("QuestData count: %v", len(g.QuestDataMap))
}
func GetQuestDataById(sceneId int32) *QuestData {
return CONF.QuestDataMap[sceneId]
func GetQuestDataById(questId int32) *QuestData {
return CONF.QuestDataMap[questId]
}
func GetQuestDataMap() map[int32]*QuestData {