- 新增 AI_player 结构体和相关方法,用于创建和管理 AI 玩家 - 重构 FightC 结构体,增加 Input 结构体用于封装玩家输入 - 优化战斗流程,包括回合处理、技能使用、伤害计算等 - 改进广播机制,使用函数回调替代直接调用方法 - 优化玩家和 AI 的动作处理逻辑
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"blazing/logic/service/fight/info"
|
|
"blazing/modules/blazing/model"
|
|
"fmt"
|
|
)
|
|
|
|
type AI_player struct {
|
|
FightC *FightC //绑定战斗标识 替代本身的是否战斗标记 //IsFighting bool
|
|
petinfo []model.PetInfo //精灵信息
|
|
|
|
}
|
|
|
|
func NewAI_player(m model.PetInfo) *AI_player {
|
|
ret := &AI_player{}
|
|
ret.petinfo = make([]model.PetInfo, 0)
|
|
ret.petinfo = append(ret.petinfo, m)
|
|
return ret
|
|
|
|
}
|
|
func (f *AI_player) SetFightC(ff *FightC) {
|
|
f.FightC = ff
|
|
}
|
|
|
|
func (f *AI_player) ID() uint32 {
|
|
return 0
|
|
}
|
|
|
|
func (f *AI_player) MapID() uint32 {
|
|
panic("not implemented") // TODO: Implement
|
|
}
|
|
|
|
// func (f *AI_player) GetInfo() model.PlayerInfo {
|
|
// return f.FightC.Opp.
|
|
|
|
// }
|
|
|
|
func (f *AI_player) SendPack(b []byte) error {
|
|
panic("not implemented") // TODO: Implement
|
|
}
|
|
|
|
func (f *AI_player) SendReadyToFightInfo(gg info.FightStartOutboundInfo) {
|
|
|
|
fmt.Println(gg)
|
|
// f.FightC.UseSkill(f, f.fightinfo.OpponentPetList[0].SkillList[0].ID) //使用1#技能,实际上要按照四个技能权重去使用
|
|
//这时候给个出招
|
|
}
|
|
|
|
func (f *AI_player) SendNoteReadyToFightInfo(fs info.NoteReadyToFightInfo) {
|
|
fmt.Println(fs)
|
|
}
|
|
|
|
func (f *AI_player) SendFightEndInfo(_ info.FightOverInfo) {
|
|
//fmt.Println("战斗结束")
|
|
|
|
}
|
|
func (f *AI_player) GetAction() {
|
|
f.FightC.UseSkill(f, int32(f.FightC.Opp.CurrentPet.Skills[0].ID)) //使用1#技能,实际上要按照四个技能权重去使用
|
|
}
|
|
func (p *AI_player) End() {
|
|
p.FightC = nil
|
|
|
|
return
|
|
}
|
|
|
|
func (p *AI_player) GetPetInfo() []model.PetInfo {
|
|
|
|
return p.petinfo
|
|
}
|
|
func (p *AI_player) SendAttackValue(info.AttackValueS) {
|
|
|
|
}
|
|
func (p *AI_player) SendChangePet(info.ChangePetInfo) {
|
|
|
|
}
|