2025-09-26 18:39:59 +00:00
|
|
|
package player
|
|
|
|
|
|
|
|
|
|
import (
|
2025-11-19 16:11:02 +08:00
|
|
|
"blazing/common/socket/errorcode"
|
2025-09-26 18:39:59 +00:00
|
|
|
"blazing/logic/service/common"
|
|
|
|
|
"blazing/logic/service/fight/info"
|
2025-11-21 02:40:27 +08:00
|
|
|
"sync/atomic"
|
2025-09-26 18:39:59 +00:00
|
|
|
)
|
|
|
|
|
|
2025-12-24 19:03:11 +08:00
|
|
|
// JoinFight 加入战斗队列
|
|
|
|
|
func (p *Player) JoinFight(handler func(p common.PlayerI) bool) errorcode.ErrorCode {
|
2025-11-21 02:40:27 +08:00
|
|
|
//加入队列前就开始判断一次
|
2025-11-20 05:57:29 +08:00
|
|
|
if !p.CanFight() {
|
|
|
|
|
return errorcode.ErrorCodes.ErrNoEligiblePokemon
|
|
|
|
|
}
|
2025-11-21 02:40:27 +08:00
|
|
|
if p.GetSpace().Owner.UserID == p.Info.UserID {
|
|
|
|
|
return errorcode.ErrorCodes.ErrSystemError
|
|
|
|
|
}
|
2025-09-26 18:39:59 +00:00
|
|
|
|
2025-12-24 19:03:11 +08:00
|
|
|
p.GetSpace().User.Range(func(key uint32, opponent common.PlayerI) bool {
|
|
|
|
|
if opponent.GetInfo().UserID != p.Info.UserID {
|
2025-11-15 01:53:51 +08:00
|
|
|
//确认是乱斗模式
|
2025-12-24 19:03:11 +08:00
|
|
|
if opponent.Getfightinfo() == p.Getfightinfo() && p.CanFight() {
|
|
|
|
|
success := handler(opponent)
|
|
|
|
|
if success {
|
|
|
|
|
atomic.StoreUint32(&opponent.(*Player).Fightinfo.Mode, 0)
|
2025-11-21 02:40:27 +08:00
|
|
|
atomic.StoreUint32(&p.Fightinfo.Mode, 0)
|
2025-11-20 05:57:29 +08:00
|
|
|
}
|
2025-12-24 19:03:11 +08:00
|
|
|
return success //如果发起成功就停止,否则继续遍历队列
|
2025-11-15 01:53:51 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-11-15 15:22:58 +08:00
|
|
|
return false
|
2025-11-15 01:53:51 +08:00
|
|
|
})
|
2025-11-20 05:57:29 +08:00
|
|
|
return 0
|
2025-09-26 18:39:59 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-24 19:03:11 +08:00
|
|
|
// SendLoadPercent 发送加载进度
|
|
|
|
|
func (p *Player) SendLoadPercent(loadInfo info.LoadPercentOutboundInfo) {
|
|
|
|
|
p.SendPack(common.NewTomeeHeader(2441, p.Info.UserID).Pack(&loadInfo))
|
2025-09-26 18:39:59 +00:00
|
|
|
}
|