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 }