feat(pet): 新增宠物功能和相关数据结构

- 新增宠物配置和自然属性配置的 XML 解析
- 实现宠物信息生成和属性计算逻辑
- 添加宠物数据库模型和相关服务
- 更新登录和任务完成逻辑,支持宠物相关操作
This commit is contained in:
2025-08-31 00:27:07 +08:00
parent 75e428f62e
commit 3668f3c5b9
11 changed files with 307 additions and 28 deletions

View File

@@ -30,7 +30,9 @@ var (
//Monster MonsterRoot //野怪配置
MonsterMap map[int]TMapConfig
//Skill MovesTbl //技能配置
SkillMap map[int]Move
SkillMap map[int]Move
PetMAP map[int]PetMM //宠物配置
NatureRootMap map[int]NatureItem
)
func initfile() {
@@ -51,7 +53,17 @@ func initfile() {
return m.ID
})
pet := getXml[Monsters](path + "226.xml")
PetMAP = utils.ToMap[PetMM, int](pet.Monsters, func(m PetMM) int {
return m.ID
})
NatureRootMap1 := getXml[NatureRoot](path + "nature.xml")
NatureRootMap = utils.ToMap[NatureItem, int](NatureRootMap1.Items, func(m NatureItem) int {
return m.ID
})
}
func init() {

View File

@@ -0,0 +1,21 @@
package xmlres
import "github.com/ECUST-XX/xml"
// NatureItem 表示单个性格修正项
type NatureItem struct {
ID int `xml:"id,attr"`
Name string `xml:"name,attr"`
AttackCorrect float64 `xml:"m_attack,attr"` // 攻击修正
DefenseCorrect float64 `xml:"m_defence,attr"` // 防御修正
SaCorrect float64 `xml:"m_SA,attr"` // 特攻修正
SdCorrect float64 `xml:"m_SD,attr"` // 特防修正
SpeedCorrect float64 `xml:"m_speed,attr"` // 速度修正
Desc string `xml:"desc,attr"` // 描述
}
// NatureRoot 表示XML根节点
type NatureRoot struct {
XMLName xml.Name `xml:"root"`
Items []NatureItem `xml:"item"`
}

50
common/data/xmlres/pet.go Normal file
View File

@@ -0,0 +1,50 @@
package xmlres
import "github.com/ECUST-XX/xml"
// Move 表示怪物可学习的技能
type PetMoves struct {
ID int `xml:"ID,attr"`
LearningLv int `xml:"LearningLv,attr"`
}
// LearnableMoves 包含怪物可学习的技能列表
type LearnableMoves struct {
Moves []PetMoves `xml:"Move"`
}
// PetMM 表示一个怪物的信息
type PetMM struct {
ID int `xml:"ID,attr"`
DefName string `xml:"DefName,attr"`
Type int `xml:"Type,attr"`
GrowthType int `xml:"GrowthType,attr"`
HP int `xml:"HP,attr"`
Atk int `xml:"Atk,attr"`
Def int `xml:"Def,attr"`
SpAtk int `xml:"SpAtk,attr"`
SpDef int `xml:"SpDef,attr"`
Spd int `xml:"Spd,attr"`
YieldingExp int `xml:"YieldingExp,attr"`
CatchRate string `xml:"CatchRate,attr"`
YieldingEV string `xml:"YieldingEV,attr"`
EvolvesFrom int `xml:"EvolvesFrom,attr"`
EvolvesTo int `xml:"EvolvesTo,attr"`
EvolvingLv int `xml:"EvolvingLv,attr"`
FreeForbidden int `xml:"FreeForbidden,attr"`
FuseMaster int `xml:"FuseMaster,attr"`
FuseSub int `xml:"FuseSub,attr"`
Gender int `xml:"Gender,attr"`
PetClass int `xml:"PetClass,attr"`
FormParam float64 `xml:"FormParam,attr"`
CharacterAttrParam int `xml:"CharacterAttrParam,attr"`
GradeParam float64 `xml:"GradeParam,attr"`
AddSeParam int `xml:"AddSeParam,attr"`
LearnableMoves LearnableMoves `xml:"LearnableMoves"`
}
// Monsters 表示所有怪物的集合
type Monsters struct {
XMLName xml.Name `xml:"Monsters"`
Monsters []PetMM `xml:"Monster"`
}