366 lines
13 KiB
Plaintext
366 lines
13 KiB
Plaintext
GuildPictureManager = class("GuildPictureManager")
|
|
autoImport("UnionLogo")
|
|
function GuildPictureManager.Instance()
|
|
if nil == GuildPictureManager.me then
|
|
GuildPictureManager.me = GuildPictureManager.new()
|
|
end
|
|
return GuildPictureManager.me
|
|
end
|
|
|
|
function GuildPictureManager:ctor()
|
|
|
|
if(self.toBeDownload)then
|
|
TableUtility.ArrayClear(self.toBeDownload)
|
|
end
|
|
self.toBeDownload = {}
|
|
|
|
if(self.LRUTextureCache)then
|
|
TableUtility.ArrayClear(self.LRUTextureCache)
|
|
end
|
|
self.LRUTextureCache = {}
|
|
self.UploadingMap = {}
|
|
self.maxCache = 50
|
|
self.logEnable = false
|
|
self.isDownloading = false
|
|
end
|
|
|
|
function GuildPictureManager:log( ... )
|
|
-- body
|
|
if(self.logEnable)then
|
|
helplog(...)
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:tryGetMyThumbnail(guild,callIndex,index,time,picType)
|
|
|
|
self:log("GuildPictureManagertryGenThumbnail",guild,index, time)
|
|
self.isDownloading = true
|
|
UnionLogo.Ins():SetUnionID(guild)
|
|
UnionLogo.Ins():GetThumbnail(callIndex,index,time,picType,function ( progress )
|
|
-- body
|
|
self:MyThumbnailProgressCallback(guild,callIndex,index,time,progress)
|
|
end,function ( bytes)
|
|
-- body
|
|
self:MyThumbnailSusCallback(guild,callIndex,index,time,bytes)
|
|
end,function ( errorMessage )
|
|
-- body
|
|
self:MyThumbnailErrorCallback(guild,callIndex,index,time,errorMessage)
|
|
end)
|
|
end
|
|
|
|
function GuildPictureManager:AddMyThumbnailInfos(list)
|
|
if(list and #list > 0)then
|
|
for i=1,#list do
|
|
self:AddSingleMyThumbnail(list[i])
|
|
end
|
|
self:startTryGetMyThumbnail()
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:AddSingleMyThumbnail(data)
|
|
|
|
local index = data.index
|
|
local time = data.time
|
|
local guild = data.guild
|
|
local callIndex = data.callIndex
|
|
local picType = data.picType
|
|
local texture = self:GetThumbnailTextureById(guild,callIndex,index,time)
|
|
if(not texture)then
|
|
local hasIn = self:HasInToBeDownload(guild,callIndex,index,time)
|
|
if(not hasIn)then
|
|
local loadData = {callIndex = callIndex,index = index,time = time,guild = guild,picType = picType}
|
|
self.toBeDownload[#self.toBeDownload+1] = loadData
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:HasInToBeDownload(guild,callIndex,index,time)
|
|
for i=1,#self.toBeDownload do
|
|
local single = self.toBeDownload[i]
|
|
if(single.index == index and single.guild == guild and single.time == time and single.callIndex == callIndex)then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:MyThumbnailSusCallback(guild,callIndex,index,time,bytes)
|
|
self.isDownloading = false
|
|
local texture = Texture2D(2,2,TextureFormat.RGB24,false)
|
|
local bRet = ImageConversion.LoadImage(texture, bytes)
|
|
if(bRet)then
|
|
self:addThumbnailTextureById(guild,callIndex,index,time,texture)
|
|
self:removeOldTimeData(guild,callIndex,index,time)
|
|
self:ThumbnailDownloadCompleteCallback1(guild,callIndex,index,time,bytes)
|
|
self:removeDownloadTexture(guild,callIndex,index,time)
|
|
self:startTryGetMyThumbnail()
|
|
else
|
|
self:MyThumbnailErrorCallback(guild,callIndex,index,time,"load LoadImage error!")
|
|
Object.DestroyImmediate(texture)
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:removePhotoCache( guild,callIndex,index,time )
|
|
for i=1,#self.LRUTextureCache do
|
|
local single = self.LRUTextureCache[i]
|
|
if(single.index == index and single.guild == guild and single.callIndex == callIndex)then
|
|
local data = table.remove(self.LRUTextureCache,i)
|
|
Object.DestroyImmediate(data.texture)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:removeOldTimeData(guild,callIndex,index,time )
|
|
-- body
|
|
for i=1,#self.toBeDownload do
|
|
local single = self.toBeDownload[i]
|
|
if(single.index == index and single.guild == guild and single.time ~= time and single.callIndex == callIndex)then
|
|
table.remove(self.toBeDownload,i)
|
|
break
|
|
end
|
|
end
|
|
|
|
for i=1,#self.LRUTextureCache do
|
|
local single = self.LRUTextureCache[i]
|
|
if(single.index == index and single.guild == guild and single.time ~= time and single.callIndex == callIndex)then
|
|
local data = table.remove(self.LRUTextureCache,i)
|
|
Object.DestroyImmediate(data.texture)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:MyThumbnailErrorCallback(guild,callIndex,index,time,errorMessage)
|
|
self.isDownloading = false
|
|
self:removeDownloadTexture(guild,callIndex,index,time)
|
|
self:ThumbnailDownloadErrorCallback1(guild,callIndex,index,time,errorMessage)
|
|
self:startTryGetMyThumbnail()
|
|
end
|
|
|
|
function GuildPictureManager:MyThumbnailProgressCallback(guild,callIndex,index,time,progress)
|
|
self:ThumbnailDownloadProgressCallback1(guild,callIndex,index,time,progress)
|
|
end
|
|
|
|
function GuildPictureManager:startTryGetMyThumbnail()
|
|
if(#self.toBeDownload > 0 and not self.isDownloading)then
|
|
local loadData = self.toBeDownload[1]
|
|
self:tryGetMyThumbnail(loadData.guild,loadData.callIndex,loadData.index,loadData.time,loadData.picType)
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:GetThumbnailTexture( guild,callIndex,index,time)
|
|
-- body
|
|
local texture = self:GetThumbnailTextureById(guild,callIndex,index,time,true)
|
|
if(texture)then
|
|
return texture
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:GetThumbnailTextureById( guild,callIndex,index,time,rePos )
|
|
-- body
|
|
for i=1,#self.LRUTextureCache do
|
|
local single = self.LRUTextureCache[i]
|
|
if(single.index == index and single.guild == guild and single.time == time and callIndex == single.callIndex)then
|
|
if(rePos)then
|
|
table.remove(self.LRUTextureCache,i)
|
|
table.insert(self.LRUTextureCache,1,single)
|
|
end
|
|
return single.texture
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:addThumbnailTextureById(guild,callIndex,index,time,texture)
|
|
-- body
|
|
if(not self:GetThumbnailTextureById(guild,callIndex,index,time))then
|
|
if(#self.LRUTextureCache > self.maxCache)then
|
|
local oldData = table.remove(self.LRUTextureCache)
|
|
Object.DestroyImmediate(oldData.texture)
|
|
end
|
|
local data = {}
|
|
data.index = index
|
|
data.guild = guild
|
|
data.texture = texture
|
|
data.time = time
|
|
data.callIndex = callIndex
|
|
table.insert(self.LRUTextureCache,1,data)
|
|
else
|
|
self:log("addThumbnailTextureById:exsit index:",index)
|
|
end
|
|
end
|
|
|
|
function GuildPictureManager:removeDownloadTexture(guild,callIndex,index,time)
|
|
for j=1,#self.toBeDownload do
|
|
local data = self.toBeDownload[j]
|
|
if(index == data.index and data.guild == guild and time == data.time and callIndex == data.callIndex)then
|
|
table.remove(self.toBeDownload,j)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
-- function GuildPictureManager:isUpLoadFailure( index )
|
|
-- local photoData = PhotoDataProxy.Instance:getPhotoDataByIndex(index)
|
|
-- if(photoData and not photoData.isupload)then
|
|
-- return true
|
|
-- end
|
|
-- end
|
|
|
|
-- function GuildPictureManager:isUpLoading( guild,index )
|
|
-- return self.UploadingMap[index] == true
|
|
-- end
|
|
|
|
-- function GuildPictureManager:isCanReUpLoading( guild,index,time )
|
|
-- local exsit = UnionLogo.Ins():CheckExistOnLocal(index)
|
|
-- if(exsit)then
|
|
-- return true
|
|
-- end
|
|
-- end
|
|
|
|
-- function GuildPictureManager:removePhotoFromeAlbum( index ,time)
|
|
-- ServicePhotoCmdProxy.Instance:CallPhotoOptCmd(PhotoCmd_pb.EPHOTOOPTTYPE_REMOVE,index)
|
|
-- end
|
|
|
|
-- function GuildPictureManager:removeAndClearPhotoDataWhenDel( index,time )
|
|
-- self:removePhotoDataWhenDel(index,time)
|
|
-- UnionLogo.Ins():Clear(index)
|
|
-- end
|
|
|
|
-- function GuildPictureManager:removePhotoDataWhenDel(guild, index,time )
|
|
-- -- body
|
|
-- self:removeDownloadTexture(guild,index,time)
|
|
-- self:removeOldTimeData(guild,index,time)
|
|
-- self.UploadingMap[index] = false
|
|
-- self:removePhotoCache(guild,index,time)
|
|
-- end
|
|
|
|
-- function GuildPictureManager:saveToPhotoAlbum( texture,index,time )
|
|
-- local bytes = texture:EncodeToJPG(100)
|
|
-- self.UploadingMap[index] = true
|
|
-- UnionLogo.Ins():SaveAndUpload(index,bytes,time,function (progress)
|
|
-- -- body
|
|
-- self:log("Upload progress:",progress)
|
|
-- self:OriginPhotoUploadProgressCallback1(index,time,progress)
|
|
-- end, function ( bytes )
|
|
-- -- body
|
|
-- self:log("Upload sus:")
|
|
-- self.UploadingMap[index] = false
|
|
-- ServicePhotoCmdProxy.Instance:CallPhotoOptCmd(PhotoCmd_pb.EPHOTOOPTTYPE_UPLOAD,index)
|
|
-- self:OriginPhotoUploadCompleteCallback1(index,time)
|
|
|
|
-- end, function ( errorMessage )
|
|
-- -- body
|
|
-- self.UploadingMap[index] = false
|
|
-- self:log("Upload error:",errorMessage)
|
|
-- self:OriginPhotoUploadErrorCallback1(index,time,errorMessage)
|
|
-- end)
|
|
-- end
|
|
|
|
-- function GuildPictureManager:UploadPhoto( index,time )
|
|
-- -- body
|
|
-- self.UploadingMap[index] = true
|
|
-- UnionLogo.Ins():Upload(index,function (progress)
|
|
-- -- body
|
|
-- self:log("Upload progress:",progress)
|
|
-- self:OriginPhotoUploadProgressCallback1(index,time,progress)
|
|
-- end, function ( bytes )
|
|
-- -- body
|
|
-- self:log("Upload sus:")
|
|
-- self.UploadingMap[index] = false
|
|
-- ServicePhotoCmdProxy.Instance:CallPhotoOptCmd(PhotoCmd_pb.EPHOTOOPTTYPE_UPLOAD,index)
|
|
-- self:OriginPhotoUploadCompleteCallback1(index,time)
|
|
|
|
-- end, function ( errorMessage )
|
|
-- -- body
|
|
-- self.UploadingMap[index] = false
|
|
-- self:log("Upload error:",errorMessage)
|
|
-- self:OriginPhotoUploadErrorCallback1(index,time,errorMessage)
|
|
-- end)
|
|
-- end
|
|
|
|
-- function GuildPictureManager:tryGetOriginImage( index,time )
|
|
-- -- body
|
|
-- PhotoHelper.Ins():GetOriginImage(index,time,function ( progress )
|
|
-- -- body
|
|
-- self:OriginPhotoDownloadProgressCallback1(index,time,progress)
|
|
-- end,function ( bytes,timestamp )
|
|
-- self:OriginPhotoDownloadCompleteCallback1(index,time,bytes)
|
|
-- -- body
|
|
-- end,function ( errorMessage )
|
|
-- -- body
|
|
-- self:OriginPhotoDownloadErrorCallback1(index,time,errorMessage)
|
|
-- end)
|
|
-- end
|
|
|
|
GuildPictureManager.ThumbnailDownloadProgressCallback = "GuildPictureManager_ThumbnailDownloadProgressCallback"
|
|
GuildPictureManager.ThumbnailDownloadCompleteCallback = "GuildPictureManager_ThumbnailDownloadCompleteCallback"
|
|
GuildPictureManager.ThumbnailDownloadErrorCallback = "GuildPictureManager_ThumbnailDownloadErrorCallback"
|
|
|
|
GuildPictureManager.OriginPhotoDownloadProgressCallback = "GuildPictureManager_OriginPhotoDownloadProgressCallback"
|
|
GuildPictureManager.OriginPhotoDownloadCompleteCallback = "GuildPictureManager_OriginPhotoDownloadCompleteCallback"
|
|
GuildPictureManager.OriginPhotoDownloadErrorCallback = "GuildPictureManager_OriginPhotoDownloadErrorCallback"
|
|
|
|
GuildPictureManager.OriginPhotoUploadProgressCallback = "GuildPictureManager_OriginPhotoUploadProgressCallback"
|
|
GuildPictureManager.OriginPhotoUploadCompleteCallback = "GuildPictureManager_OriginPhotoUploadCompleteCallback"
|
|
GuildPictureManager.OriginPhotoUploadErrorCallback = "GuildPictureManager_OriginPhotoUploadErrorCallback"
|
|
|
|
--download thumbnail
|
|
function GuildPictureManager:ThumbnailDownloadProgressCallback1(guild,callIndex,index, time,progress )
|
|
-- body
|
|
self:log("GuildPictureManager ThumbnailDownloadProgressCallback",guild,index, time,progress)
|
|
GameFacade.Instance:sendNotification(GuildPictureManager.ThumbnailDownloadProgressCallback,{callIndex = callIndex,guild = guild,index = index,time = time,progress = progress})
|
|
end
|
|
|
|
function GuildPictureManager:ThumbnailDownloadCompleteCallback1(guild,callIndex,index, time,bytes)
|
|
-- body
|
|
self:log("GuildPictureManager ThumbnailDownloadCompleteCallback",guild,index, time,tostring(bytes),type(index))
|
|
local cdata = {callIndex = callIndex,guild = guild,index = index,time = time,byte = bytes};
|
|
GameFacade.Instance:sendNotification(GuildPictureManager.ThumbnailDownloadCompleteCallback, cdata)
|
|
EventManager.Me():PassEvent(GuildPictureManager.ThumbnailDownloadCompleteCallback, cdata);
|
|
end
|
|
|
|
function GuildPictureManager:ThumbnailDownloadErrorCallback1(guild,callIndex,index, time,errorMessage)
|
|
-- body
|
|
self:log("GuildPictureManager ThumbnailDownloadErrorCallback",guild,index, time,errorMessage)
|
|
local cdata = {callIndex = callIndex,guild = guild,index = index,time = time};
|
|
GameFacade.Instance:sendNotification(GuildPictureManager.ThumbnailDownloadErrorCallback, cdata)
|
|
EventManager.Me():PassEvent(GuildPictureManager.ThumbnailDownloadErrorCallback, cdata);
|
|
end
|
|
|
|
-- --download
|
|
-- function GuildPictureManager:OriginPhotoDownloadProgressCallback1(index, time,progress )
|
|
-- -- body
|
|
-- self:log("OriginPhotoDownloadProgressCallback",index, time,progress)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoDownloadProgressCallback,{index = index,time = time,progress = progress})
|
|
-- end
|
|
|
|
-- function GuildPictureManager:OriginPhotoDownloadCompleteCallback1(index, time,bytes)
|
|
-- -- body
|
|
-- self:log("OriginPhotoDownloadCompleteCallback",index, time,bytes)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoDownloadCompleteCallback,{index = index,time = time,byte = bytes})
|
|
-- end
|
|
|
|
-- function GuildPictureManager:OriginPhotoDownloadErrorCallback1(index, time,errorMessage)
|
|
-- -- body
|
|
-- self:log("OriginPhotoDownloadErrorCallback",index, time,errorMessage)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoDownloadErrorCallback,{index = index,time = time})
|
|
-- end
|
|
|
|
-- --upload
|
|
-- function GuildPictureManager:OriginPhotoUploadProgressCallback1(index, time,progress )
|
|
-- -- body
|
|
-- self:log("OriginPhotoUploadProgressCallback",index, time,progress)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoUploadProgressCallback,{index = index,time = time,progress = progress})
|
|
-- end
|
|
|
|
-- function GuildPictureManager:OriginPhotoUploadCompleteCallback1(index, time)
|
|
-- -- body
|
|
-- self:log("OriginPhotoUploadCompleteCallback",index, time)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoUploadCompleteCallback,{index = index,time = time})
|
|
-- end
|
|
|
|
-- function GuildPictureManager:OriginPhotoUploadErrorCallback1(index, time,errorMessage)
|
|
-- -- body
|
|
-- self:log("OriginPhotoUploadErrorCallback",index, time,errorMessage)
|
|
-- GameFacade.Instance:sendNotification(GuildPictureManager.OriginPhotoUploadErrorCallback,{index = index,time = time})
|
|
-- end |