311 lines
6.5 KiB
Plaintext
311 lines
6.5 KiB
Plaintext
autoImport("DojoData")
|
|
autoImport("DojoMsgData")
|
|
autoImport("DojoRewardData")
|
|
|
|
DojoProxy = class('DojoProxy', pm.Proxy)
|
|
DojoProxy.Instance = nil;
|
|
DojoProxy.NAME = "DojoProxy"
|
|
|
|
DojoCellType = "DojoMsg"
|
|
|
|
DojoProxy.PassType = {
|
|
First = Dojo_pb.EPASSTYPE_FIRST,
|
|
Help = Dojo_pb.EPASSTYPE_HELP,
|
|
Normal = Dojo_pb.EPASSTYPE_NORMAL,
|
|
}
|
|
|
|
function DojoProxy:ctor(proxyName, data)
|
|
self.proxyName = proxyName or DojoProxy.NAME
|
|
if(DojoProxy.Instance == nil) then
|
|
DojoProxy.Instance = self
|
|
end
|
|
if data ~= nil then
|
|
self:setData(data)
|
|
end
|
|
|
|
self:Init()
|
|
end
|
|
|
|
function DojoProxy:Init()
|
|
self.maxCompletedId = 0
|
|
self.msgData = {}
|
|
self.rewardItems = {}
|
|
self.chatMaxNums = 50
|
|
end
|
|
|
|
function DojoProxy:RecvDojoPrivateInfo(data)
|
|
|
|
local groupid = data.groupid
|
|
if groupid == nil then
|
|
errorLog("DojoProxy RecvDojoPrivateInfo groupId == nil")
|
|
return
|
|
end
|
|
|
|
self:HandleDojoData(groupid)
|
|
self.maxCompletedId = 0
|
|
|
|
for i=1,#self.dojoData[groupid] do
|
|
local dojo = self.dojoData[groupid][i]
|
|
if i == 1 then
|
|
dojo:SetLock(false)
|
|
end
|
|
for j=1,#data.completed_id do
|
|
if dojo.id == data.completed_id[j] then
|
|
self.dojoData[groupid][i]:SetComplete(true)
|
|
if dojo.id > self.maxCompletedId then
|
|
self.maxCompletedId = dojo.id
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function DojoProxy:RecvDojoPublicInfo(data)
|
|
if data == nil then
|
|
errorLog("DojoProxy RecvDojoPublicInfo data == nil")
|
|
return
|
|
end
|
|
if data.dojoid == nil then
|
|
errorLog("DojoProxy RecvDojoPublicInfo data.dojoid == nil")
|
|
return
|
|
end
|
|
if data.msgblob == nil then
|
|
errorLog("DojoProxy RecvDojoPublicInfo data.msgblob == nil")
|
|
return
|
|
end
|
|
if data.msgblob.msgs == nil then
|
|
errorLog("DojoProxy RecvDojoPublicInfo data.msgblob.msgs == nil")
|
|
return
|
|
end
|
|
|
|
self.msgData[data.dojoid] = {}
|
|
|
|
for i=1,#data.msgblob.msgs do
|
|
if data.msgblob.msgs[i] then
|
|
local msg = DojoMsgData.new(data.msgblob.msgs[i])
|
|
table.insert(self.msgData[data.dojoid] , 1 , msg)
|
|
else
|
|
errorLog(string.format("DojoProxy RecvDojoPublicInfo data.msgblob.msgs[%s] == nil",tostring(i)))
|
|
end
|
|
end
|
|
end
|
|
|
|
function DojoProxy:RecvAddMsg(data)
|
|
if data == nil then
|
|
errorLog("DojoProxy RecvAddMsg data == nil")
|
|
return
|
|
end
|
|
|
|
if(#self.msgData[data.dojoid] >= self.chatMaxNums)then
|
|
table.remove(self.msgData[data.dojoid] , 1)
|
|
end
|
|
|
|
local msg = DojoMsgData.new(data.dojomsg)
|
|
table.insert(self.msgData[data.dojoid] , 1 , msg)
|
|
end
|
|
|
|
function DojoProxy:RecvDojoReward(data)
|
|
TableUtility.ArrayClear(self.rewardItems)
|
|
if data and data.items then
|
|
for i=1,#data.items do
|
|
local itemInfo = DojoRewardData.new(data.items[i])
|
|
table.insert(self.rewardItems , itemInfo)
|
|
end
|
|
end
|
|
end
|
|
|
|
function DojoProxy:InitGroupData()
|
|
self.groupData = {}
|
|
for k,v in ipairs(GameConfig.GuildDojo.Dojo) do
|
|
table.insert(self.groupData , v)
|
|
end
|
|
table.sort( self.groupData, function(l,r)
|
|
return l.DojoGroupId < r.DojoGroupId
|
|
end)
|
|
end
|
|
|
|
function DojoProxy:InitDojoData()
|
|
self.dojoData = {}
|
|
for k,v in ipairs(Table_Guild_Dojo) do
|
|
local groupId = v.DojoGroupId
|
|
if groupId then
|
|
if self.dojoData[groupId] == nil then
|
|
self.dojoData[groupId] = {}
|
|
end
|
|
table.insert(self.dojoData[groupId],DojoData.new(v))
|
|
else
|
|
errorLog("DojoProxy InitDojoData groupId = nil")
|
|
end
|
|
end
|
|
for k,v in ipairs(self.dojoData) do
|
|
table.sort( v, function(l,r)
|
|
return l.id < r.id
|
|
end)
|
|
end
|
|
end
|
|
|
|
function DojoProxy:InitGuildInfo()
|
|
self.guildInfo = {}
|
|
for k,v in ipairs(Table_Guild) do
|
|
for i=1,#v.DojoGroup do
|
|
local groupid = v.DojoGroup[i]
|
|
if self.guildInfo[groupid] == nil then
|
|
self.guildInfo[groupid] = {}
|
|
end
|
|
table.insert(self.guildInfo[groupid] , v.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
function DojoProxy:HandleDojoData(groupId)
|
|
if groupId == nil then
|
|
errorLog("DojoProxy HandleDojoData groupId == nil")
|
|
return
|
|
end
|
|
if self.dojoData == nil then
|
|
self:InitDojoData()
|
|
end
|
|
if self.dojoData[groupId] == nil then
|
|
self.dojoData[groupId] = {}
|
|
end
|
|
end
|
|
|
|
function DojoProxy:GetGroupData()
|
|
if self.groupData == nil then
|
|
self:InitGroupData()
|
|
end
|
|
return self.groupData
|
|
end
|
|
|
|
function DojoProxy:GetDojoData(groupId)
|
|
if groupId == nil then
|
|
errorLog("DojoProxy GetDojoData groupId == nil")
|
|
return
|
|
end
|
|
|
|
self:HandleDojoData(groupId)
|
|
|
|
return self.dojoData[groupId]
|
|
end
|
|
|
|
function DojoProxy:GetMsgData(dojoid)
|
|
if self.msgData[dojoid] == nil then
|
|
self.msgData[dojoid] = {}
|
|
end
|
|
return self.msgData[dojoid]
|
|
end
|
|
|
|
function DojoProxy:GetWaitData()
|
|
local result = {}
|
|
local members = TeamProxy.Instance.myTeam:GetPlayerMemberList(false, true)
|
|
for i=1,#members do
|
|
local id = members[i].id
|
|
if GuildProxy.Instance:CheckPlayerInMyGuild(id) then
|
|
local data = {}
|
|
data.id = id
|
|
data.name = members[i].name
|
|
|
|
if id == Game.Myself.data.id then
|
|
data.agree = true
|
|
end
|
|
|
|
table.insert(result , data)
|
|
end
|
|
end
|
|
return result
|
|
end
|
|
|
|
function DojoProxy:IsSelfInDojo()
|
|
local mapid = Game.MapManager:GetMapID();
|
|
if mapid then
|
|
local mapRaid = Table_MapRaid[mapid]
|
|
if mapRaid then
|
|
if mapRaid.Type == 9 then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function DojoProxy:RecvCountdownUserCmd(data)
|
|
TimeTickManager.Me():ClearTick(self)
|
|
self.TicData = {}
|
|
if(data and data.tick and data.tick ~=0)then
|
|
self.TicData.tick = data.tick
|
|
TimeTickManager.Me():CreateTick(0,50,self.UpdateTip,self)
|
|
end
|
|
end
|
|
|
|
function DojoProxy:UpdateTip(deltaTime)
|
|
-- body
|
|
if(self.TicData.tick <=0)then
|
|
TimeTickManager.Me():ClearTick(self)
|
|
return
|
|
end
|
|
self.TicData.tick = self.TicData.tick - deltaTime/1000
|
|
end
|
|
|
|
function DojoProxy:GetCountdownUserCmd()
|
|
if(self.TicData and self.TicData.tick)then
|
|
self.TicData.tick = math.floor(self.TicData.tick)
|
|
end
|
|
return self.TicData
|
|
end
|
|
|
|
function DojoProxy:CheckCanOpenGroup(groupId)
|
|
local myGuildData = GuildProxy.Instance.myGuildData
|
|
if myGuildData == nil then
|
|
return false
|
|
end
|
|
|
|
if self.guildInfo == nil then
|
|
self:InitGuildInfo()
|
|
end
|
|
|
|
if self.guildInfo[groupId] == nil then
|
|
return false
|
|
end
|
|
|
|
for i=1,#self.guildInfo[groupId] do
|
|
local guildLevel = self.guildInfo[groupId][i]
|
|
if guildLevel and myGuildData.level >= guildLevel then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function DojoProxy:GetGuildDataByGroupId(groupId)
|
|
if self.guildInfo == nil then
|
|
self:InitGuildInfo()
|
|
end
|
|
return self.guildInfo[groupId]
|
|
end
|
|
|
|
function DojoProxy:GetReward()
|
|
return self.rewardItems
|
|
end
|
|
|
|
function DojoProxy:IsLockById(id)
|
|
if id > self.maxCompletedId + 1 then
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function DojoProxy:GetGroupLvreq(dojoid)
|
|
local data = Table_Guild_Dojo[dojoid]
|
|
local lvreq
|
|
if data and data.DojoGroupId then
|
|
for k,v in ipairs(GameConfig.GuildDojo.Dojo) do
|
|
if v.DojoGroupId == data.DojoGroupId then
|
|
lvreq = v.lvreq
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return lvreq
|
|
end |