mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 14:22:26 +08:00
角色突破功能
This commit is contained in:
@@ -25,6 +25,7 @@ type AvatarData struct {
|
||||
InitialWeapon int32 `csv:"InitialWeapon,omitempty"` // 初始武器
|
||||
WeaponType int32 `csv:"WeaponType,omitempty"` // 武器种类
|
||||
SkillDepotId int32 `csv:"SkillDepotId,omitempty"` // 技能库ID
|
||||
PromoteId int32 `csv:"PromoteId,omitempty"` // 角色突破ID
|
||||
|
||||
AbilityHashCodeList []int32
|
||||
}
|
||||
|
||||
@@ -10,13 +10,23 @@ import (
|
||||
// 角色突破配置表
|
||||
|
||||
type AvatarPromoteData struct {
|
||||
PromoteId int32 `csv:"PromoteId"` // 角色突破ID
|
||||
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
||||
LevelLimit int32 `csv:"LevelLimit,omitempty"` // 解锁等级上限
|
||||
PromoteId int32 `csv:"PromoteId"` // 角色突破ID
|
||||
PromoteLevel int32 `csv:"PromoteLevel,omitempty"` // 突破等级
|
||||
CostCoin int32 `csv:"CostCoin,omitempty"` // 消耗金币
|
||||
CostItemId1 int32 `csv:"CostItemId1,omitempty"` // [消耗物品]1ID
|
||||
CostItemCount1 int32 `csv:"CostItemCount1,omitempty"` // [消耗物品]1数量
|
||||
CostItemId2 int32 `csv:"CostItemId2,omitempty"` // [消耗物品]2ID
|
||||
CostItemCount2 int32 `csv:"CostItemCount2,omitempty"` // [消耗物品]2数量
|
||||
CostItemId3 int32 `csv:"CostItemId3,omitempty"` // [消耗物品]3ID
|
||||
CostItemCount3 int32 `csv:"CostItemCount3,omitempty"` // [消耗物品]3数量
|
||||
LevelLimit int32 `csv:"LevelLimit,omitempty"` // 解锁等级上限
|
||||
MinPlayerLevel int32 `csv:"MinPlayerLevel,omitempty"` // 冒险等级要求
|
||||
|
||||
CostItemMap map[uint32]uint32 // 消耗物品列表
|
||||
}
|
||||
|
||||
func (g *GameDataConfig) loadAvatarPromoteData() {
|
||||
g.AvatarPromoteDataMap = make(map[int32]*AvatarPromoteData)
|
||||
g.AvatarPromoteDataMap = make(map[int32]map[int32]*AvatarPromoteData)
|
||||
data := g.readCsvFileData("AvatarPromoteData.csv")
|
||||
var avatarPromoteDataList []*AvatarPromoteData
|
||||
err := csvutil.Unmarshal(data, &avatarPromoteDataList)
|
||||
@@ -26,7 +36,22 @@ func (g *GameDataConfig) loadAvatarPromoteData() {
|
||||
}
|
||||
for _, avatarPromoteData := range avatarPromoteDataList {
|
||||
// list -> map
|
||||
g.AvatarPromoteDataMap[avatarPromoteData.PromoteLevel] = avatarPromoteData
|
||||
_, ok := g.AvatarPromoteDataMap[avatarPromoteData.PromoteId]
|
||||
if !ok {
|
||||
g.AvatarPromoteDataMap[avatarPromoteData.PromoteId] = make(map[int32]*AvatarPromoteData)
|
||||
}
|
||||
avatarPromoteData.CostItemMap = make(map[uint32]uint32, 3)
|
||||
avatarPromoteData.CostItemMap[uint32(avatarPromoteData.CostItemId1)] = uint32(avatarPromoteData.CostItemCount1)
|
||||
avatarPromoteData.CostItemMap[uint32(avatarPromoteData.CostItemId2)] = uint32(avatarPromoteData.CostItemCount2)
|
||||
avatarPromoteData.CostItemMap[uint32(avatarPromoteData.CostItemId3)] = uint32(avatarPromoteData.CostItemCount3)
|
||||
for itemId, count := range avatarPromoteData.CostItemMap {
|
||||
// 两个值都不能为0
|
||||
if itemId == 0 || count == 0 {
|
||||
delete(avatarPromoteData.CostItemMap, itemId)
|
||||
}
|
||||
}
|
||||
// 通过突破等级找到突破数据
|
||||
g.AvatarPromoteDataMap[avatarPromoteData.PromoteId][avatarPromoteData.PromoteLevel] = avatarPromoteData
|
||||
}
|
||||
logger.Info("AvatarPromoteData count: %v", len(g.AvatarPromoteDataMap))
|
||||
}
|
||||
|
||||
@@ -24,24 +24,25 @@ type GameDataConfig struct {
|
||||
jsonPrefix string
|
||||
luaPrefix string
|
||||
// 配置表数据
|
||||
AvatarDataMap map[int32]*AvatarData // 角色
|
||||
AvatarSkillDataMap map[int32]*AvatarSkillData // 角色技能
|
||||
AvatarSkillDepotDataMap map[int32]*AvatarSkillDepotData // 角色技能库
|
||||
DropGroupDataMap map[int32]*DropGroupData // 掉落组
|
||||
GCGCharDataMap map[int32]*GCGCharData // 角色卡牌
|
||||
GCGSkillDataMap map[int32]*GCGSkillData // 卡牌技能
|
||||
SceneDataMap map[int32]*SceneData // 场景
|
||||
ScenePointMap map[int32]*ScenePoint // 场景传送点
|
||||
SceneTagDataMap map[int32]*SceneTagData // 场景地图图标
|
||||
SceneMap map[int32]*Scene // 场景详情
|
||||
WorldAreaDataMap map[int32]*WorldAreaData // 世界区域
|
||||
GatherDataMap map[int32]*GatherData // 采集物
|
||||
GatherDataPointTypeMap map[int32]*GatherData // 采集物场景节点索引
|
||||
FetterDataMap map[int32]*FetterData // 角色资料解锁
|
||||
FetterDataAvatarIdMap map[int32][]int32 // 角色资料解锁角色id索引
|
||||
ItemDataMap map[int32]*ItemData // 统一道具
|
||||
AvatarLevelDataMap map[int32]*AvatarLevelData // 角色等级
|
||||
AvatarPromoteDataMap map[int32]*AvatarPromoteData // 角色突破
|
||||
AvatarDataMap map[int32]*AvatarData // 角色
|
||||
AvatarSkillDataMap map[int32]*AvatarSkillData // 角色技能
|
||||
AvatarSkillDepotDataMap map[int32]*AvatarSkillDepotData // 角色技能库
|
||||
DropGroupDataMap map[int32]*DropGroupData // 掉落组
|
||||
GCGCharDataMap map[int32]*GCGCharData // 角色卡牌
|
||||
GCGSkillDataMap map[int32]*GCGSkillData // 卡牌技能
|
||||
SceneDataMap map[int32]*SceneData // 场景
|
||||
ScenePointMap map[int32]*ScenePoint // 场景传送点
|
||||
SceneTagDataMap map[int32]*SceneTagData // 场景地图图标
|
||||
SceneMap map[int32]*Scene // 场景详情
|
||||
WorldAreaDataMap map[int32]*WorldAreaData // 世界区域
|
||||
GatherDataMap map[int32]*GatherData // 采集物
|
||||
GatherDataPointTypeMap map[int32]*GatherData // 采集物场景节点索引
|
||||
FetterDataMap map[int32]*FetterData // 角色资料解锁
|
||||
FetterDataAvatarIdMap map[int32][]int32 // 角色资料解锁角色id索引
|
||||
ItemDataMap map[int32]*ItemData // 统一道具
|
||||
AvatarLevelDataMap map[int32]*AvatarLevelData // 角色等级
|
||||
AvatarPromoteDataMap map[int32]map[int32]*AvatarPromoteData // 角色突破
|
||||
PlayerLevelDataMap map[int32]*PlayerLevelData // 玩家等级
|
||||
}
|
||||
|
||||
func InitGameDataConfig() {
|
||||
@@ -117,6 +118,7 @@ func (g *GameDataConfig) load() {
|
||||
g.loadItemData() // 统一道具
|
||||
g.loadAvatarLevelData() // 角色等级
|
||||
g.loadAvatarPromoteData() // 角色突破
|
||||
g.loadPlayerLevelData() // 玩家等级
|
||||
}
|
||||
|
||||
func (g *GameDataConfig) readCsvFileData(fileName string) []byte {
|
||||
|
||||
31
gdconf/player_level_data.go
Normal file
31
gdconf/player_level_data.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package gdconf
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"hk4e/pkg/logger"
|
||||
|
||||
"github.com/jszwec/csvutil"
|
||||
)
|
||||
|
||||
// 玩家等级配置表
|
||||
|
||||
type PlayerLevelData struct {
|
||||
Level int32 `csv:"Level"` // 等级
|
||||
Exp int32 `csv:"Exp,omitempty"` // 升到下一级所需经验
|
||||
}
|
||||
|
||||
func (g *GameDataConfig) loadPlayerLevelData() {
|
||||
g.PlayerLevelDataMap = make(map[int32]*PlayerLevelData)
|
||||
data := g.readCsvFileData("PlayerLevelData.csv")
|
||||
var playerLevelDataList []*PlayerLevelData
|
||||
err := csvutil.Unmarshal(data, &playerLevelDataList)
|
||||
if err != nil {
|
||||
info := fmt.Sprintf("parse file error: %v", err)
|
||||
panic(info)
|
||||
}
|
||||
for _, playerLevelData := range playerLevelDataList {
|
||||
// list -> map
|
||||
g.PlayerLevelDataMap[playerLevelData.Level] = playerLevelData
|
||||
}
|
||||
logger.Info("PlayerLevelData count: %v", len(g.PlayerLevelDataMap))
|
||||
}
|
||||
@@ -56,6 +56,11 @@
|
||||
"field_name": "SkillDepotId",
|
||||
"field_type": "int32",
|
||||
"origin_name": "技能库ID"
|
||||
},
|
||||
{
|
||||
"field_name": "PromoteId",
|
||||
"field_type": "int32",
|
||||
"origin_name": "角色突破ID"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -622,10 +627,75 @@
|
||||
"field_type": "int32",
|
||||
"origin_name": "突破等级"
|
||||
},
|
||||
{
|
||||
"field_name": "CostCoin",
|
||||
"field_type": "int32",
|
||||
"origin_name": "消耗金币"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemId1",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]1ID"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemCount1",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]1数量"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemId2",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]2ID"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemCount2",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]2数量"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemId3",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]3ID"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemCount3",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]3数量"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemId4",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]4ID"
|
||||
},
|
||||
{
|
||||
"field_name": "CostItemCount4",
|
||||
"field_type": "int32",
|
||||
"origin_name": "[消耗物品]4数量"
|
||||
},
|
||||
{
|
||||
"field_name": "LevelLimit",
|
||||
"field_type": "int32",
|
||||
"origin_name": "解锁等级上限"
|
||||
},
|
||||
{
|
||||
"field_name": "MinPlayerLevel",
|
||||
"field_type": "int32",
|
||||
"origin_name": "冒险等级要求"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"table_name": "PlayerLevelData",
|
||||
"field_list": [
|
||||
{
|
||||
"field_name": "Level",
|
||||
"field_type": "int32",
|
||||
"origin_name": "等级"
|
||||
},
|
||||
{
|
||||
"field_name": "Exp",
|
||||
"field_type": "int32",
|
||||
"origin_name": "升到下一级所需经验"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user