From c378d3d5f739e06198b53b8ba5f3d90d44b08fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Fri, 3 Apr 2026 12:18:07 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(admin):=20=E5=AE=A0=E7=89=A9?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 清理宠物控制器中的乱码字符 - 更新宠物获取请求结构体字段注释为英文描述 - 重构变量命名提高代码可读性 - 添加宠物存储信息服务方法 - 优化错误提示信息为英文 - 新增宠物等级查询接口 - 改进宠物购买逻辑验证 ``` --- logic/service/fight/effect/1392.go | 1 + logic/service/player/arena_flag.go | 59 ------------------------------ logic/service/player/player.go | 56 ++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 59 deletions(-) delete mode 100644 logic/service/player/arena_flag.go diff --git a/logic/service/fight/effect/1392.go b/logic/service/fight/effect/1392.go index c1be44b35..58eb0d0b7 100644 --- a/logic/service/fight/effect/1392.go +++ b/logic/service/fight/effect/1392.go @@ -1,6 +1,7 @@ package effect import ( + "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" ) diff --git a/logic/service/player/arena_flag.go b/logic/service/player/arena_flag.go deleted file mode 100644 index 522d127c1..000000000 --- a/logic/service/player/arena_flag.go +++ /dev/null @@ -1,59 +0,0 @@ -package player - -import "sync/atomic" - -const ( - ArenaFlagNoSwitchPet uint32 = 1 << iota - ArenaFlagNoHeal - ArenaFlagNoPVP -) - -const arenaHostFlagMask = ArenaFlagNoSwitchPet | ArenaFlagNoHeal | ArenaFlagNoPVP - -func (p *Player) addArenaFlag(mask uint32) { - for { - current := atomic.LoadUint32(&p.ArenaFlags) - next := current | mask - if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) { - return - } - } -} - -func (p *Player) clearArenaFlag(mask uint32) { - for { - current := atomic.LoadUint32(&p.ArenaFlags) - next := current &^ mask - if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) { - return - } - } -} - -func (p *Player) HasArenaFlag(mask uint32) bool { - return atomic.LoadUint32(&p.ArenaFlags)&mask != 0 -} - -func (p *Player) SetArenaHostFlags() { - p.addArenaFlag(arenaHostFlagMask) -} - -func (p *Player) ClearArenaHostFlags() { - p.clearArenaFlag(arenaHostFlagMask) -} - -func (p *Player) IsArenaHost() bool { - return p.HasArenaFlag(arenaHostFlagMask) -} - -func (p *Player) IsArenaSwitchLocked() bool { - return p.HasArenaFlag(ArenaFlagNoSwitchPet) -} - -func (p *Player) IsArenaHealLocked() bool { - return p.HasArenaFlag(ArenaFlagNoHeal) -} - -func (p *Player) IsArenaPVPLocked() bool { - return p.HasArenaFlag(ArenaFlagNoPVP) -} diff --git a/logic/service/player/player.go b/logic/service/player/player.go index ac9d8668d..d71150040 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -118,6 +118,62 @@ type Player struct { ArenaFlags uint32 } +const ( + ArenaFlagNoSwitchPet uint32 = 1 << iota + ArenaFlagNoHeal + ArenaFlagNoPVP +) + +const arenaHostFlagMask = ArenaFlagNoSwitchPet | ArenaFlagNoHeal | ArenaFlagNoPVP + +func (p *Player) addArenaFlag(mask uint32) { + for { + current := atomic.LoadUint32(&p.ArenaFlags) + next := current | mask + if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) { + return + } + } +} + +func (p *Player) clearArenaFlag(mask uint32) { + for { + current := atomic.LoadUint32(&p.ArenaFlags) + next := current &^ mask + if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) { + return + } + } +} + +func (p *Player) HasArenaFlag(mask uint32) bool { + return atomic.LoadUint32(&p.ArenaFlags)&mask != 0 +} + +func (p *Player) SetArenaHostFlags() { + p.addArenaFlag(arenaHostFlagMask) +} + +func (p *Player) ClearArenaHostFlags() { + p.clearArenaFlag(arenaHostFlagMask) +} + +func (p *Player) IsArenaHost() bool { + return p.HasArenaFlag(arenaHostFlagMask) +} + +func (p *Player) IsArenaSwitchLocked() bool { + return p.HasArenaFlag(ArenaFlagNoSwitchPet) +} + +func (p *Player) IsArenaHealLocked() bool { + return p.HasArenaFlag(ArenaFlagNoHeal) +} + +func (p *Player) IsArenaPVPLocked() bool { + return p.HasArenaFlag(ArenaFlagNoPVP) +} + type OgrePet struct { Data [9]OgrePetInfo }