mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 18:32:26 +08:00
79 lines
2.0 KiB
Go
79 lines
2.0 KiB
Go
package gdconf
|
|
|
|
import (
|
|
"fmt"
|
|
"hk4e/common/config"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// 游戏数据配置表
|
|
|
|
var CONF *GameDataConfig = nil
|
|
|
|
type GameDataConfig struct {
|
|
// 配置表路径前缀
|
|
csvPrefix string
|
|
jsonPrefix string
|
|
// 配置表数据
|
|
AvatarDataMap map[int32]*AvatarData // 角色
|
|
AvatarSkillDataMap map[int32]*AvatarSkillData // 角色技能
|
|
AvatarSkillDepotDataMap map[int32]*AvatarSkillDepotData // 角色技能库
|
|
}
|
|
|
|
func InitGameDataConfig() {
|
|
CONF = new(GameDataConfig)
|
|
CONF.csvPrefix = ""
|
|
CONF.loadAll()
|
|
}
|
|
|
|
func (g *GameDataConfig) loadAll() {
|
|
pathPrefix := config.CONF.Hk4e.GameDataConfigPath
|
|
|
|
dirInfo, err := os.Stat(pathPrefix)
|
|
if err != nil || !dirInfo.IsDir() {
|
|
info := fmt.Sprintf("open game data config dir error: %v", err)
|
|
panic(info)
|
|
}
|
|
|
|
g.csvPrefix = pathPrefix + "/csv"
|
|
dirInfo, err = os.Stat(g.csvPrefix)
|
|
if err != nil || !dirInfo.IsDir() {
|
|
info := fmt.Sprintf("open game data config csv dir error: %v", err)
|
|
panic(info)
|
|
}
|
|
g.csvPrefix += "/"
|
|
|
|
g.jsonPrefix = pathPrefix + "/json"
|
|
dirInfo, err = os.Stat(g.jsonPrefix)
|
|
if err != nil || !dirInfo.IsDir() {
|
|
info := fmt.Sprintf("open game data config json dir error: %v", err)
|
|
panic(info)
|
|
}
|
|
g.jsonPrefix += "/"
|
|
|
|
g.load()
|
|
}
|
|
|
|
func (g *GameDataConfig) load() {
|
|
g.loadAvatarData() // 角色
|
|
g.loadAvatarSkillData() // 角色技能
|
|
g.loadAvatarSkillDepotData() // 角色技能库
|
|
}
|
|
|
|
func (g *GameDataConfig) readCsvFileData(fileName string) []byte {
|
|
fileData, err := os.ReadFile(g.csvPrefix + fileName)
|
|
if err != nil {
|
|
info := fmt.Sprintf("open file error: %v", err)
|
|
panic(info)
|
|
}
|
|
// 去除第二三行的内容变成标准格式的csv
|
|
index1 := strings.Index(string(fileData), "\n")
|
|
index2 := strings.Index(string(fileData[(index1+1):]), "\n")
|
|
index3 := strings.Index(string(fileData[(index2+1)+(index1+1):]), "\n")
|
|
standardCsvData := make([]byte, 0)
|
|
standardCsvData = append(standardCsvData, fileData[:index1]...)
|
|
standardCsvData = append(standardCsvData, fileData[index3+(index2+1)+(index1+1):]...)
|
|
return standardCsvData
|
|
}
|