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

237 lines
6.8 KiB
Plaintext

autoImport("AEFreeTransferData")
autoImport("AERewardData")
autoImport("AEResetData")
autoImport("AERewardItemData")
autoImport("AELotteryData")
autoImport("AEGuildBuildingData")
ActivityEventProxy = class('ActivityEventProxy', pm.Proxy)
ActivityEventProxy.Instance = nil;
ActivityEventProxy.NAME = "ActivityEventProxy"
ActivityEventType = {
FreeTransfer = ActivityEvent_pb.EACTIVITYEVENTTYPE_FREE_TRANSFER, --免費地圖傳送
Reward = ActivityEvent_pb.EACTIVITYEVENTTYPE_REWARD, --額外/翻倍獎勵
ResetTime = ActivityEvent_pb.EACTIVITYEVENTTYPE_RESETTIME, --重置
LotteryDiscount = ActivityEvent_pb.EACTIVITYEVENTTYPE_LOTTERY_DISCOUNT, --扭蛋折扣
LotteryBanner = ActivityEvent_pb.EACTIVITYEVENTTYPE_LOTTERY_BANNER, --扭蛋Banner
GuildBuildingSubmit = ActivityEvent_pb.EACTIVITYEVENTTYPE_GUILD_BUILDING_SUBMIT, -- 公會建築提交材料效果提升型別
Shop = ActivityEvent_pb.EACTIVITYEVENTTYPE_SHOP, -- 商店
}
AERewardType = {
Laboratory = ActivityEvent_pb.EAEREWARDMODE_LABORATORY, --訓練場
WantedQuest = ActivityEvent_pb.EAEREWARDMODE_WANTEDQUEST, --看板
Seal = ActivityEvent_pb.EAEREWARDMODE_SEAL, --裂隙
GuildDonate = ActivityEvent_pb.EAEREWARDMODE_GUILD_DONATE, --公會捐贈
Tower = ActivityEvent_pb.EAEREWARDMODE_TOWER, --無限塔
GuildRaid = ActivityEvent_pb.EAEREWARDMODE_GUILDRAID, --公會副本
GuildDojo = ActivityEvent_pb.EAEREWARDMODE_GUILDDOJO, --公會道場
PveCard = ActivityEvent_pb.EAEREWARDMODE_PVECARD, -- 卡牌副本
}
function ActivityEventProxy:ctor(proxyName, data)
self.proxyName = proxyName or ActivityEventProxy.NAME
if ActivityEventProxy.Instance == nil then
ActivityEventProxy.Instance = self
end
if data ~= nil then
self:setData(data)
end
self:Init()
end
function ActivityEventProxy:Init()
self.eventMap = {}
self.userDataMap = {}
self.bannerMap = {}
end
function ActivityEventProxy:RecvActivityEventNtf(servicedata)
TableUtility.TableClear(self.eventMap)
for i=1,#servicedata.events do
local event = servicedata.events[i]
local eventType = event.type
if eventType == ActivityEventType.FreeTransfer then
if self.eventMap[eventType] == nil then
self.eventMap[eventType] = {}
end
local data = AEFreeTransferData.new(event.freetransfer)
data:SetTime(event)
table.insert(self.eventMap[eventType],data)
elseif eventType == ActivityEventType.Reward then
if self.eventMap[eventType] == nil then
self.eventMap[eventType] = AERewardData.new()
end
self.eventMap[eventType]:SetReward(event)
elseif eventType == ActivityEventType.ResetTime then
if self.eventMap[eventType] == nil then
self.eventMap[eventType] = {}
end
local data = AEResetData.new()
table.insert(self.eventMap[eventType],data)
for j=1,#event.resetinfo do
data:SetData(event.resetinfo[j])
end
elseif eventType == ActivityEventType.LotteryDiscount then
if self.eventMap[eventType] == nil then
self.eventMap[eventType] = {}
end
local data = AELotteryData.new()
table.insert(self.eventMap[eventType],data)
data:SetDiscount(event)
elseif eventType == ActivityEventType.LotteryBanner then
local lotterytype = event.lotterybanner.lotterytype
if self.bannerMap[lotterytype] == nil then
self.bannerMap[lotterytype] = {}
end
local data = AELotteryBannerData.new()
table.insert(self.bannerMap[lotterytype],data)
data:SetData(event)
elseif eventType == ActivityEventType.GuildBuildingSubmit then
if self.eventMap[eventType] == nil then
self.eventMap[eventType] = {}
end
local gData = AEGuildBuildingData.new(event.gbuildingsubmit)
gData:SetTime(event)
table.insert(self.eventMap[eventType],gData)
end
end
end
function ActivityEventProxy:RecvActivityEventUserDataNtf(servicedata)
for i=1,#servicedata.rewarditems do
local rewarditem = servicedata.rewarditems[i]
self.userDataMap[rewarditem.mode] = AERewardItemData.new(rewarditem)
end
end
function ActivityEventProxy:RecvActivityEventNtfEventCntCmd(servicedata)
for i=1,#servicedata.cnt do
local countdata = servicedata.cnt[i]
local eventType = countdata.type
local datas = self.eventMap[eventType]
local data
for i=1,#datas do
data = datas[i]
if data ~= nil then
if eventType == ActivityEventType.LotteryDiscount then
local discount = data:GetDiscountDataById(countdata.id)
if discount ~= nil then
discount:SetUsedCount(countdata.count)
end
end
end
end
end
end
function ActivityEventProxy:IsFreeTransferMap(mapid,Ftype)
local datas = self.eventMap[ActivityEventType.FreeTransfer]
local data
if(datas == nil)then
return false
end
for i=1,#datas do
data = datas[i]
if data ~= nil then
if data:IsFreeTransferMap(mapid,Ftype) then
return true
end
end
end
return false
end
function ActivityEventProxy:IsStorageFree()
local datas = self.eventMap[ActivityEventType.FreeTransfer]
if(datas == nil)then
return false
end
local data
for i=1,#datas do
data = datas[i]
if data ~= nil then
return data:IsStorageFree()
end
end
return false
end
function ActivityEventProxy:GetUserDataByType(rewardType)
return self.userDataMap[rewardType]
end
function ActivityEventProxy:GetRewardByType(rewardType)
local event = self.eventMap[ActivityEventType.Reward]
if event ~= nil then
return event:GetRewardByType(rewardType)
end
end
function ActivityEventProxy:GetPveCardRewardByDif(difficulty)
local event = self.eventMap[ActivityEventType.Reward]
if event ~= nil then
local reward = event:GetRewardByType(AERewardType.PveCard)
return reward:GetRewardByDifficulty(difficulty)
end
end
function ActivityEventProxy:GetResetTimeByType(rewardType)
local events = self.eventMap[ActivityEventType.ResetTime]
if not events then return nil end
local event
for i=1,#events do
event = events[i]
if event ~= nil then
return event:GetDataByType(rewardType)
end
end
end
function ActivityEventProxy:GetLotteryDiscount(lotterytype)
local events = self.eventMap[ActivityEventType.LotteryDiscount]
if not events then return nil end
local event
for i=1,#events do
event = events[i]
if event ~= nil then
return event:GetDiscount(lotterytype)
end
end
end
function ActivityEventProxy:GetLotteryDiscountByCoinType(lotterytype, cointype, year, month)
local events = self.eventMap[ActivityEventType.LotteryDiscount]
if not events then return nil end
local event
for i=1,#events do
event = events[i]
if event ~= nil then
return event:GetDiscountByCoinType(lotterytype, cointype, year, month)
end
end
end
function ActivityEventProxy:GetLotteryBanner(lotterytype)
if self.bannerMap then
return self.bannerMap[lotterytype]
end
end
function ActivityEventProxy:GetGuildBuildingEventData()
local events = self.eventMap[ActivityEventType.GuildBuildingSubmit]
if not events then return nil end
local event
for i=1,#events do
event = events[i]
if event then
return event
end
end
end