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

130 lines
3.1 KiB
Plaintext

SceneObjectProxy = class('SceneObjectProxy', pm.Proxy)
SceneObjectProxy.Instance = nil;
SceneObjectProxy.NAME = "SceneObjectProxy"
--場景玩家(可見玩家)數據管理,新增、刪除、查詢玩家
SceneObjectProxy.AddMode = {
Normal = 1,
Refresh = 2,
}
function SceneObjectProxy:ctor(proxyName, data)
self.proxyName = proxyName or SceneObjectProxy.NAME
self.userMap = {}
self.addMode = SceneObjectProxy.AddMode.Normal
if(SceneObjectProxy.Instance == nil) then
SceneObjectProxy.Instance = self
end
if data ~= nil then
self:setData(data)
end
end
function SceneObjectProxy.RemoveObjs(list,delay,fadeout)
--temp
SceneTrapProxy.Instance:RemoveSome(list)
SceneTriggerProxy.Instance:RemoveSome(list)
SceneItemProxy.Instance:SetRemoveFlags(list)
NSceneNpcProxy.Instance:RemoveSome(list,delay,fadeout)
NScenePetProxy.Instance:RemoveSome(list,delay,fadeout)
NSceneUserProxy.Instance:RemoveSome(list)
end
function SceneObjectProxy.ClearAll()
SceneItemProxy.Instance:Clear()
SceneTrapProxy.Instance:Clear()
SceneTriggerProxy.Instance:Clear()
SceneCarrierProxy.Instance:Clear()
SceneAINpcProxy.Instance:Clear()
NSceneEffectProxy.Instance:Clear()
NSceneNpcProxy.Instance:Clear()
NScenePetProxy.Instance:Clear()
NSceneUserProxy.Instance:Clear()
end
function SceneObjectProxy:GetAll()
return self.userMap
end
function SceneObjectProxy:ChangeAddMode( mode )
self.addMode = mode
end
function SceneObjectProxy:Find(guid)
-- print("try find id:"..guid.." type:"..type(guid))
return self.userMap[guid]
end
function SceneObjectProxy:Add(data)
return nil
end
function SceneObjectProxy:PureAddSome(datas)
return nil
end
--返回 新加的場景物體,移除的物體
function SceneObjectProxy:RefreshAdd(datas,idPropName)
idPropName = idPropName or "id"
local newAdds = {}
local newAddDatas = {}
local removes = {}
local find = nil
local data = nil
for i=1,#datas do
data = datas[i]
find = self.userMap[data[idPropName]]
if(find==nil) then
newAddDatas[#newAddDatas + 1] = data
else
find.refresh = true
end
end
for k,v in pairs(self.userMap) do
if(not v.refresh) then
-- removes[#removes+1] = self:Remove(v.id)
-- else
-- v.refresh = false
end
end
for i=1,#newAddDatas do
newAdds[#newAdds+1] = self:Add(newAddDatas[i])
end
return newAdds,removes
end
function SceneObjectProxy:AddSome(datas)
if(self.addMode == SceneObjectProxy.AddMode.Normal) then
return self:PureAddSome(datas)
elseif(self.addMode == SceneObjectProxy.AddMode.Refresh) then
return self:RefreshAdd(datas)
end
end
function SceneObjectProxy:Remove(guid)
return nil
end
function SceneObjectProxy:RemoveSome(guids,delay,fadeout)
self.removeSomes = (self.removeSomes and self.removeSomes or {})
TableUtility.ArrayClear(self.removeSomes)
if(guids ~= nil and #guids >0) then
for i = 1, #guids do
if(self:Remove(guids[i],delay,fadeout)) then
self.removeSomes[#self.removeSomes+1] = guids[i]
-- table.insert(roles,guids[i])
end
end
end
return self.removeSomes
end
function SceneObjectProxy:Clear()
print("清空object")
self:ChangeAddMode(SceneObjectProxy.AddMode.Normal)
end