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

71 lines
2.1 KiB
Plaintext

FunctionPlayerDistance = class("FunctionPlayerDistance")
-- FunctionPlayerDistance.AreaRange = GameConfig.Optimized.Shieldingrange
FunctionPlayerDistance.CreatureType = {
SceneUser = 1,
SceneNpc = 2,
}
function FunctionPlayerDistance.Me()
if nil == FunctionPlayerDistance.me then
FunctionPlayerDistance.me = FunctionPlayerDistance.new()
end
return FunctionPlayerDistance.me
end
function FunctionPlayerDistance:ctor()
self.reason = PUIVisibleReason.OutOfMyRange
self.flag = FunctionPlayerDistance.CreatureType.SceneUser
end
function FunctionPlayerDistance:Launch()
if self.timeTick == nil then
self.timeTick = TimeTickManager.Me():CreateTick(0,500,self.SelfUpdate,self)
end
end
function FunctionPlayerDistance:SelfUpdate(deltaTime)
if Game.Myself ~= nil and Game.Myself.assetRole ~= nil and Game.Myself.data ~= nil then
self:Update(deltaTime)
end
end
function FunctionPlayerDistance:Update(deltaTime)
local maskRange = Game.MapManager:GetCreatureMaskRange()
if maskRange == 0 then
return
end
local pos = Game.Myself:GetPosition()
local roles
if self.flag == FunctionPlayerDistance.CreatureType.SceneUser then
roles = NSceneUserProxy.Instance:GetAll()
self.flag = FunctionPlayerDistance.CreatureType.SceneNpc
elseif self.flag == FunctionPlayerDistance.CreatureType.SceneNpc then
roles = NSceneNpcProxy.Instance:GetAll()
self.flag = FunctionPlayerDistance.CreatureType.SceneUser
end
for k,v in pairs(roles) do
if Game.Myself.data.id ~= k and v ~= nil then
if VectorUtility.DistanceXZ( pos, v:GetPosition() ) <= maskRange then
self:UnMaskUI(v)
else
self:MaskUI(v)
end
end
end
end
function FunctionPlayerDistance:MaskUI(creature)
FunctionPlayerUI.Me():MaskHurtNum(creature,self.reason,false)
FunctionPlayerUI.Me():MaskChatSkill(creature,self.reason,false)
FunctionPlayerUI.Me():MaskEmoji(creature,self.reason,false)
end
function FunctionPlayerDistance:UnMaskUI(creature)
FunctionPlayerUI.Me():UnMaskHurtNum(creature,self.reason,false)
FunctionPlayerUI.Me():UnMaskChatSkill(creature,self.reason,false)
FunctionPlayerUI.Me():UnMaskEmoji(creature,self.reason,false)
end