mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 16:02:26 +08:00
86 lines
2.7 KiB
Go
86 lines
2.7 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
|
|
"hk4e/common/constant"
|
|
"hk4e/pkg/endec"
|
|
"hk4e/pkg/logger"
|
|
)
|
|
|
|
type InherentProudSkillOpens struct {
|
|
ProudSkillGroupId int32 `json:"proudSkillGroupId"`
|
|
NeedAvatarPromoteLevel int32 `json:"needAvatarPromoteLevel"`
|
|
}
|
|
|
|
type AvatarSkillDepotData struct {
|
|
Id int32 `json:"id"`
|
|
EnergySkill int32 `json:"energySkill"`
|
|
AttackModeSkill int32 `json:"attackModeSkill"`
|
|
|
|
Skills []int32 `json:"skills"`
|
|
SubSkills []int32 `json:"subSkills"`
|
|
ExtraAbilities []string `json:"extraAbilities"`
|
|
Talents []int32 `json:"talents"`
|
|
InherentProudSkillOpens []*InherentProudSkillOpens `json:"inherentProudSkillOpens"`
|
|
TalentStarName string `json:"talentStarName"`
|
|
SkillDepotAbilityGroup string `json:"skillDepotAbilityGroup"`
|
|
|
|
// 计算属性
|
|
EnergySkillData *AvatarSkillData `json:"-"`
|
|
ElementType *constant.ElementTypeValue `json:"-"`
|
|
Abilities []int32 `json:"-"`
|
|
}
|
|
|
|
func (g *GameDataConfig) loadAvatarSkillDepotData() {
|
|
g.AvatarSkillDepotDataMap = make(map[int32]*AvatarSkillDepotData)
|
|
fileNameList := []string{"AvatarSkillDepotExcelConfigData.json"}
|
|
for _, fileName := range fileNameList {
|
|
fileData, err := os.ReadFile(g.excelBinPrefix + fileName)
|
|
if err != nil {
|
|
logger.Error("open file error: %v", err)
|
|
continue
|
|
}
|
|
list := make([]map[string]any, 0)
|
|
err = json.Unmarshal(fileData, &list)
|
|
if err != nil {
|
|
logger.Error("parse file error: %v", err)
|
|
continue
|
|
}
|
|
for _, v := range list {
|
|
i, err := json.Marshal(v)
|
|
if err != nil {
|
|
logger.Error("parse file error: %v", err)
|
|
continue
|
|
}
|
|
avatarSkillDepotData := new(AvatarSkillDepotData)
|
|
err = json.Unmarshal(i, avatarSkillDepotData)
|
|
if err != nil {
|
|
logger.Error("parse file error: %v", err)
|
|
continue
|
|
}
|
|
g.AvatarSkillDepotDataMap[avatarSkillDepotData.Id] = avatarSkillDepotData
|
|
}
|
|
}
|
|
logger.Info("load %v AvatarSkillDepotData", len(g.AvatarSkillDepotDataMap))
|
|
for _, v := range g.AvatarSkillDepotDataMap {
|
|
// set energy skill data
|
|
v.EnergySkillData = g.AvatarSkillDataMap[v.EnergySkill]
|
|
if v.EnergySkillData != nil {
|
|
v.ElementType = v.EnergySkillData.CostElemTypeX
|
|
} else {
|
|
v.ElementType = constant.ElementTypeConst.None
|
|
}
|
|
// set embryo abilities if player skill depot
|
|
if v.SkillDepotAbilityGroup != "" {
|
|
config := g.GameDepot.PlayerAbilities[v.SkillDepotAbilityGroup]
|
|
if config != nil {
|
|
for _, targetAbility := range config.TargetAbilities {
|
|
v.Abilities = append(v.Abilities, endec.Hk4eAbilityHashCode(targetAbility.AbilityName))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|