diff --git a/logic/controller/controller.go b/logic/controller/controller.go index 5ba609ce..1d6c505b 100644 --- a/logic/controller/controller.go +++ b/logic/controller/controller.go @@ -162,10 +162,7 @@ func Recv(c gnet.Conn, data player.TomeeHeader) { if cmdlister.Type().In(1) == reflect.TypeOf(&player.Player{}) { t := player.GetPlayer(c, data.UserID) // fmt.Println(data.CMD, "接收 变量的地址 ", &t.Info, t.Info.UserID) - err := t.WaitForLoginWithCtx(context.Background()) - if err != nil { - fmt.Println("登录失败") - } + params = append(params, ptrValue1, reflect.ValueOf(t)) } else { diff --git a/logic/service/player/new.go b/logic/service/player/new.go index aa809384..8b58b665 100644 --- a/logic/service/player/new.go +++ b/logic/service/player/new.go @@ -9,7 +9,7 @@ import ( // NewPlayer 使用 Options 模式创建 Player 实例 func NewPlayer(opts ...PlayerOption) *Player { p := &Player{ - loginChan: make(chan struct{}), + HavePVPinfo: make([]*Player, 0), baseplayer: newbaseplayer(), } diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 0e0fcfcb..40d7645f 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -15,7 +15,6 @@ import ( "blazing/modules/blazing/model" blservice "blazing/modules/blazing/service" "context" - "fmt" "sync" "time" @@ -74,9 +73,6 @@ type Player struct { MainConn gnet.Conn baseplayer IsLogin bool //是否登录 - mu sync.Mutex - - loginChan chan struct{} // 登录完成通知通道 StopChan timer.TimeNoder @@ -311,60 +307,9 @@ func (p *Player) CanGetExp() bool { return (uint32(time.Now().Unix()) - uint32(p.Onlinetime)) <= ttt } -// IsLoggedIn 检查是否已登录 -func (lw *Player) IsLoggedIn() bool { - lw.mu.Lock() - defer lw.mu.Unlock() - return lw.IsLogin -} - -// WaitForLogin 等待登录完成,无超时 -func (lw *Player) WaitForLogin() error { - if lw.IsLoggedIn() { - return nil - } - - // 阻塞等待登录完成 - <-lw.loginChan - return nil -} - -// WaitForLoginWithTimeout 带超时的登录等待 -func (lw *Player) WaitForLoginWithTimeout(timeout time.Duration) error { - if lw.IsLoggedIn() { - return nil - } - - // 使用定时器实现超时 - timer := time.NewTimer(timeout) - defer timer.Stop() - - select { - case <-lw.loginChan: - return nil - case <-timer.C: - return fmt.Errorf("登录等待超时: %v", timeout) - } -} - -// WaitForLoginWithCtx 带上下文的登录等待 -func (lw *Player) WaitForLoginWithCtx(ctx context.Context) error { - if lw.IsLoggedIn() { - return nil - } - - select { - case <-lw.loginChan: - return nil - case <-ctx.Done(): - return ctx.Err() // 上下文取消或超时 - } -} - // CompleteLogin 标记登录完成并通知等待者 func (lw *Player) CompleteLogin() { - lw.mu.Lock() - defer lw.mu.Unlock() + if lw.Info.MapID > 10000 || lw.Info.MapID == 0 { //如果位于基地,就重置到传送仓 lw.Info.MapID = 1 @@ -372,10 +317,7 @@ func (lw *Player) CompleteLogin() { if lw.IsNewPlayer() { //重置新手地图 lw.Info.MapID = 515 } - if !lw.IsLogin { - lw.IsLogin = true - close(lw.loginChan) // 关闭通道以通知所有等待者 - } + lw.IsLogin = true } // 定义检查函数:判断84-87索引中是否有任意一个元素不等于3