Files
bl/logic/controller/fight_pvp_king.go
昔念 f90581e0f6 ```
feat(fight): 优化擂台战斗逻辑与状态管理

- 修改了擂台主人设置逻辑,引入 `Set` 方法统一处理玩家信息更新
- 增加对擂主是否可战斗的判断,防止无效挑战
- 调整连胜计算和广播机制,确保数据一致性
- 修复擂台挑战失败时的状态回滚问题
- 引入错误码替代硬编码返回值,提高代码可读性与维护性
- 统一访问擂台玩家的方式,移除冗余字段
2025-11-28 00:16:51 +08:00

72 lines
1.6 KiB
Go

package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/common"
"blazing/logic/service/fight"
"blazing/logic/service/fight/info"
"blazing/logic/service/player"
)
//大乱斗
func (h Controller) PET_MELEE(data *fight.StartPetWarInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
c.Fightinfo.Mode = info.BattleMode.PET_MELEE
c.Fightinfo.Status = info.BattleMode.PET_MELEE
err = c.JoinFight(func(p common.PlayerI) bool {
_, err = fight.NewFight(p, c, func(foi *info.FightOverInfo) {
if foi.Reason == 0 { //我放获胜
if foi.WinnerId == c.GetInfo().UserID {
c.Info.MessWin += 1
} else {
p.GetInfo().MessWin += 1
}
}
}) ///开始对战,房主方以及被邀请方
if err > 0 { //说明有报错
return false
}
return true
})
return
}
func (h Controller) PET_King(data *fight.PetKingJoinInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
c.Fightinfo.Status = info.BattleMode.PET_TOPLEVEL
switch data.Type {
case 5:
c.Fightinfo.Mode = info.BattleMode.SINGLE_MODE
case 6:
c.Fightinfo.Mode = info.BattleMode.MULTI_MODE
}
err = c.JoinFight(func(p common.PlayerI) bool {
_, err = fight.NewFight(p, c, func(foi *info.FightOverInfo) {
if foi.Reason == 0 { //我放获胜
if foi.WinnerId == c.GetInfo().UserID {
c.Info.MonKingWin += 1
} else {
p.GetInfo().MonKingWin += 1
}
}
}) ///开始对战,房主方以及被邀请方
if err > 0 { //说明有报错
return false
}
return true
})
return
}