package xmlres

import "github.com/ECUST-XX/xml"

// Move 表示怪物可学习的技能
type PetMoves struct {
	ID         uint32 `xml:"ID,attr"`
	LearningLv uint32 `xml:"LearningLv,attr"`
}

// LearnableMoves 包含怪物可学习的技能列表
type LearnableMoves struct {
	Moves []PetMoves `xml:"Move"`
}

// PetInfo 表示一个怪物的信息
type PetInfo struct {
	ID                 int            `xml:"ID,attr"`
	DefName            string         `xml:"DefName,attr"`            // 名字
	Type               int            `xml:"Type,attr"`               // 类型
	IsLarge            int            `xml:"IsLarge,attr"`            // 是否为大型怪物
	GrowthType         int            `xml:"GrowthType,attr"`         // 成长类型
	HP                 int            `xml:"HP,attr"`                 // 血量种族值
	Atk                uint32         `xml:"Atk,attr"`                // 攻击种族值
	Def                uint32         `xml:"Def,attr"`                // 防御种族值
	SpAtk              uint32         `xml:"SpAtk,attr"`              // 特殊攻击种族值
	SpDef              uint32         `xml:"SpDef,attr"`              // 特殊防御种族值
	Spd                uint32         `xml:"Spd,attr"`                // 速度种族值
	YieldingExp        int            `xml:"YieldingExp,attr"`        // 击败后获得的经验值
	CatchRate          int            `xml:"CatchRate,attr"`          // 捕捉率
	YieldingEV         string         `xml:"YieldingEV,attr"`         // 努力值奖励，格式为"HP Atk Def SpAtk SpDef Spd"
	EvolvesFrom        int            `xml:"EvolvesFrom,attr"`        // 进化前的怪物ID
	EvolvesTo          uint32         `xml:"EvolvesTo,attr"`          // 进化后的怪物ID
	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"`             // 性别 0-无性别 1-雄性 2-雌性
	PetClass           int            `xml:"PetClass,attr"`           // 宠物类别
	FormParam          float64        `xml:"FormParam,attr"`          // 形态参数
	CharacterAttrParam int            `xml:"CharacterAttrParam,attr"` // 特性参数
	GradeParam         int            `xml:"GradeParam,attr"`         // 等级参数
	AddSeParam         int            `xml:"AddSeParam,attr"`         // 附加状态参数
	Recycle            int            `xml:"Recycle,attr"`            // 是否可回收
	LearnableMoves     LearnableMoves `xml:"LearnableMoves"`          // 可学习的技能
}

// Monsters 表示所有怪物的集合
type Monsters struct {
	XMLName  xml.Name  `xml:"Monsters"`
	Monsters []PetInfo `xml:"Monster"`
}
