130 lines
3.1 KiB
Plaintext
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 |