fix: 修复空提交问题

This commit is contained in:
1
2025-11-19 00:09:12 +00:00
parent 24f2a6d7c8
commit 31439b707c
12 changed files with 88 additions and 98 deletions

View File

@@ -3,10 +3,8 @@ package space
import (
"blazing/common/data/xmlres"
"blazing/common/utils"
"sync/atomic"
"blazing/logic/service/common"
"blazing/logic/service/fight/info"
maps "blazing/logic/service/maps/info"
csmap "github.com/mhmtszr/concurrent-swiss-map"
@@ -21,63 +19,10 @@ type Space struct {
SuperValue *int32
//ID uint32 // 地图ID
Name string //地图名称
ARENA S2C_ARENA_GET_INFO
ARENA ARENA
ARENA_Player common.PlayerI
}
func (s *Space) Can_ARENA(tt func(c common.PlayerI) common.PlayerI) {
//原子操作,修改擂台状态
if atomic.CompareAndSwapUint32(&s.ARENA.Flag, 1, 2) {
r := tt(s.ARENA_Player)
if r != nil {
atomic.SwapUint32(&s.ARENA.ChallengerID, r.GetInfo().UserID) //传回的指针赋值给ID
}
}
}
// flag 0 取消 1为加入 2为替换挑战方
func (s *Space) UP_ARENA(c common.PlayerI, FLAG uint32) {
switch FLAG {
case 0:
if s.ARENA.Id != c.GetInfo().UserID { //说明不是自己退出
return
}
s.ARENA = info.S2C_ARENA_GET_INFO{}
s.ARENA_Player = nil
case 1:
if s.ARENA.Id != 0 { //说明已经有人了
return
}
s.ARENA.Flag = 1
s.ARENA.Id = c.GetInfo().UserID //添加用户ID
s.ARENA.Nick = c.GetInfo().Nick
s.ARENA_Player = c //添加用户
case 2: //胜利替换
if s.ARENA.Flag != 2 { //说明没进入挑战
return
}
if s.ARENA.Id != c.GetInfo().UserID && c.GetInfo().UserID != s.ARENA.ChallengerID { //说明已经有人了
return
}
if c.GetInfo().UserID == s.ARENA.Id {
s.ARENA.HostWins += 1 //连胜+1
}
s.ARENA.Flag = 1
s.ARENA.Id = c.GetInfo().UserID //添加用户ID
s.ARENA.Nick = c.GetInfo().Nick
s.ARENA_Player = c //添加用户
}
s.Broadcast(c, 2419, s.ARENA)
}
// NewSyncMap 创建一个新的玩家同步map
func NewSpace() *Space {