diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index c71f98de..fafa56a1 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -169,6 +169,11 @@ BIReport.ITEM_GET_TYPE = { RUNES_QUENCHING = "RuneQuenching", RUNES_AUTO_QUENCHING = "RuneAutoQuenching", RUNES_GIFT = "RuneGift", + TOURN_WAVE_BOUNTY_REWARD = "TournWaveBountyReward", + TOURN_WAVE_BOUNTY_LEVEL = "TournWaveBountyLevel", + TOURN_WAVE_RANK_REWARD = "TournWaveRankReward", + TOURN_WAVE_GIFT = "TournWaveGift", + TOURN_ARENA_GIFT = "TournArenaGift", FULL_MOON_TASK = "FullMoonTask", FULL_MOON_TASK_PROG_REWARD = "FullMoonTaskProgReward", FULL_MOON_SKIN_CHALLENGE_REWARD = "FullMoonSkinChallengeReward", @@ -256,6 +261,8 @@ BIReport.GIFT_TYPE = { FULL_MOON_NEW_HERO_GIFT = "FullMoonNewHeroGift", FULL_MOON_SKIN_GIFT = "FullMoonSkinGift", RUNES_GIFT = "RunesGift", + TOURN_WAVE_GIFT = "TournWaveGift", + TOURN_ARENA_GIFT = "TournArenaGift", } BIReport.COIN_TYPE = { diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index ff1269f5..1e9732c4 100644 --- a/lua/app/common/data_manager.lua +++ b/lua/app/common/data_manager.lua @@ -34,6 +34,7 @@ function DataManager:init() self:initManager("ShopData", "app/userdata/shop/shop_data") self:initManager("SummonData", "app/userdata/summon/summon_data") self:initManager("FullMoonData", "app/userdata/activity/full_moon/full_moon_data") + self:initManager("TournWaveData", "app/userdata/activity/tourn_wave/tourn_wave_data") self:initManager("AIHelperData", "app/userdata/game_setting/ai_helper_data") self:initManager("HeroFundData", "app/userdata/activity/hero_fund/hero_fund_data") self:initManager("ActBossRushData", "app/userdata/activity/act_boss_rush/act_boss_rush_data") @@ -123,6 +124,7 @@ function DataManager:clear() self.ShopData:clear() self.SummonData:clear() self.FullMoonData:clear() + self.TournWaveData:clear() -- 任务数据最后清理 self.TaskData:clear() self.AIHelperData:clear() @@ -535,6 +537,11 @@ DataManager.activityOpenFunc = { ModuleManager.FullMoonManager:reqActData() ModuleManager.FullMoonManager:initTimer() end, + [5] = function(params) + DataManager.TournWaveData:setActStatus(params) + ModuleManager.TournWaveManager:reqActData() + ModuleManager.TournWaveManager:initTimer() + end, } DataManager.waitOpenActivity = { @@ -551,6 +558,10 @@ DataManager.waitOpenActivity = { DataManager.FullMoonData:setActStatus(params) ModuleManager.FullMoonManager:initTimer() end, + [5] = function(params) + DataManager.TournWaveData:setActStatus(params) + ModuleManager.TournWaveManager:initTimer() + end, } return DataManager \ No newline at end of file diff --git a/lua/app/common/event_manager.lua b/lua/app/common/event_manager.lua index 5c17961e..e9165573 100644 --- a/lua/app/common/event_manager.lua +++ b/lua/app/common/event_manager.lua @@ -63,6 +63,7 @@ EventManager.CUSTOM_EVENT = { DUNGEON_ARMOR_TO_TARGET_ID = "DUNGEON_ARMOR_TO_TARGET_ID", ACTIVITY_SUMMER_END = "ACTIVITY_SUMMER_END", ACTIVITY_FULL_MOON_END = "ACTIVITY_FULL_MOON_END", + ACTIVITY_TOURN_WAVE_END = "ACTIVITY_TOURN_WAVE_END", MAIN_UI_CHECK_SIDE_BAR = "MAIN_UI_CHECK_SIDE_BAR", FORMATION_CHANGE = "FORMATION_CHANGE", BATTLE_REBIRTH = "BATTLE_REBIRTH", diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua index 505fa1f3..404ad486 100644 --- a/lua/app/common/module_manager.lua +++ b/lua/app/common/module_manager.lua @@ -79,6 +79,8 @@ local MODULE_PATHS = { FourteenDayManager = "app/module/activity/fourteen_day/fourteen_day_manager", -- 圆月活动 FullMoonManager = "app/module/activity/full_moon/full_moon_manager", + -- 波次锦标赛活动 + TournWaveManager = "app/module/activity/tourn_wave/tourn_wave_manager", -- 符文副本 DungeonRuneManager = "app/module/dungeon_rune/dungeon_rune_manager", -- 梦魇酒馆 diff --git a/lua/app/common/pay_manager.lua b/lua/app/common/pay_manager.lua index 674e7119..fd5bbe16 100644 --- a/lua/app/common/pay_manager.lua +++ b/lua/app/common/pay_manager.lua @@ -32,6 +32,8 @@ PayManager.PURCHARSE_ACT_TYPE = { FULL_MOON_NEW_HERO_GIFT = 19, FULL_MOON_SKIN_GIFT = 20, RUNES_GIFT = 21, + TOURN_WAVE_GIFT = 23, + TOURN_ARENA_GIFT = 24, } PayManager.PURCHARSE_TYPE_CONFIG = { @@ -66,6 +68,8 @@ PayManager.BI_ITEM_GET_TYPE = { [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_NEW_HERO_GIFT] = BIReport.ITEM_GET_TYPE.FULL_MOON_NEW_HERO_GIFT, [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_SKIN_GIFT] = BIReport.ITEM_GET_TYPE.FULL_MOON_SKIN_GIFT, [PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.ITEM_GET_TYPE.RUNES_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.TOURN_WAVE_GIFT] = BIReport.ITEM_GET_TYPE.TOURN_WAVE_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.TOURN_ARENA_GIFT] = BIReport.ITEM_GET_TYPE.TOURN_ARENA_GIFT, }, [PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.ITEM_GET_TYPE.GOLD_PIG, [PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.ITEM_GET_TYPE.MALL_TREASURE, @@ -97,6 +101,8 @@ PayManager.BI_GIFT_TYPE = { [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_NEW_HERO_GIFT] = BIReport.GIFT_TYPE.FULL_MOON_NEW_HERO_GIFT, [PayManager.PURCHARSE_ACT_TYPE.FULL_MOON_SKIN_GIFT] = BIReport.GIFT_TYPE.FULL_MOON_SKIN_GIFT, [PayManager.PURCHARSE_ACT_TYPE.RUNES_GIFT] = BIReport.GIFT_TYPE.RUNES_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.TOURN_WAVE_GIFT] = BIReport.GIFT_TYPE.TOURN_WAVE_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.TOURN_ARENA_GIFT] = BIReport.GIFT_TYPE.TOURN_ARENA_GIFT, }, [PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.GIFT_TYPE.GOLD_PIG, [PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.GIFT_TYPE.MALL_TREASURE, diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 136ce72d..807f05f6 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -24,6 +24,7 @@ local CONST_PATHS = { FourteenDayConst = "app/module/activity/fourteen_day/fourteen_day_const", DungeonRuneConst = "app/module/dungeon_rune/dungeon_rune_const", FullMoonConst = "app/module/activity/full_moon/full_moon_const", + TournWaveConst = "app/module/activity/tourn_wave/tourn_wave_const", } if EDITOR_MODE then diff --git a/lua/app/module/activity/tourn_wave.meta b/lua/app/module/activity/tourn_wave.meta new file mode 100644 index 00000000..e0716506 --- /dev/null +++ b/lua/app/module/activity/tourn_wave.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b9001279852c1a4ca2b3596edbcc576 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/module/activity/tourn_wave/tourn_wave_const.lua b/lua/app/module/activity/tourn_wave/tourn_wave_const.lua new file mode 100644 index 00000000..662f7694 --- /dev/null +++ b/lua/app/module/activity/tourn_wave/tourn_wave_const.lua @@ -0,0 +1,30 @@ +local TournWaveConst = {} + +-- 界面 +TournWaveConst.PANEL_TYPE = { + BOUNTY = 1, + RANK = 2, + GIFT = 3, +} + +-- 战令档位 +TournWaveConst.BOUNTY_GRADE_TYPE = { + FREE = 0, + PAY1 = 1, + PAY2 = 2, +} + +-- 战令礼包id +TournWaveConst.BOUNTY_GIFT_ID_1 = 230102 +TournWaveConst.BOUNTY_GIFT_ID_2 = 230202 + +TournWaveConst.GIFT_IDS = { + 230302, + 230402, + 230502, + 230602, + 230702, + 230802, +} + +return TournWaveConst \ No newline at end of file diff --git a/lua/app/module/activity/tourn_wave/tourn_wave_const.lua.meta b/lua/app/module/activity/tourn_wave/tourn_wave_const.lua.meta new file mode 100644 index 00000000..54a4b3b2 --- /dev/null +++ b/lua/app/module/activity/tourn_wave/tourn_wave_const.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b16d29c98a6455245aeeb8e6941c3625 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua b/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua new file mode 100644 index 00000000..c59ccdaa --- /dev/null +++ b/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua @@ -0,0 +1,127 @@ +local TournWaveManager = class("TournWaveManager", BaseModule) + +function TournWaveManager:showActMainUI() + UIManager:showUI("app/ui/activity/tourn_wave/tourn_wave_ui") +end + +-- 初始化计时器 +function TournWaveManager:initTimer() + self:unscheduleGlobal(self.actSid) + + if DataManager.TournWaveData:isActiveTime() then + Logger.logHighlight("波次锦标赛活动结束倒计时:"..DataManager.TournWaveData:getEndRemainTime()) + self.actSid = self:performWithDelayGlobal(function() + Logger.logHighlight("波次锦标赛活动结束") + EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.ACTIVITY_TOURN_WAVE_END) + end, DataManager.TournWaveData:getEndRemainTime()) + elseif DataManager.TournWaveData:getStartRemainTime() > 0 then + Logger.logHighlight("波次锦标赛活动开始倒计时:"..DataManager.TournWaveData:getStartRemainTime()) + self.actSid = self:performWithDelayGlobal(function() + Logger.logHighlight("波次锦标赛活动开始") + self:reqActData() + end, DataManager.TournWaveData:getStartRemainTime()) + end +end + +-- 购买活动战令 +function TournWaveManager:buyBounty(giftId) + PayManager:purchasePackage(giftId, PayManager.PURCHARSE_TYPE.ACT_GIFT) +end + +-- 请求活动数据 +function TournWaveManager:reqActData() + if not DataManager.TournWaveData:isOpen() then + return + end + if not DataManager.TournWaveData:isActiveTime() then + return + end + if self.isReqActData then + return + end + + self.isReqActData = true + self:sendMessage(ProtoMsgType.FromMsgEnum.TournWaveDataReq, {}, {}, self.rspActData, nil) +end + +function TournWaveManager:rspActData(result) + self.isReqActData = false + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.TournWaveData:onGetActData(result.tourn_wave) + end +end + +-- 请求战令奖励 +function TournWaveManager:reqBountyReward(id, grade) + self:sendMessage(ProtoMsgType.FromMsgEnum.TournWaveBountyClaimReq, {id = id, grade = grade}, {}, self.rspBountyReward, BIReport.ITEM_GET_TYPE.TOURN_WAVE_BOUNTY_REWARD) +end + +function TournWaveManager:rspBountyReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.TournWaveData:onReceivedBountyReward(result.success_id_grade) + + GFunc.showRewardBox(result.rewards) + end +end + +-- 购买战令等级 +function TournWaveManager:reqBuyBountyLevel() + local cost = DataManager.TournWaveData:getBuyBountyLevelCost() + local costId = GFunc.getRewardId(cost) + local costNum = GFunc.getRewardNum(cost) + if not GFunc.checkCost(costId, costNum, true) then + return + end + local params ={ + titleTx = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_TITLE), + content = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_COUNTENT), + boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, + showToday = GConst.MESSAGE_BOX_SHOW_TODAY.ACTIVITY_BUY_LEVEL, + costId = costId, + costNum = costNum, + okFunc = function() + local id = DataManager.TournWaveData:getBountyCfgByLevel(DataManager.TournWaveData:getBountyLevel() + 1).id + -- Logger.logHighlight("购买战令等级:"..id) + self:sendMessage(ProtoMsgType.FromMsgEnum.TournWaveBountyClaimByDiamondReq, {id = id}, {}, self.rspBuyBountyLevel, BIReport.ITEM_GET_TYPE.TOURN_WAVE_BOUNTY_LEVEL) + end, + } + GFunc.showMessageBox(params) +end + +function TournWaveManager:rspBuyBountyLevel(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.TournWaveData:onBoughtBountyLevel() + end +end + +-- 获取排行榜数据 +function TournWaveManager:reqRankList(turn) + if turn == self.isReqRankList then + return + end + + self.isReqRankList = turn + self:sendMessage(ProtoMsgType.FromMsgEnum.TournWaveRankReq, {turn = turn}, {}, self.rspRankList, nil) +end + +function TournWaveManager:rspRankList(result) + self.isReqRankList = nil + DataManager.TournWaveData:setInReset(false) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.TournWaveData:onGetRankData(result.reqData.turn, result.ranks, result.score, result.own_rank) + end +end + +-- 领取排行榜奖励 +function TournWaveManager:reqRankReward() + self:sendMessage(ProtoMsgType.FromMsgEnum.TournWaveRankClaimRewardReq, {}, {}, self.rspRankReward, BIReport.ITEM_GET_TYPE.TOURN_WAVE_RANK_REWARD) +end + +function TournWaveManager:rspRankReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.TournWaveData:onReceivedRankReward() + GFunc.showRewardBox(result.rewards) + end +end + +return TournWaveManager \ No newline at end of file diff --git a/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua.meta b/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua.meta new file mode 100644 index 00000000..e9136a71 --- /dev/null +++ b/lua/app/module/activity/tourn_wave/tourn_wave_manager.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 96146863570985640a1597f0ab1dbd55 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/maincity/maincity_const.lua b/lua/app/module/maincity/maincity_const.lua index 0d293c36..5e7b90cb 100644 --- a/lua/app/module/maincity/maincity_const.lua +++ b/lua/app/module/maincity/maincity_const.lua @@ -37,6 +37,7 @@ MainCityConst.LEFT_SIDE_BARS = { "app/ui/main_city/cell/side_bar_seven_days_cell", "app/ui/main_city/cell/side_bar_activity_cell", "app/ui/main_city/cell/side_bar_full_moon_cell", + "app/ui/main_city/cell/side_bar_tourn_wave_cell", -- gm放最后一个 "app/ui/main_city/cell/side_bar_gm_cell" } diff --git a/lua/app/ui/activity/fourteen_day/cell/fourteen_day_gift_cell.lua b/lua/app/ui/activity/fourteen_day/cell/fourteen_day_gift_cell.lua index d81ebe95..ac898d28 100644 --- a/lua/app/ui/activity/fourteen_day/cell/fourteen_day_gift_cell.lua +++ b/lua/app/ui/activity/fourteen_day/cell/fourteen_day_gift_cell.lua @@ -1,6 +1,6 @@ -local FourteenDayExchangeCell = class("FourteenDayExchangeCell", BaseCell) +local FourteenDayGiftCell = class("FourteenDayGiftCell", BaseCell) -function FourteenDayExchangeCell:init() +function FourteenDayGiftCell:init() local uiMap = self:getUIMap() self.txLimit = uiMap["fourteen_day_gift_cell.tx_limit"] @@ -19,7 +19,7 @@ function FourteenDayExchangeCell:init() end) end -function FourteenDayExchangeCell:refresh(id) +function FourteenDayGiftCell:refresh(id) self.id = id local cfg = DataManager.ShopData:getActGiftConfig()[self.id] local time = DataManager.FourteenDayData:getGiftRemainTime(self.id) @@ -53,4 +53,4 @@ function FourteenDayExchangeCell:refresh(id) self.txBuy:setText(buyStr) end -return FourteenDayExchangeCell \ No newline at end of file +return FourteenDayGiftCell \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave.meta b/lua/app/ui/activity/tourn_wave.meta new file mode 100644 index 00000000..8ca0493a --- /dev/null +++ b/lua/app/ui/activity/tourn_wave.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 840201af24820dd4387b1ebf46520230 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/activity/tourn_wave/cell.meta b/lua/app/ui/activity/tourn_wave/cell.meta new file mode 100644 index 00000000..18677e99 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb3773d108d0c7c46b23ba556dec5723 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua new file mode 100644 index 00000000..d6a2b1f6 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua @@ -0,0 +1,62 @@ +local TournWaveBountyCell = class("TournWaveBountyCell", BaseCell) + +function TournWaveBountyCell:init() + local uiMap = self:getUIMap() + self.txLevel = uiMap["tourn_wave_bounty_cell.level.tx_level"] + self.rewardCell1 = uiMap["tourn_wave_bounty_cell.reward_cell_1"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + self.rewardCell2 = uiMap["tourn_wave_bounty_cell.reward_cell_2"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + self.rewardCell3 = uiMap["tourn_wave_bounty_cell.reward_cell_3"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) +end + +function TournWaveBountyCell:refresh(level, id) + self.id = id + self.txLevel:setText(DataManager.TournWaveData:getLevelTotalScore(level)) + + local isGet + + isGet = DataManager.TournWaveData:isReceivedBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE) + self.rewardCell1:refreshByConfig(DataManager.TournWaveData:getBountyGradeReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE), isGet, isGet) + self.rewardCell1:showLock(not DataManager.TournWaveData:isBountyGradeUnlock(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE)) + if DataManager.TournWaveData:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE) then + self.rewardCell1.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell1:addClickListener(function() + self:onClickReward(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE) + end) + else + self.rewardCell1.baseObject:removeRedPoint() + self.rewardCell1:addClickListener(nil) + end + + isGet = DataManager.TournWaveData:isReceivedBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1) + self.rewardCell2:refreshByConfig(DataManager.TournWaveData:getBountyGradeReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1), isGet, isGet) + self.rewardCell2:showLock(not DataManager.TournWaveData:isBountyGradeUnlock(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1)) + if DataManager.TournWaveData:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1) then + self.rewardCell2.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell2:addClickListener(function() + self:onClickReward(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1) + end) + else + self.rewardCell2.baseObject:removeRedPoint() + self.rewardCell2:addClickListener(nil) + end + + isGet = DataManager.TournWaveData:isReceivedBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2) + self.rewardCell3:refreshByConfig(DataManager.TournWaveData:getBountyGradeReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2), isGet, isGet) + self.rewardCell3:showLock(not DataManager.TournWaveData:isBountyGradeUnlock(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2)) + if DataManager.TournWaveData:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2) then + self.rewardCell3.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell3:addClickListener(function() + self:onClickReward(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2) + end) + else + self.rewardCell3.baseObject:removeRedPoint() + self.rewardCell3:addClickListener(nil) + end +end + +-- 领取奖励 +function TournWaveBountyCell:onClickReward(grade) + ModuleManager.TournWaveManager:reqBountyReward(self.id, grade) +end + +return TournWaveBountyCell \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua.meta b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua.meta new file mode 100644 index 00000000..7855158c --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0aba106b0cea72f43bb5fe476d750402 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua new file mode 100644 index 00000000..67398365 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua @@ -0,0 +1,56 @@ +local TournWaveGiftCell = class("TournWaveGiftCell", BaseCell) + +function TournWaveGiftCell:init() + local uiMap = self:getUIMap() + + self.txLimit = uiMap["tourn_wave_gift_cell.tx_limit"] + self.txBuy = uiMap["tourn_wave_gift_cell.tx_buy"] + self.imgOff = uiMap["tourn_wave_gift_cell.off_img"] + self.txOff = uiMap["tourn_wave_gift_cell.off_img.tx_off"] + self.rewards = {} + for i = 1, 3 do + table.insert(self.rewards, uiMap["tourn_wave_gift_cell.reward_cell_"..i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + + self:addClickListener(function() + if DataManager.TournWaveData:getGiftRemainTime(self.id) > 0 then + PayManager:purchasePackage(self.id, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end + end) +end + +function TournWaveGiftCell:refresh(id) + self.id = id + local cfg = DataManager.ShopData:getActGiftConfig()[self.id] + local time = DataManager.TournWaveData:getGiftRemainTime(self.id) + + self.txLimit:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_18, time)) + + for idx, reward in ipairs(self.rewards) do + if cfg.reward[idx] then + reward:setVisible(true) + reward:refreshByConfig(cfg.reward[idx]) + else + reward:setVisible(false) + end + end + + local buyStr + if cfg.recharge_id then + self.baseObject:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_6") + self.imgOff:setActive(true) + self.txOff:setText(cfg.value .. "%") + buyStr = GFunc.getFormatPrice(cfg.recharge_id) + else + self.baseObject:setSprite(GConst.ATLAS_PATH.ACT_COMMON, "act_common_bg_5") + self.imgOff:setActive(false) + buyStr = I18N:getGlobalText(I18N.GlobalConst.STR_FREE) + end + + if time <= 0 then + buyStr = I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20) + end + self.txBuy:setText(buyStr) +end + +return TournWaveGiftCell \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua.meta b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua.meta new file mode 100644 index 00000000..febde932 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 08a1c923b2c92e0478372680efbdce07 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua new file mode 100644 index 00000000..d378cb9b --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua @@ -0,0 +1,61 @@ +local TournWaveRankCell = class("TournWaveRankCell", BaseCell) + +local RANK_IMG = {"act_ranking_1", "act_ranking_2", "act_ranking_3"} +local BG = {"common_bg_8", "common_bg_9", "common_bg_10", "common_bg_11"} + +function TournWaveRankCell:init() + local uiMap = self:getUIMap() + + self.txRank = uiMap["tourn_wave_rank_cell.tx_rank"] + self.imgRank = uiMap["tourn_wave_rank_cell.img_rank"] + self.playerHeadCell = uiMap["tourn_wave_rank_cell.player_head_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.PLAYER_HEAD_CELL) + self.txName = uiMap["tourn_wave_rank_cell.tx_name"] + self.txScore = uiMap["tourn_wave_rank_cell.tx_score"] + self.rewards = uiMap["tourn_wave_rank_cell.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["tourn_wave_rank_cell.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end +end + +function TournWaveRankCell:refresh(rank, info) + self.playerHeadCell:refresh(info.avatar, info.avatar_frame) + local name = info.name + if name == nil or #name == 0 then + name = I18N:getGlobalText(I18N.GlobalConst.NEW_PLAYER) + end + self.txName:setText(name) + self.txScore:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_16)..":"..info.score) + + if BG[rank] then + self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, BG[rank]) + else + self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, BG[4]) + end + + if RANK_IMG[rank] then + self.imgRank:setActive(true) + self.imgRank:setSprite(GConst.ATLAS_PATH.ACT_COMMON, RANK_IMG[rank]) + self.txRank:setText(GConst.EMPTY_STRING) + else + self.imgRank:setActive(false) + if info.score > 0 then + self.txRank:setText(rank) + else + self.txRank:setText("--") + end + end + + local rewards = DataManager.TournWaveData:getRewardByRank(rank) + for index, cell in ipairs(self.rewardCells) do + if rewards[index] then + cell:setVisible(true) + cell:refreshByConfig(rewards[index]) + else + cell:setVisible(false) + end + end + self.rewards:RefreshLayout() +end + +return TournWaveRankCell \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua.meta b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua.meta new file mode 100644 index 00000000..5396e915 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8cd3744c1d41e3449b5a254f46c48b86 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua new file mode 100644 index 00000000..82462c11 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua @@ -0,0 +1,61 @@ +local TournWaveRankRewardCell = class("TournWaveRankRewardCell", BaseCell) + +local RANK_IMG = {"act_ranking_1", "act_ranking_2", "act_ranking_3"} +local BG = {"common_bg_8", "common_bg_9", "common_bg_10", "common_bg_11"} + +function TournWaveRankRewardCell:init() + local uiMap = self:getUIMap() + + self.txRank = uiMap["tourn_wave_rank_reward_cell.tx_rank"] + self.imgRank = uiMap["tourn_wave_rank_reward_cell.img_rank"] + self.rewards = uiMap["tourn_wave_rank_reward_cell.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["tourn_wave_rank_reward_cell.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end +end + +function TournWaveRankRewardCell:refresh(index) + local info = DataManager.TournWaveData:getRankCfgByIndex(index) + local ranking1 = info.ranking[1] + local ranking2 = info.ranking[2] + + if BG[ranking1] then + self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, BG[ranking1]) + else + self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, BG[4]) + end + + if RANK_IMG[ranking1] then + self.imgRank:setActive(true) + self.imgRank:setSprite(GConst.ATLAS_PATH.ACT_COMMON, RANK_IMG[ranking1]) + self.txRank:setText(GConst.EMPTY_STRING) + else + self.imgRank:setActive(false) + local rankStr = ranking1 .. "-" + if ranking2 then + rankStr = rankStr .. ranking2 + else + rankStr = rankStr .. "-" + end + if ranking1 == ranking2 then + rankStr = ranking1 + end + if index == #DataManager.TournWaveData:getRankIdList() then + rankStr = ranking1 .. "+" + end + self.txRank:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_BOSS_RUSH_DESC_23, rankStr)) + end + + for index, cell in ipairs(self.rewardCells) do + if info.reward[index] then + cell:setVisible(true) + cell:refreshByConfig(info.reward[index]) + else + cell:setVisible(false) + end + end + self.rewards:RefreshLayout() +end + +return TournWaveRankRewardCell \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua.meta b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua.meta new file mode 100644 index 00000000..1eab447b --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 967b65025941ddd469069a4d210fc121 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua b/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua new file mode 100644 index 00000000..cf9e3095 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua @@ -0,0 +1,110 @@ +local TournWaveBountyComp = class("TournWaveBountyComp", LuaComponent) + +function TournWaveBountyComp:init() + local uiMap = self:getUIMap() + self.txDesc = uiMap["bounty_panel.tx_desc"] + self.btnHelp = uiMap["bounty_panel.tx_desc.btn_help"] + self.txFree = uiMap["bounty_panel.title.free.tx_free"] + self.txCurWave = uiMap["bounty_panel.title.cur_level.tx_level"] + -- 档位1 + self.txBuyed1 = uiMap["bounty_panel.title.buy1.tx_buyed"] + self.btnBuy1 = uiMap["bounty_panel.title.buy1.btn_buy"] + self.txBuy1 = uiMap["bounty_panel.title.buy1.btn_buy.tx_buy"] + -- 档位2 + self.txBuyed2 = uiMap["bounty_panel.title.buy2.tx_buyed"] + self.btnBuy2 = uiMap["bounty_panel.title.buy2.btn_buy"] + self.txBuy2 = uiMap["bounty_panel.title.buy2.btn_buy.tx_buy"] + + self.scrollrectComp = uiMap["bounty_panel.list_bounty"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.progLevel = uiMap["bounty_panel.list_bounty.viewport.content.prog"] + self.imgProgLevel = uiMap["bounty_panel.list_bounty.viewport.content.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.maskLevel = uiMap["bounty_panel.list_bounty.viewport.content.mask_img"] + self.lineLevel = uiMap["bounty_panel.list_bounty.viewport.content.line"] + self.btnBuyLevel = uiMap["bounty_panel.list_bounty.viewport.content.line.btn_buy_level"] + self.txBuyLevelNum = uiMap["bounty_panel.list_bounty.viewport.content.line.btn_buy_level.tx_num"] + self.imgBuyLevelIcon = uiMap["bounty_panel.list_bounty.viewport.content.line.btn_buy_level.icon"] + + self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_DESC_1)) + self.txFree:setText(I18N:getGlobalText(I18N.GlobalConst.STR_FREE)) + self.txBuyed1:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + self.txBuyed2:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + + self.bountyIdList = DataManager.TournWaveData:getBountyIdList() + self.scrollrectComp:addInitCallback(function() + self.maskLevel:getTransform():SetAsLastSibling() + self.lineLevel:getTransform():SetAsLastSibling() + return "app/ui/activity/tourn_wave/cell/tourn_wave_bounty_cell" + end) + self.scrollrectComp:addRefreshCallback(function(index, cell) + cell:refresh(index, self.bountyIdList[index]) + end) + self.scrollrectComp:clearCells() + self.scrollrectComp:refillCells(DataManager.TournWaveData:getBountyMaxLevel()) + + self.btnHelp:addClickListener(function() + local params = { + type = GConst.TipsConst.HELP_TIPS_TYPE.ARENA, + title = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_11), + desc = I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_HELP_1), + } + ModuleManager.TipsManager:showHelpTips(params) + end) + self.btnBuy1:addClickListener(function() + ModuleManager.TournWaveManager:buyBounty(GConst.TournWaveConst.BOUNTY_GIFT_ID_1) + end) + self.btnBuy2:addClickListener(function() + ModuleManager.TournWaveManager:buyBounty(GConst.TournWaveConst.BOUNTY_GIFT_ID_2) + end) + self.btnBuyLevel:addClickListener(function() + ModuleManager.TournWaveManager:reqBuyBountyLevel() + end) + self:bind(DataManager.TournWaveData, "isDirty", function() + self:refresh(true) + end) + self:bind(DataManager.ShopData, "isDirty", function() + self:refresh(true) + end) +end + +function TournWaveBountyComp:refresh(notUpdatePos) + self.btnBuyLevel:setActive(DataManager.TournWaveData:canBuyBountyLevel()) + self.txCurWave:setText(DataManager.TournWaveData:getBountyTotalScore()) + + -- 档位展示 + self.btnBuy1:setActive(not DataManager.TournWaveData:isBountyGradeUnlock(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1)) + self.btnBuy2:setActive(not DataManager.TournWaveData:isBountyGradeUnlock(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2)) + + local gift1 = DataManager.TournWaveData:getBountyGradeGiftCfg(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1) + local gift2 = DataManager.TournWaveData:getBountyGradeGiftCfg(GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2) + self.txBuy1:setText(GFunc.getFormatPrice(gift1.recharge_id)) + self.txBuy2:setText(GFunc.getFormatPrice(gift2.recharge_id)) + self.txBuyLevelNum:setText(GFunc.getRewardNum(DataManager.TournWaveData:getBuyBountyLevelCost())) + GFunc.centerImgAndTx(self.imgBuyLevelIcon, self.txBuyLevelNum, 5) + + -- 等级列表 + local maxLevel = DataManager.TournWaveData:getBountyMaxLevel() + local curLevel = DataManager.TournWaveData:getBountyLevel() + local topRecoveryOffset = self.scrollrectComp:getTopRecoveryOffset() + local downRecoveryOffset = self.scrollrectComp:getDownRecoveryOffset() + local cellHeight = self.scrollrectComp:getCellHeight() + if curLevel >= maxLevel then + self.lineLevel:setVisible(false) + else + self.lineLevel:setVisible(true) + self.lineLevel:setAnchoredPositionY(-topRecoveryOffset - curLevel * cellHeight) + end + self.progLevel:setAnchoredPositionY((topRecoveryOffset + downRecoveryOffset) / 2 - cellHeight / 2 - 10) + self.progLevel:setSizeDeltaY(cellHeight * (maxLevel - 1)) + + self.imgProgLevel.value = DataManager.TournWaveData:getBountyTotalScore() / DataManager.TournWaveData:getLevelTotalScore(#DataManager.TournWaveData:getBountyIdList()) + self.maskLevel:setAnchoredPositionY(-topRecoveryOffset - curLevel * cellHeight) + self.maskLevel:setSizeDeltaY(cellHeight * maxLevel + GConst.UI_SCREEN_HEIGHT) + self.scrollrectComp:updateAllCell() + + if not notUpdatePos then + local rewardLevel = DataManager.TournWaveData:getFirstCanGetBountyRewardLevel() + self.scrollrectComp:moveToIndex(rewardLevel or curLevel) + end +end + +return TournWaveBountyComp \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua.meta b/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua.meta new file mode 100644 index 00000000..bfd0fe98 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_bounty_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a89a4c596ad402b448d81442cc26026f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua b/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua new file mode 100644 index 00000000..d5297006 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua @@ -0,0 +1,28 @@ +local TournWaveGiftComp = class("TournWaveGiftComp", LuaComponent) + +function TournWaveGiftComp:init() + local uiMap = self:getUIMap() + self.scrollrectComp = uiMap["gift_panel.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + + self.scrollrectComp:addInitCallback(function() + return "app/ui/activity/tourn_wave/cell/tourn_wave_gift_cell" + end) + self.scrollrectComp:addRefreshCallback(function(index, cell) + cell:refresh(self.giftList[index].id) + end) + + self:bind(DataManager.TournWaveData, "isDirty", function() + self:refresh() + end) + self:bind(DataManager.ShopData, "isDirty", function() + self:refresh() + end) +end + +function TournWaveGiftComp:refresh() + self.giftList = DataManager.TournWaveData:getGiftIdsSort() + self.scrollrectComp:clearCells() + self.scrollrectComp:refillCells(#self.giftList) +end + +return TournWaveGiftComp \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua.meta b/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua.meta new file mode 100644 index 00000000..2fb749a4 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_gift_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cff71edf36f45d74d849b0c5ebc13b7c +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua b/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua new file mode 100644 index 00000000..8a03e04b --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua @@ -0,0 +1,204 @@ +local TournWaveRankComp = class("TournWaveRankComp", LuaComponent) + +local SHOW_TYPE = { + CUR_RANK = 1, + LAST_RANK = 2, + REWARD = 3, +} + +local RANK_IMG = {"act_ranking_1", "act_ranking_2", "act_ranking_3"} + +function TournWaveRankComp:onClose() + if self.countdownSid then + self.baseObject:unscheduleGlobal(self.countdownSid) + self.countdownSid = nil + end +end + +function TournWaveRankComp:init() + local uiMap = self:getUIMap() + + self.txEmpty = uiMap["rank_panel.tx_empty"] + self.btnHelp = uiMap["rank_panel.btn_help"] + self.btns = uiMap["rank_panel.btns"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.btnCur = uiMap["rank_panel.btns.btn_cur"] + self.txCur = uiMap["rank_panel.btns.btn_cur.tx_cur"] + self.btnLast = uiMap["rank_panel.btns.btn_last"] + self.txLast = uiMap["rank_panel.btns.btn_last.tx_last"] + self.btnReward = uiMap["rank_panel.btns.btn_reward"] + self.txReward = uiMap["rank_panel.btns.btn_reward.tx_reward"] + self.txCountdown = uiMap["rank_panel.tx_countdown"] + self.listRewardComp = uiMap["rank_panel.list_reward"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.listRankComp = uiMap["rank_panel.list_rank"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + -- 自己排名 + self.imgRank = uiMap["rank_panel.my_rank.img_rank"] + self.txRank = uiMap["rank_panel.my_rank.tx_rank"] + self.txName = uiMap["rank_panel.my_rank.tx_name"] + self.txScore = uiMap["rank_panel.my_rank.tx_score"] + self.playerHeadCell = uiMap["rank_panel.my_rank.player_head_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.PLAYER_HEAD_CELL) + self.rewards = uiMap["rank_panel.my_rank.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["rank_panel.my_rank.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + + self.txEmpty:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_BOSS_RUSH_DESC_8)) + self.txCur:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_BTN_1)) + self.txLast:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_BTN_2)) + self.txReward:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_BTN_3)) + self:refreshCountdown() + + self.listRankComp:addInitCallback(function() + return "app/ui/activity/tourn_wave/cell/tourn_wave_rank_cell" + end) + self.listRankComp:addRefreshCallback(function(index, cell) + cell:refresh(index, self.rankDataList[index]) + end) + self.listRewardComp:addInitCallback(function() + return "app/ui/activity/tourn_wave/cell/tourn_wave_rank_reward_cell" + end) + self.listRewardComp:addRefreshCallback(function(index, cell) + cell:refresh(index) + end) + + self.btnHelp:addClickListener(function() + local params = { + type = GConst.TipsConst.HELP_TIPS_TYPE.ARENA, + title = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_11), + desc = I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_HELP_2), + } + ModuleManager.TipsManager:showHelpTips(params) + end) + self.btnCur:addClickListener(function() + ModuleManager.TournWaveManager:reqRankList(DataManager.TournWaveData:getCurRankStep()) + self:refresh(SHOW_TYPE.CUR_RANK) + end) + self.btnLast:addClickListener(function() + ModuleManager.TournWaveManager:reqRankList(DataManager.TournWaveData:getCurRankStep() - 1) + self:refresh(SHOW_TYPE.LAST_RANK) + end) + self.btnReward:addClickListener(function() + self:refresh(SHOW_TYPE.REWARD) + end) + self:bind(DataManager.TournWaveData, "isDirty", function() + self:refresh() + end) +end + +function TournWaveRankComp:refresh(showType) + self.showType = showType or self.showType or SHOW_TYPE.CUR_RANK + + self.btnCur:setSprite(GConst.ATLAS_PATH.COMMON, self.showType == SHOW_TYPE.CUR_RANK and "common_board_130" or "common_board_134") + self.btnLast:setSprite(GConst.ATLAS_PATH.COMMON, self.showType == SHOW_TYPE.LAST_RANK and "common_board_130" or "common_board_134") + self.btnReward:setSprite(GConst.ATLAS_PATH.COMMON, self.showType == SHOW_TYPE.REWARD and "common_board_130" or "common_board_134") + + local curStep = DataManager.TournWaveData:getCurRankStep() + + self.btnLast:setActive(curStep > 1) + self.btns:RefreshLayout() + + if self.showType == SHOW_TYPE.CUR_RANK then + self:showRankList(curStep) + self:showSelfRank(curStep) + elseif self.showType == SHOW_TYPE.LAST_RANK then + local lastStep = curStep - 1 + self:showRankList(lastStep) + self:showSelfRank(lastStep) + elseif self.showType == SHOW_TYPE.REWARD then + self:showRankReward() + self:showSelfRank(curStep) + end +end + +-- 展示自己排名 +function TournWaveRankComp:showSelfRank(step) + local rank = DataManager.TournWaveData:getSelfRank(step) + local score = DataManager.TournWaveData:getSelfScore(step) + + if score > 0 then + if RANK_IMG[rank] then + self.imgRank:setActive(true) + self.imgRank:setSprite(GConst.ATLAS_PATH.ACT_COMMON, RANK_IMG[rank]) + self.txRank:setText(GConst.EMPTY_STRING) + else + self.imgRank:setActive(false) + self.txRank:setText(rank) + end + else + self.imgRank:setActive(false) + self.txRank:setText("--") + end + self.playerHeadCell:refresh() + self.txName:setText(DataManager.PlayerData:getNickname()) + self.txScore:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_16)..":"..score) + + local rewards = DataManager.TournWaveData:getRewardByRank(rank) + for index, cell in ipairs(self.rewardCells) do + if score > 0 and rewards[index] then + cell:setVisible(true) + cell:refreshByConfig(rewards[index]) + if step ~= DataManager.TournWaveData:getCurRankStep() and DataManager.TournWaveData:isReachRankReward() then + cell.baseObject:addRedPoint(50, 50, 0.6) + cell:addClickListener(function() + ModuleManager.TournWaveManager:reqRankReward() + end) + else + cell.baseObject:removeRedPoint() + cell:addClickListener(nil) + end + else + cell:setVisible(false) + end + end + self.rewards:RefreshLayout() +end + +-- 展示榜单 +function TournWaveRankComp:showRankList(step) + self.listRankComp:getBaseObject():setActive(true) + self.listRewardComp:getBaseObject():setActive(false) + + self.rankDataList = DataManager.TournWaveData:getRankListData(step) + if self.rankDataList == nil then + self.rankDataList = {} + end + self.listRankComp:clearCells() + self.listRankComp:refillCells(#self.rankDataList) + self.txEmpty:setActive(#self.rankDataList <= 0) +end + +-- 展示排行榜奖励 +function TournWaveRankComp:showRankReward() + self.listRankComp:getBaseObject():setActive(false) + self.listRewardComp:getBaseObject():setActive(true) + self.txEmpty:setActive(false) + + self.rankIdList = DataManager.TournWaveData:getRankIdList() + self.listRewardComp:clearCells() + self.listRewardComp:refillCells(#self.rankIdList) +end + +-- 刷新倒计时 +function TournWaveRankComp:refreshCountdown() + if self.countdownSid then + self.baseObject:unscheduleGlobal(self.countdownSid) + end + + local str = DataManager.TournWaveData:isFinalDay() and I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_DESC_3) or I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_DESC_2) + + self.txCountdown:setText(str .. Time:formatNumTimeStr(DataManager.TournWaveData:getCurRankStepRemainTime())) + self.countdownSid = self.baseObject:scheduleGlobal(function() + local time = DataManager.TournWaveData:getCurRankStepRemainTime() + if time >= 0 then + self.txCountdown:setText(str .. Time:formatNumTimeStr(time)) + else + if self.showType == SHOW_TYPE.CUR_RANK then + ModuleManager.TournWaveManager:reqRankList(DataManager.TournWaveData:getCurRankStep()) + elseif self.showType == SHOW_TYPE.LAST_RANK then + ModuleManager.TournWaveManager:reqRankList(DataManager.TournWaveData:getCurRankStep() - 1) + end + end + end, 1) +end + +return TournWaveRankComp \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua.meta b/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua.meta new file mode 100644 index 00000000..d996fef2 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_rank_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f1a089a3d69cb5c43954d024f28ce4e8 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua b/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua new file mode 100644 index 00000000..6e68d62b --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua @@ -0,0 +1,201 @@ +local TournWaveUI = class("TournWaveUI", BaseUI) + +local COMP_BOUNTY = "app/ui/activity/tourn_wave/tourn_wave_bounty_comp" +local COMP_RANK = "app/ui/activity/tourn_wave/tourn_wave_rank_comp" +local COMP_GIFT = "app/ui/activity/tourn_wave/tourn_wave_gift_comp" + +function TournWaveUI:isFullScreen() + return false +end + +function TournWaveUI:getPrefabPath() + return "assets/prefabs/ui/activity/tourn_wave/tourn_wave_ui.prefab" +end + +function TournWaveUI:onPressBackspace() + self:closeUI() +end + +function TournWaveUI:onClose() + if self.compRank ~= nil then + self.compRank:refresh() + end + if self.countdownSid then + self.txCountdown:unscheduleGlobal(self.countdownSid) + end +end + +function TournWaveUI:ctor(param) + if param then + self.panelType = param + else + self.panelType = GConst.TournWaveConst.PANEL_TYPE.BOUNTY -- 默认进入任务页签 + end +end + +function TournWaveUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + + -- 通用 + self.txTitle = uiMap["tourn_wave_ui.common.img_title.tx_title"] + self.btnClose = uiMap["tourn_wave_ui.common.btn_close"] + self.bg = uiMap["tourn_wave_ui.common.bg"] + self.countdown = uiMap["tourn_wave_ui.common.countdown"] + self.txCountdown = uiMap["tourn_wave_ui.common.countdown.tx_countdown"] + -- 子界面 + self.bountyPanel = uiMap["tourn_wave_ui.bounty_panel"] + self.rankPanel = uiMap["tourn_wave_ui.rank_panel"] + self.giftPanel = uiMap["tourn_wave_ui.gift_panel"] + -- 战令标签 + self.btnBounty = uiMap["tourn_wave_ui.common.btns.btn_bounty"] + self.txBounty1 = uiMap["tourn_wave_ui.common.btns.btn_bounty.tx_btn"] + self.txBounty2 = uiMap["tourn_wave_ui.common.btns.btn_bounty.select.tx_select"] + self.selectBounty = uiMap["tourn_wave_ui.common.btns.btn_bounty.select"] + -- 排行榜标签 + self.btnRank = uiMap["tourn_wave_ui.common.btns.btn_rank"] + self.txRank1 = uiMap["tourn_wave_ui.common.btns.btn_rank.tx_btn"] + self.txRank2 = uiMap["tourn_wave_ui.common.btns.btn_rank.select.tx_select"] + self.selectRank = uiMap["tourn_wave_ui.common.btns.btn_rank.select"] + -- 礼包标签 + self.btnGift = uiMap["tourn_wave_ui.common.btns.btn_gift"] + self.txGift1 = uiMap["tourn_wave_ui.common.btns.btn_gift.tx_btn"] + self.txGift2 = uiMap["tourn_wave_ui.common.btns.btn_gift.select.tx_select"] + self.selectGift = uiMap["tourn_wave_ui.common.btns.btn_gift.select"] + + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_TOURN_WAVE_TITLE)) + self.txBounty1:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) + self.txBounty2:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) + self.txRank1:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_5)) + self.txRank2:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_5)) + self.txGift1:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_4)) + self.txGift2:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_4)) + + self.btnBounty:addClickListener(function() + self.panelType = GConst.TournWaveConst.PANEL_TYPE.BOUNTY + self:onRefresh() + end) + self.btnRank:addClickListener(function() + self.panelType = GConst.TournWaveConst.PANEL_TYPE.RANK + self:onRefresh() + end) + self.btnGift:addClickListener(function() + self.panelType = GConst.TournWaveConst.PANEL_TYPE.GIFT + self:onRefresh() + end) + self.btnClose:addClickListener(function() + self:closeUI() + end) + self:addEventListener(EventManager.CUSTOM_EVENT.ACTIVITY_TOURN_WAVE_END, function() + self:closeUI() + end) + self:bind(DataManager.TournWaveData, "isDirty", function() + -- 检查更新数据 + if DataManager.TournWaveData:getIsInReset() and self.panelType == GConst.TournWaveConst.PANEL_TYPE.RANK then + self:onRefresh() + else + self:refreshRedPoint() + end + end) +end + +function TournWaveUI:onRefresh() + -- 倒计时 + if self.countdownSid then + self.txCountdown:unscheduleGlobal(self.countdownSid) + end + self.txCountdown:setText(Time:formatNumTimeStr(DataManager.TournWaveData:getEndRemainTime())) + self.countdownSid = self.txCountdown:scheduleGlobal(function() + local time = DataManager.TournWaveData:getEndRemainTime() + if time >= 0 then + self.txCountdown:setText(Time:formatNumTimeStr(time)) + end + end, 1) + + if self.panelType == GConst.TournWaveConst.PANEL_TYPE.BOUNTY then + self:showBountyInfo() + elseif self.panelType == GConst.TournWaveConst.PANEL_TYPE.RANK then + self:showRankInfo() + elseif self.panelType == GConst.TournWaveConst.PANEL_TYPE.GIFT then + self:showGiftInfo() + end + self:refreshRedPoint() +end + +-- 刷新标签红点 +function TournWaveUI:refreshRedPoint() + if DataManager.TournWaveData:hasBountyRedPoint() then + self.btnBounty:addRedPoint(-75, -5, 0.6) + else + self.btnBounty:removeRedPoint() + end + if DataManager.TournWaveData:hasRankRedPoint() then + self.btnRank:addRedPoint(-75, -5, 0.6) + else + self.btnRank:removeRedPoint() + end + if DataManager.TournWaveData:hasGiftRedPoint() then + self.btnGift:addRedPoint(-75, -5, 0.6) + else + self.btnGift:removeRedPoint() + end +end + +function TournWaveUI:showBountyInfo() + self.bountyPanel:setActive(true) + self.selectBounty:setActive(true) + self.rankPanel:setActive(false) + self.selectRank:setActive(false) + self.giftPanel:setActive(false) + self.selectGift:setActive(false) + self.countdown:setActive(true) + self.bg:setActive(true) + + if not self.compBounty then + self.bountyPanel:initPrefabHelper() + self.bountyPanel:genAllChildren() + self.compBounty = self.bountyPanel:addLuaComponent(COMP_BOUNTY) + end + + self.compBounty:refresh() +end + +function TournWaveUI:showRankInfo() + self.bountyPanel:setActive(false) + self.selectBounty:setActive(false) + self.rankPanel:setActive(true) + self.selectRank:setActive(true) + self.giftPanel:setActive(false) + self.selectGift:setActive(false) + self.countdown:setActive(false) + self.bg:setActive(false) + + ModuleManager.TournWaveManager:reqRankList(DataManager.TournWaveData:getCurRankStep()) + if not self.compRank then + self.rankPanel:initPrefabHelper() + self.rankPanel:genAllChildren() + self.compRank = self.rankPanel:addLuaComponent(COMP_RANK) + end + + self.compRank:refresh() +end + +function TournWaveUI:showGiftInfo() + self.bountyPanel:setActive(false) + self.selectBounty:setActive(false) + self.rankPanel:setActive(false) + self.selectRank:setActive(false) + self.giftPanel:setActive(true) + self.selectGift:setActive(true) + self.countdown:setActive(true) + self.bg:setActive(false) + + if not self.compGift then + self.giftPanel:initPrefabHelper() + self.giftPanel:genAllChildren() + self.compGift = self.giftPanel:addLuaComponent(COMP_GIFT) + end + + self.compGift:refresh() +end + +return TournWaveUI \ No newline at end of file diff --git a/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua.meta b/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua.meta new file mode 100644 index 00000000..9a235a03 --- /dev/null +++ b/lua/app/ui/activity/tourn_wave/tourn_wave_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c3c48b9494daada49a21717ce70dd4a8 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua b/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua new file mode 100644 index 00000000..66330b9b --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua @@ -0,0 +1,46 @@ +local SideBarBaseCellComp = require "app/ui/main_city/cell/side_bar_base_cell" +local SideBarTournWaveCell = class("SideBarTournWaveCell", SideBarBaseCellComp) + +function SideBarTournWaveCell:getModuleKey() + return ModuleManager.MODULE_KEY.ACTIVITY +end + +function SideBarTournWaveCell:getIsOpen() + return DataManager.TournWaveData:isOpen() and DataManager.TournWaveData:isActiveTime() +end + +function SideBarTournWaveCell:getSpineName() + return "ui_main_btn_act_fullmoon" +end + +function SideBarTournWaveCell:onClick() + ModuleManager.TournWaveManager:showActMainUI() +end + +function SideBarTournWaveCell:getIsShowRedPoint() + return DataManager.TournWaveData:hasEntryRedPoint() +end + +function SideBarTournWaveCell:onRefresh() + self.timeBg:setVisible(true) + self:_refreshTime() +end + +function SideBarTournWaveCell:updateTime() + if self:getIsOpen() then + self:_refreshTime() + else + self:closeBtn() + end +end + +function SideBarTournWaveCell:_refreshTime() + local remainTime = DataManager.TournWaveData:getEndRemainTime() + if remainTime >= 0 then + self.timeTx:setText(GFunc.getTimeStr(remainTime)) + else + self.timeTx:setText("00:00:00") + end +end + +return SideBarTournWaveCell \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua.meta b/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua.meta new file mode 100644 index 00000000..22d57ac9 --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_tourn_wave_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2a27a3856b8ae854a867d2264ee54a70 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/activity/fourteen_day/fourteen_day_data.lua b/lua/app/userdata/activity/fourteen_day/fourteen_day_data.lua index 0767ba9e..690dc809 100644 --- a/lua/app/userdata/activity/fourteen_day/fourteen_day_data.lua +++ b/lua/app/userdata/activity/fourteen_day/fourteen_day_data.lua @@ -624,7 +624,7 @@ end function FourteenDayData:getGiftRemainTime(giftId) if self:isFreeGift(giftId) then local giftData = DataManager.ShopData:getActGiftDetailData(PayManager.PURCHARSE_TYPE.ACT_GIFT, giftId) - if giftData and giftData.latest_buy_at then + if giftData and giftData.buy_count > 0 and giftData.latest_buy_at then if Time:getBeginningOfOneDay(Time:getServerTime()) == Time:getBeginningOfOneDay(giftData.latest_buy_at // 1000) then return 0 end diff --git a/lua/app/userdata/activity/tourn_arena.meta b/lua/app/userdata/activity/tourn_arena.meta new file mode 100644 index 00000000..5e1c9e09 --- /dev/null +++ b/lua/app/userdata/activity/tourn_arena.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a333fbe6fb2c2ed43aac6d319fb913fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/userdata/activity/tourn_wave.meta b/lua/app/userdata/activity/tourn_wave.meta new file mode 100644 index 00000000..0b8cef7c --- /dev/null +++ b/lua/app/userdata/activity/tourn_wave.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ef93c36d00ed70449ca5eddabc0d378 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua b/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua new file mode 100644 index 00000000..8ec145af --- /dev/null +++ b/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua @@ -0,0 +1,571 @@ +local TournWaveData = class("TournWaveData", BaseData) + +function TournWaveData:ctor() + self.data.isDirty = false + + self.bountyLevel = 1 + self.bountyExp = 0 + self.bountyCollected = {} + self.rankStep = 1 + self.rankStepEndTime = 0 + self.rankCollected = {} +end + +function TournWaveData:clear() + DataManager:unregisterTryOpenFunc("TournWaveData") + DataManager:unregisterCrossDayFunc("TournWaveData") +end + +-- 设置活动数据 +function TournWaveData:setActStatus(data) + data = data or GConst.EMPTY_TABLE + + self.actId = data.id + self.startTime = GFunc.formatTimeStep(data.start_at) + self.endTime = GFunc.formatTimeStep(data.end_at) + + if EDITOR_MODE then + Logger.logHighlight("波次锦标赛活动开启时间:") + Logger.printTable(data) + end + + if not self:isOpen() then + -- 活动开启 + DataManager:registerTryOpenFunc("TournWaveData", function() + if not self:isOpen() then + return + end + if not self:isActiveTime() then + return + end + + DataManager:unregisterTryOpenFunc("TournWaveData") + ModuleManager.TournWaveManager:reqActData() + end) + end +end + +-- 获取活动数据成功 +function TournWaveData:onGetActData(data) + data = data or GConst.EMPTY_TABLE + if EDITOR_MODE then + Logger.logHighlight("波次锦标赛活动数据:") + Logger.printTable(data) + end + + -- 战令 + self.bountyLevel = data.level + self.bountyExp = data.exp + self.bountyCollected = data.collected + -- 排行榜 + self.rankStep = data.present_turn + self.rankStepEndTime = GFunc.formatTimeStep(data.turn_end_at) + self.rankCollected = data.rank_reward_claimed + + -- 跨天 + DataManager:registerCrossDayFunc("TournWaveData", function() + if not self:isOpen() then + return + end + if not self:isActiveTime() then + return + end + + self.ranks = nil + self:setInReset(true) + self:initTaskListener() + self:setDirty() + end) + + self:initTaskListener() + self:setDirty() +end + +function TournWaveData:initTaskListener() + if not self:isOpen() then + return + end + if not self:isActiveTime() then + ModuleManager.TaskManager:unRegisterAllModuleTask("TournWaveData") + return + end + + ModuleManager.TaskManager:registerTask("TournWaveData", GConst.TaskConst.TASK_TYPE.X_BATTLE_PASS_WAVE, function(count) + self:addWaveCount(count) + end) +end + +function TournWaveData:setInReset(isInReset) + self.isInReset = isInReset +end + +function TournWaveData:getIsInReset() + return self.isInReset +end + +function TournWaveData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function TournWaveData:isOpen() + if GFunc.isShenhe() then + return false + end + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.ACTIVITY, true) then + return false + end + return true +end + +-- 是否在活动配置时间内 +function TournWaveData:isActiveTime() + if self.startTime == nil or self.startTime <= 0 then + return false + end + if self.endTime == nil or self.endTime <= 0 then + return false + end + return Time:getServerTime() >= self.startTime and Time:getServerTime() <= self.endTime +end + +-- 获取活动开启剩余时间(秒) +function TournWaveData:getStartRemainTime() + if self.startTime == nil or self.startTime <= 0 then + return 0 + end + return self.startTime - Time:getServerTime() +end + +-- 获取活动结束剩余时间(秒) +function TournWaveData:getEndRemainTime() + if self.endTime == nil or self.endTime <= 0 then + return 0 + end + return self.endTime - Time:getServerTime() +end + +-- 当前为活动第几天 +function TournWaveData:getActDay() + local days = Time:getDistanceDays(self.startTime) + if days < 0 then + days = -days + end + return days + 1 +end + +-- 是否有入口红点 +function TournWaveData:hasEntryRedPoint() + return self:hasBountyRedPoint() or self:hasRankRedPoint() or self:hasGiftRedPoint() +end + +-- 战令-------------------------------------------------------------------------------------------------- + +-- 是否有战令红点 +function TournWaveData:hasBountyRedPoint() + if self:getFirstCanGetBountyRewardLevel() ~= nil then + return true + end + + return false +end + +-- 获取首个可领取奖励的战令等级 +function TournWaveData:getFirstCanGetBountyRewardLevel() + local curLevel = self:getBountyLevel() + + for level, data in ipairs(self:getBountyIdList()) do + if level > curLevel then + break + end + + if self:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE) then + return true + end + if self:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1) then + return true + end + if self:canGetBountyReward(level, GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2) then + return true + end + end + + return nil +end + +-- +function TournWaveData:getBountyIdList() + if not self.bountyIdList then + self.bountyIdList = GFunc.getTable(DataManager:getActivityBountyLevelByActId(self.actId) or {}) + table.sort(self.bountyIdList, function(a, b) + return a < b + end) + end + return self.bountyIdList +end + +-- 获取对应等级的配置 +function TournWaveData:getBountyCfgByLevel(level) + return ConfigManager:getConfig("activity_bounty_level")[self:getBountyIdList()[level]] +end + +-- 获取战令档位礼包配置 +function TournWaveData:getBountyGradeGiftCfg(gradeType) + if gradeType == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1 then + return DataManager.ShopData:getActGiftConfig()[GConst.TournWaveConst.BOUNTY_GIFT_ID_1] + elseif gradeType == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2 then + return DataManager.ShopData:getActGiftConfig()[GConst.TournWaveConst.BOUNTY_GIFT_ID_2] + end +end + +-- 战令档位是否已解锁 +function TournWaveData:isBountyGradeUnlock(grade) + if grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE then + return true + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1 then + return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.TournWaveConst.BOUNTY_GIFT_ID_1) > 0 + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2 then + return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.TournWaveConst.BOUNTY_GIFT_ID_2) > 0 + end + return false +end + +-- 战令最大等级 +function TournWaveData:getBountyMaxLevel() + return #self:getBountyIdList() +end + +-- 获取当前战令等级 +function TournWaveData:getBountyLevel() + if self.bountyLevel <= self:getBountyMaxLevel() then + return self.bountyLevel + else + return self:getBountyMaxLevel() + end +end + +-- 获取当前等级战令积分 +function TournWaveData:getBountyLevelScore() + return self.bountyExp +end + +-- 获取当前总波次 +function TournWaveData:getBountyTotalScore() + local total = self:getBountyLevelScore() + + for l = 1, self:getBountyLevel() - 1 do + total = total + (self:getBountyCfgByLevel(l).exp or 0) + end + + return total +end + +-- 获取等级所需总积分 +function TournWaveData:getLevelTotalScore(level) + local total = 0 + + if level > 1 then + for l = 1, level - 1 do + total = total + (self:getBountyCfgByLevel(l).exp or 0) + end + end + + return total +end + +-- 获取当前升级所需总积分 +function TournWaveData:getBountyUpgradeScore() + return self:getBountyCfgByLevel(self:getBountyLevel()).exp or 0 +end + +-- 是否满足购买战令等级的条件 +function TournWaveData:canBuyBountyLevel() + if self:getBountyLevel() >= self:getBountyMaxLevel() then + return false + end + + local lastDay = Time:getDistanceDays(self.endTime) + if lastDay < 0 then + lastDay = -lastDay + end + return self:getActDay() >= lastDay +end + +-- 购买战令等级的消耗 +function TournWaveData:getBuyBountyLevelCost() + return GFunc.getConstReward("activity_bounty_cost") +end + +-- 获取战令档位奖励 +function TournWaveData:getBountyGradeReward(level, grade) + local cfg = self:getBountyCfgByLevel(level) + local result + if cfg then + if grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE then + result = cfg.reward + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1 then + result = cfg.reward_pro + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2 then + result = cfg.reward_pro_max + end + end + return result +end + +-- 战令奖励可领取 +function TournWaveData:canGetBountyReward(level, grade) + return self:isReachBountyReward(level, grade) and not self:isReceivedBountyReward(level, grade) +end + +-- 战令奖励是否满足领取条件 +function TournWaveData:isReachBountyReward(level, grade) + local curLevel = self:getBountyLevel() + if curLevel >= level then + return self:isBountyGradeUnlock(grade) + else + return false + end +end + +-- 战令奖励是否已领取 +function TournWaveData:isReceivedBountyReward(level, grade) + local id = self:getBountyIdList()[level] + if self.bountyCollected[id] == nil then + return false + end + + if grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE then + return self.bountyCollected[id].normal + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1 then + return self.bountyCollected[id].superior + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2 then + return self.bountyCollected[id].superior_max + end +end + +-- 战令奖励领取成功 +function TournWaveData:onReceivedBountyReward(successMap) + Logger.logHighlight("战令奖励领取成功") + Logger.printTable(successMap) + for id, grade in pairs(successMap) do + if self.bountyCollected[id] == nil then + self.bountyCollected[id] = {} + end + + if grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.FREE then + self.bountyCollected[id].normal = true + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY1 then + self.bountyCollected[id].superior = true + elseif grade == GConst.TournWaveConst.BOUNTY_GRADE_TYPE.PAY2 then + self.bountyCollected[id].superior_max = true + end + end + + self:setDirty() +end + +-- 解锁战令等级成功 +function TournWaveData:onBoughtBountyLevel() + self.bountyLevel = self.bountyLevel + 1 + self:setDirty() +end + +-- 战令波次改变 +function TournWaveData:addWaveCount(count) + self.bountyExp = self.bountyExp + count + + local upExp = self:getBountyUpgradeScore() + if upExp > 0 and self.bountyExp >= upExp then + self.bountyExp = self.bountyExp - upExp + self.bountyLevel = self.bountyLevel + 1 + end + + self:setDirty() +end + +-- 排行榜-------------------------------------------------------------------------------------------------- + +-- 是否有排行榜红点 +function TournWaveData:hasRankRedPoint() + for rank, id in ipairs(self:getRankIdList()) do + if self:isReachRankReward(rank) and not self:isReceivedRankReward(rank) then + return true + end + end + + return false +end + +-- +function TournWaveData:getRankIdList() + if not self.rankIdList then + self.rankIdList = GFunc.getTable(DataManager:getActivityRankByActId(self.actId) or {}) + table.sort(self.rankIdList, function(a, b) + return a < b + end) + end + return self.rankIdList +end + +-- 获取排行榜的配置 +function TournWaveData:getRankCfgByIndex(index) + return ConfigManager:getConfig("activity_rank")[self:getRankIdList()[index]] +end + +-- 是否是最后一次分组 +function TournWaveData:isFinalDay() + return self:getEndRemainTime() <= 86400 +end + +-- 获取当前排行榜阶段 +function TournWaveData:getCurRankStep() + return self.rankStep +end + +-- 获取排名相应的奖励 +function TournWaveData:getRewardByRank(rank) + for index, id in ipairs(self:getRankIdList()) do + local cfg = ConfigManager:getConfig("activity_rank")[id] + if rank >= cfg.ranking[1] and rank <= cfg.ranking[2] then + return cfg.reward + end + end + return nil +end + +-- 获取当前排行榜阶段剩余时间 +function TournWaveData:getCurRankStepRemainTime() + return self.rankStepEndTime - Time:getServerTime() +end + +-- 获取排行榜数据 +function TournWaveData:getRankListData(step) + if self.ranks == nil then + return nil + end + + return self.ranks[step] and self.ranks[step].ranks or {} +end + +-- 获取自己的排名 +function TournWaveData:getSelfRank(step) + if self.ranks == nil or self.ranks[step] == nil then + return 0 + end + + return self.ranks[step].ownRank +end + +-- 获取自己的积分 +function TournWaveData:getSelfScore(step) + if self.ranks == nil or self.ranks[step] == nil then + return 0 + end + + return self.ranks[step].ownSorce +end + +-- 是否满足段位奖励条件 +function TournWaveData:isReachRankReward() + if self:getCurRankStep() == 1 then + return false + end + + local lastRank = self:getSelfRank(self:getCurRankStep() - 1) + if lastRank and lastRank <= 0 then + return false + end + return not self:isReceivedRankReward() +end + +-- 是否已领取段位奖励 +function TournWaveData:isReceivedRankReward() + if self:getCurRankStep() == 1 then + return false + end + + local received = self.rankCollected[self:getCurRankStep() - 1] + return received ~= nil and received or false +end + +-- 获取排行榜数据成功 +function TournWaveData:onGetRankData(step, ranks, score, ownRank) + if self.ranks == nil then + self.ranks = {} + end + self.ranks[step] = {ownRank = ownRank, ownSorce = score, ranks = ranks} + + self:setDirty() +end + +-- 领取排名奖励成功 +function TournWaveData:onReceivedRankReward() + self.rankCollected[self:getCurRankStep() - 1] = true + + self:setDirty() +end + + +-- 礼包--------------------------------------------------------------------------------------------------- + +-- 是否有礼包红点 +function TournWaveData:hasGiftRedPoint() + local ids = GConst.TournWaveConst.GIFT_IDS + for index, id in pairs(ids) do + if self:isFreeGift(id) and self:getGiftRemainTime(id) > 0 then + return true + end + end + + return false +end + +-- 获取礼包配置 +function TournWaveData:getGiftCfg(giftId) + return DataManager.ShopData:getActGiftConfig()[giftId] +end + +-- 是否是免费礼包 +function TournWaveData:isFreeGift(id) + return DataManager.ShopData:getActGiftConfig()[id].recharge_id == nil +end + +-- 获取礼包id列表 +function TournWaveData:getGiftIdsSort() + local result = {} + local ids = GConst.TournWaveConst.GIFT_IDS + for index, id in ipairs(ids) do + local sort = id + 10000000000 + + if self:isFreeGift(id) then + sort = sort - 10000000 + end + + if self:getGiftRemainTime(id) > 0 then + sort = sort - 10000 + end + table.insert(result, {id = id, sort = sort}) + end + + table.sort(result, function (a, b) + return a.sort < b.sort + end) + + return result +end + +-- 礼包剩余购买次数 +function TournWaveData:getGiftRemainTime(giftId) + if self:isFreeGift(giftId) then + local giftData = DataManager.ShopData:getActGiftDetailData(PayManager.PURCHARSE_TYPE.ACT_GIFT, giftId) + if giftData and giftData.buy_count > 0 and giftData.latest_buy_at then + if Time:getBeginningOfOneDay(Time:getServerTime()) == Time:getBeginningOfOneDay(giftData.latest_buy_at // 1000) then + return 0 + end + end + return 1 + else + return DataManager.ShopData:getGiftRemainBuyNum(giftId) + end +end + +return TournWaveData \ No newline at end of file diff --git a/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua.meta b/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua.meta new file mode 100644 index 00000000..56c052b1 --- /dev/null +++ b/lua/app/userdata/activity/tourn_wave/tourn_wave_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 788cab35c3ef4184386df9d940a38560 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}