2025-06-04 05:02:57 +08:00

92 lines
2.5 KiB
Plaintext

CampHandler = class("CampHandler")
if(CampHandler.CampPriority==nil) then
--陣營獲取的優先順序,按位做,從低到高
CampHandler.CampPriority =
{
SelfTransformedAtk = {priority = 0,camp = RoleDefines_Camp.ENEMY},
OtherTransformedAtk = {priority = 1,camp = RoleDefines_Camp.ENEMY},
SameTeam = {priority = 2,camp = RoleDefines_Camp.FRIEND},
PVPScene = {priority = 3,camp = RoleDefines_Camp.ENEMY},
SameGuild = {priority = 4,camp = RoleDefines_Camp.FRIEND},
GVGScene = {priority = 5,camp = RoleDefines_Camp.ENEMY},
Normal = {priority = 6,camp = RoleDefines_Camp.FRIEND},
}
CampHandler.BitIndexs = {}
CampHandler.BitMapCamp = {}
for k,v in pairs(CampHandler.CampPriority) do
CampHandler.BitIndexs[#CampHandler.BitIndexs + 1] = v.priority
CampHandler.BitMapCamp[v.priority] = v.camp
end
table.sort(CampHandler.BitIndexs)
end
function CampHandler:ctor(defaultCamp)
self.defaultCamp = defaultCamp
self:Reset()
end
function CampHandler:SetBitValue(bit,val)
local newValue = self.value
if(val) then
newValue = BitUtil.setbit(self.value,bit)
else
newValue = BitUtil.unsetbit(self.value,bit)
end
if(newValue~=self.value) then
self.value = newValue
self.dirty = true
end
end
function CampHandler:Reset()
self.dirty = false
self.camp = self.defaultCamp ~=nil and self.defaultCamp or RoleDefines_Camp.FRIEND
self.value = 0
if(self.defaultCamp == nil) then
self:SetBitValue(CampHandler.CampPriority.Normal.priority,true)
end
end
function CampHandler:GetCamp()
if(self.dirty) then
self.dirty = false
local index
for i=1,#CampHandler.BitIndexs do
index = CampHandler.BitIndexs[i]
if(BitUtil.valid(self.value,index)) then
if(BitUtil.band(self.value,index)>0) then
self.camp = CampHandler.BitMapCamp[index]
break
end
end
end
end
return self.camp
end
function CampHandler:SetIsInPvpScene(val)
self:SetBitValue(CampHandler.CampPriority.PVPScene.priority,val)
end
function CampHandler:SetIsSelfTransformedAtk(val)
self:SetBitValue(CampHandler.CampPriority.SelfTransformedAtk.priority,val)
end
function CampHandler:SetIsOtherTransformedAtk(val)
self:SetBitValue(CampHandler.CampPriority.OtherTransformedAtk.priority,val)
end
function CampHandler:SetIsSameTeam(val)
self:SetBitValue(CampHandler.CampPriority.SameTeam.priority,val)
end
function CampHandler:SetIsSameGuild(val)
self:SetBitValue(CampHandler.CampPriority.SameGuild.priority,val)
end
function CampHandler:SetIsInGVGScene(val)
self:SetBitValue(CampHandler.CampPriority.GVGScene.priority,val)
end