diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index 8e3de99c..2c6b8ec2 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -121,6 +121,8 @@ BIReport.ITEM_GET_TYPE = { ARENA_CHALLENGE = "ArenaChallenge", ARENA_SETTLEMENT = "ArenaSettlement", ARENA_GIFT = "ArenaGift", + ACTIVITY_BOUNTY_REWARD = "ActivityBountyReward", + ACTIVITY_BOUNTY_LEVEL = "ActivityBountyLevel", COLLECTION_HERO_REWARD = "CollectionHeroReward", DUNGEON_WEAPON_CHALLENGE = "DungeonWeaponChallenge", DUNGEON_WEAPON_END = "DungeonWeaponEnd", @@ -136,6 +138,7 @@ BIReport.ITEM_GET_TYPE = { EQUIP_UPGRADE = "EquipUpgrade", ARMOR_UPGRADE = "ArmorUpgrade", OFFLINE_RECOVERY = "OfflineRecovery", + ACT_SUMMER = "ActSummer", } BIReport.ADS_CLICK_TYPE = { @@ -203,6 +206,7 @@ BIReport.GIFT_TYPE = { ARMOR_FUND = "ArmorFund", WEAPON_GIFT = "WeaponGift", ARMOR_GIFT = "ArmorGift", + ACT_SUMMER = "ActSummer", } BIReport.COIN_TYPE = { diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index fd8812d3..832c455f 100644 --- a/lua/app/common/data_manager.lua +++ b/lua/app/common/data_manager.lua @@ -150,7 +150,6 @@ function DataManager:initWithServerData(data) self.CollectionData:init(data.collection) self.TutorialData:init(data.guide) self.MailData:init(data.mail_info) - self.ActivityData:init() self.GoldPigData:init(data.pig, true) self.BountyData:init(data.bounty) self.ArenaBountyData:init(data.arena_bounty) @@ -166,6 +165,8 @@ function DataManager:initWithServerData(data) self.ShopData:initGrowUpGift(data.act_grow_up_gift2) -- 成长礼包 self.ShopData:initLevelUpGift(data.act_level_up_gift) -- 助力/金币礼包 self.ShopData:initIntroductGift(data.act_introductory_gift) -- 入门礼包 + -- 活动要在礼包后初始化 + self.ActivityData:init() -- 商店礼包都初始化完了后检查一下每日红点 self.ShopData:checkShopDiscountRedPoint() self.ShopData:checkLoginPopInfo() -- 需要写在shopdata所有初始化之后 diff --git a/lua/app/common/event_manager.lua b/lua/app/common/event_manager.lua index 9c257c9a..65fee41a 100644 --- a/lua/app/common/event_manager.lua +++ b/lua/app/common/event_manager.lua @@ -59,6 +59,7 @@ EventManager.CUSTOM_EVENT = { -- BORAD_TOUCH_BEGIN = "BORAD_TOUCH_BEGIN", -- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER" DUNGEON_ARMOR_TO_TARGET_ID = "DUNGEON_ARMOR_TO_TARGET_ID", + ACTIVITY_SUMMER_END = "ACTIVITY_SUMMER_END", } -- 此方法不能直接在外部调用,请使用例如BaseUI,BaseModule等封装好的接口 diff --git a/lua/app/common/local_data.lua b/lua/app/common/local_data.lua index 20b88380..47e7f3ce 100644 --- a/lua/app/common/local_data.lua +++ b/lua/app/common/local_data.lua @@ -38,6 +38,8 @@ local LOCAL_DATA_KEY = { ARENA_TODAY_BATTLE_COUNT = "ARENA_TODAY_BATTLE_COUNT", TRIAL_HERO = "TRIAL_HERO", BATTLE_SNAPSHOT = "BATTLE_SNAPSHOT", + ACTIVITY_SUMMER_TODAY_SKIN = "ACTIVITY_SUMMER_TODAY_SKIN", + ACTIVITY_SUMMER_TODAY_HERO = "ACTIVITY_SUMMER_TODAY_HERO", } LocalData.KEYS = LOCAL_DATA_KEY @@ -447,4 +449,20 @@ function LocalData:getBattleSnapshot() return json.decode(dealedSnapshot) end +function LocalData:getTodayActSummerWatchedSkin() + return self:getInt(LOCAL_DATA_KEY.ACTIVITY_SUMMER_TODAY_SKIN .. Time:getBeginningOfServerToday(), 0) == 1 +end + +function LocalData:recordTodayActSummerWatchedSkin() + self:setInt(LOCAL_DATA_KEY.ACTIVITY_SUMMER_TODAY_SKIN .. Time:getBeginningOfServerToday(), 1) +end + +function LocalData:getTodayActSummerWatchedHero() + return self:getInt(LOCAL_DATA_KEY.ACTIVITY_SUMMER_TODAY_HERO .. Time:getBeginningOfServerToday(), 0) == 1 +end + +function LocalData:recordTodayActSummerWatchedHero() + self:setInt(LOCAL_DATA_KEY.ACTIVITY_SUMMER_TODAY_HERO .. Time:getBeginningOfServerToday(), 1) +end + return LocalData \ No newline at end of file diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua index 778dfb7a..377b610d 100644 --- a/lua/app/common/module_manager.lua +++ b/lua/app/common/module_manager.lua @@ -80,6 +80,7 @@ ModuleManager.MODULE_KEY = { STORE_BOX_3_OPEN = "store_box_3_open", BOUNTY_OPEN = "bounty_open", IDLE_DROP = "idle_drop", + ACTIVITY = "activity_open", MALL = "mall", -- 商城 MALL_DAILY = "mall_daily", -- 每日商城 DAILY_CHALLENGE = "daily_challenge", -- 每日挑战 diff --git a/lua/app/common/pay_manager.lua b/lua/app/common/pay_manager.lua index 5fc9f996..76617cdb 100644 --- a/lua/app/common/pay_manager.lua +++ b/lua/app/common/pay_manager.lua @@ -22,6 +22,7 @@ PayManager.PURCHARSE_ACT_TYPE = { ARMOR_FUND = 10, WEAPON_GIFT = 11, ARMOR_GIFT = 12, + ACT_SUMMER = 13, } PayManager.PURCHARSE_TYPE_CONFIG = { @@ -46,6 +47,7 @@ PayManager.BI_ITEM_GET_TYPE = { [PayManager.PURCHARSE_ACT_TYPE.ARMOR_FUND] = BIReport.ITEM_GET_TYPE.ARMOR_FUND, [PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT] = BIReport.ITEM_GET_TYPE.WEAPON_GIFT, [PayManager.PURCHARSE_ACT_TYPE.ARMOR_GIFT] = BIReport.ITEM_GET_TYPE.ARMOR_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.ACT_SUMMER] = BIReport.ITEM_GET_TYPE.ACT_SUMMER, }, [PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG] = BIReport.ITEM_GET_TYPE.GOLD_PIG, [PayManager.PURCHARSE_TYPE.MALL_TREASURE] = BIReport.ITEM_GET_TYPE.MALL_TREASURE, @@ -67,6 +69,7 @@ PayManager.BI_GIFT_TYPE = { [PayManager.PURCHARSE_ACT_TYPE.ARMOR_FUND] = BIReport.GIFT_TYPE.ARMOR_FUND, [PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT] = BIReport.GIFT_TYPE.WEAPON_GIFT, [PayManager.PURCHARSE_ACT_TYPE.ARMOR_GIFT] = BIReport.GIFT_TYPE.ARMOR_GIFT, + [PayManager.PURCHARSE_ACT_TYPE.ACT_SUMMER] = BIReport.GIFT_TYPE.ACT_SUMMER, }, [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/common/time.lua b/lua/app/common/time.lua index bf0b8bf6..dc3c4bc2 100644 --- a/lua/app/common/time.lua +++ b/lua/app/common/time.lua @@ -308,6 +308,13 @@ function Time:getWeekByTimeStamp(time) return weekTab[now.wday] end +-- 获取今天距目标日期的天数 +function Time:getDistanceDays(time) + local nowNum = self:getBeginningOfOneDay(self:getServerTime()) + local targetNum = self:getBeginningOfOneDay(time) + return (nowNum - targetNum)/24/60/60 +end + -- 转换服务器时间字符串(ISO 8601)的对应的时间戳,例如2022-09-10T18:10:00.000Z function Time:convertServerTimeStringToTimestamp(str) local dateTime = CS.System.DateTime.Parse(str) diff --git a/lua/app/config/skin_skill.lua.meta b/lua/app/config/skin_skill.lua.meta index d8c717bb..34753fb3 100644 --- a/lua/app/config/skin_skill.lua.meta +++ b/lua/app/config/skin_skill.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5a5148a7b16b1fc41b4cf4d3032434f7 +guid: 893b1162479b05246acae9d3a7c2dc8d ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/cn/activity_bounty_task.lua.meta b/lua/app/config/strings/cn/activity_bounty_task.lua.meta index d6317999..e0fad10f 100644 --- a/lua/app/config/strings/cn/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/cn/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1127c4a778e20e548bab5b6d9197438f +guid: ecf9832219c651a42a6da2144d6b4b0e ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/de/activity_bounty_task.lua.meta b/lua/app/config/strings/de/activity_bounty_task.lua.meta index 03c57cc2..1b2ff09e 100644 --- a/lua/app/config/strings/de/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/de/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 918bec283e903ac40b3c53b3f01b7e6e +guid: 0f83d9ac19d0ece40a8322b3a3076967 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/en/activity_bounty_task.lua.meta b/lua/app/config/strings/en/activity_bounty_task.lua.meta index c6573bf2..2f7c5cb2 100644 --- a/lua/app/config/strings/en/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/en/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 37583a684486ff14f81e7f764ee1dfe7 +guid: da6eafcb15352aa48ad1a28bb73f5875 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/es/activity_bounty_task.lua.meta b/lua/app/config/strings/es/activity_bounty_task.lua.meta index 8385698c..86d8b5c3 100644 --- a/lua/app/config/strings/es/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/es/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d227df9391e785e408121f4ff642cfb5 +guid: aba4b90f0689e0d49ac6fbecf9f457e6 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/fr/activity_bounty_task.lua.meta b/lua/app/config/strings/fr/activity_bounty_task.lua.meta index 8bd2efeb..da4f693e 100644 --- a/lua/app/config/strings/fr/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/fr/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 519cb5672fc300e46a858a224241830b +guid: 5d2e06c6a89d5ba4f9f56288581b30fb ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/id/activity_bounty_task.lua.meta b/lua/app/config/strings/id/activity_bounty_task.lua.meta index 80e8e741..02bd603a 100644 --- a/lua/app/config/strings/id/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/id/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1218053606fbff34db28d72a590c208a +guid: 256cb63107484c14388a13d5f80f47c1 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/ja/activity_bounty_task.lua.meta b/lua/app/config/strings/ja/activity_bounty_task.lua.meta index d7d81c62..398e9caf 100644 --- a/lua/app/config/strings/ja/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/ja/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 10498da83e85fdf4dbb6c8206ca0d693 +guid: 3d8991f3c62a35d46a4f56b0fd0bebac ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/ko/activity_bounty_task.lua.meta b/lua/app/config/strings/ko/activity_bounty_task.lua.meta index 91a672c7..4376f740 100644 --- a/lua/app/config/strings/ko/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/ko/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 14212bd9d0535924eb424e56b3d89aae +guid: dc9c852361917104da8be013c7b344c1 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/pt/activity_bounty_task.lua.meta b/lua/app/config/strings/pt/activity_bounty_task.lua.meta index 2bea6fd1..cfef9d10 100644 --- a/lua/app/config/strings/pt/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/pt/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a5b8d45ff88b5cc4b97a7220f6d9dd7b +guid: 888023c46b5a83e4ca8623eb8b44146f ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/th/activity_bounty_task.lua.meta b/lua/app/config/strings/th/activity_bounty_task.lua.meta index 31dc1a2e..29052759 100644 --- a/lua/app/config/strings/th/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/th/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fa0d75a897385e244a94199562ff8a10 +guid: 5b35ae430e54fbe44b652cbfca604e87 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/vi/activity_bounty_task.lua.meta b/lua/app/config/strings/vi/activity_bounty_task.lua.meta index 1e694b9c..575b9f9e 100644 --- a/lua/app/config/strings/vi/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/vi/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f49db969f35f5744cbb754a485aafaf6 +guid: 3b9824b549f61574e81a5ef2be629f48 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/zh/activity_bounty_task.lua.meta b/lua/app/config/strings/zh/activity_bounty_task.lua.meta index 4b129f9d..1e471606 100644 --- a/lua/app/config/strings/zh/activity_bounty_task.lua.meta +++ b/lua/app/config/strings/zh/activity_bounty_task.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2f94a212b1547cc49a9ca8a0c0a11388 +guid: cae075fa2ab34d4468845c6964b80002 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 77e83df2..94a882d0 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -19,6 +19,7 @@ local CONST_PATHS = { MailConst = "app/module/mail/mail_const", GameSettingConst = "app/module/game_setting/game_setting_const", CollectionConst = "app/module/collection/collection_const", + ActivityConst = "app/module/activity/activity_const", } if EDITOR_MODE then @@ -217,6 +218,8 @@ GConst.ATLAS_PATH = { MODULE = "assets/arts/atlas/ui/module.asset", UI_MAIL = "assets/arts/atlas/ui/mail.asset", UI_DUGEON_ARMOR = "assets/arts/atlas/ui/dungeon_armor.asset", + ACT_SUMMER = "assets/arts/atlas/ui/act_summer.asset", + TASK = "assets/arts/atlas/ui/task.asset", } GConst.TOUCH_EVENT = { @@ -295,6 +298,7 @@ GConst.MESSAGE_BOX_TYPE = { GConst.MESSAGE_BOX_SHOW_TODAY = { BOUNTY_BUY_LEVEL = 1, HOT_SELL_BUY = 2, + ACTIVITY_BUY_LEVEL = 2, } GConst.QUALITY_TYPE = diff --git a/lua/app/module/activity/activity_const.lua b/lua/app/module/activity/activity_const.lua new file mode 100644 index 00000000..6b12d6f8 --- /dev/null +++ b/lua/app/module/activity/activity_const.lua @@ -0,0 +1,36 @@ +local ActivityConst = {} + +-- 活动类型 +ActivityConst.ACT_TYPE = { +} + +-- 活动id +ActivityConst.ACT = { + SUMMER = 106, +} + +-- 战令档位 +ActivityConst.BOUNTY_GRADE_TYPE = { + FREE = 0, + PAY1 = 1, + PAY2 = 2, +} + +-- 界面 +ActivityConst.PANEL_TYPE = { + TASK = 1, + BOUNTY = 2, + SKIN = 3, + HERO = 4 +} + +-- 战令礼包id +ActivityConst.BOUNTY_GIFT_ID_1 = 130002 +ActivityConst.BOUNTY_GIFT_ID_2 = 130102 +-- 皮肤礼包id +ActivityConst.SKIN_GIFT_ID_1 = 130302 +ActivityConst.SKIN_GIFT_ID_2 = 130202 +-- 英雄礼包id +ActivityConst.HERO_GIFT_ID_1 = 130402 + +return ActivityConst \ No newline at end of file diff --git a/lua/app/module/activity/activity_const.lua.meta b/lua/app/module/activity/activity_const.lua.meta new file mode 100644 index 00000000..7176c954 --- /dev/null +++ b/lua/app/module/activity/activity_const.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0b055c01cb49c774ea9d7417586df034 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/module/activity/activity_manager.lua b/lua/app/module/activity/activity_manager.lua index 9e85fbdd..0f254734 100644 --- a/lua/app/module/activity/activity_manager.lua +++ b/lua/app/module/activity/activity_manager.lua @@ -14,4 +14,109 @@ function ActivityManager:onBoughtGoldPigFinish(result) end end +-- 夏日活动分界线----------------------------------------------------------------------------------------------------- + +function ActivityManager:showActivityUI(panelType) + if panelType == GConst.ActivityConst.PANEL_TYPE.SKIN then + UIManager:showUI("app/ui/activity/activity_gift_skin_ui", panelType) + elseif panelType == GConst.ActivityConst.PANEL_TYPE.HERO then + UIManager:showUI("app/ui/activity/activity_gift_hero_ui", panelType) + else + UIManager:showUI("app/ui/activity/activity_ui", panelType) + end +end + +-- 购买夏日活动战令 +function ActivityManager:buySummerBounty(giftId) + PayManager:purchasePackage(giftId, PayManager.PURCHARSE_TYPE.ACT_GIFT) +end + +-- 初始化夏日活动计时器 +function ActivityManager:initSummerTimer() + self:unscheduleGlobal(self.summerSid) + + if DataManager.ActivityData:isInActiveTime() then + Logger.logHighlight("夏日活动结束倒计时:"..DataManager.ActivityData:getEndRemainTime()) + self.summerSid = self:performWithDelayGlobal(function() + -- 夏日活动结束 + Logger.logHighlight("夏日活动结束") + EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.ACTIVITY_SUMMER_END) + end, DataManager.ActivityData:getEndRemainTime()) + elseif DataManager.ActivityData:getStartRemainTime() > 0 then + Logger.logHighlight("夏日活动开始倒计时:"..DataManager.ActivityData:getStartRemainTime()) + self.summerSid = self:performWithDelayGlobal(function() + -- 夏日活动结束 + Logger.logHighlight("夏日活动开始") + self:reqSummerData() + end, DataManager.ActivityData:getStartRemainTime()) + end +end + +-- 请求夏日活动数据 +function ActivityManager:reqSummerData() + self:sendMessage(ProtoMsgType.FromMsgEnum.SummerDataReq, {}, {}, self.rspSummerData, nil) +end + +function ActivityManager:rspSummerData(result) + if result.summer then + DataManager.ActivityData:onGetActData(result.summer) + end +end + +-- 请求夏日活动任务奖励 +function ActivityManager:reqSummerTaskReward(id) + self:sendMessage(ProtoMsgType.FromMsgEnum.SummerTaskClaimReq, {id = id, stage = DataManager.ActivityData:getTaskStage(id)}, {}, self.rspSummerTaskReward, nil) +end + +function ActivityManager:rspSummerTaskReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.ActivityData:onReceivedTaskReward(result.reqData.id, result.stage, result.level, result.exp) + end +end + +-- 请求夏日活动战令奖励,id为0就是领取档位全部可领奖励 +function ActivityManager:reqSummerBountyReward(id, grade) + self:sendMessage(ProtoMsgType.FromMsgEnum.SummerBountyClaimReq, {id = id, grade = grade}, {}, self.rspSummerBountyReward, BIReport.ITEM_GET_TYPE.ACTIVITY_BOUNTY_REWARD) +end + +function ActivityManager:rspSummerBountyReward(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.ActivityData:onReceivedBountyReward(result.success_id_grade) + + GFunc.showRewardBox(result.rewards) + end +end + +-- 购买战令等级 +function ActivityManager:reqBuyBountyLevel() + local cost = DataManager.ActivityData: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.ActivityData:getBountyCfg()[DataManager.ActivityData:getBountyLevel() + 1].id + -- Logger.logHighlight("购买战令等级:"..id) + self:sendMessage(ProtoMsgType.FromMsgEnum.SummerBountyClaimByDiamondReq, {id = id}, {}, self.rspBuyBountyLevel, BIReport.ITEM_GET_TYPE.ACTIVITY_BOUNTY_LEVEL) + end, + } + GFunc.showMessageBox(params) +end + +function ActivityManager:rspBuyBountyLevel(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.ActivityData:onBoughtBountyLevel() + end +end + +-- 夏日活动分界线----------------------------------------------------------------------------------------------------- + return ActivityManager \ No newline at end of file diff --git a/lua/app/module/arena/arena_manager.lua b/lua/app/module/arena/arena_manager.lua index 852bf676..be47c7c2 100644 --- a/lua/app/module/arena/arena_manager.lua +++ b/lua/app/module/arena/arena_manager.lua @@ -130,6 +130,7 @@ function ArenaManager:rspSettlement(result) self:checkSeasonChange() ModuleManager.TaskManager:addFightTaskProgress(reqData.task_stat) + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE) --bi上报 local winRate = result.total_win_count / (result.total_win_count + result.total_lose_count) diff --git a/lua/app/module/maincity/maincity_const.lua b/lua/app/module/maincity/maincity_const.lua index 3799130d..714e3bb4 100644 --- a/lua/app/module/maincity/maincity_const.lua +++ b/lua/app/module/maincity/maincity_const.lua @@ -31,6 +31,7 @@ MainCityConst.LEFT_SIDE_BARS = { "app/ui/main_city/cell/side_bar_idle_cell", "app/ui/main_city/cell/side_bar_growth_fund_cell", "app/ui/main_city/cell/side_bar_seven_days_cell", + "app/ui/main_city/cell/side_bar_activity_cell", -- gm放最后一个 "app/ui/main_city/cell/side_bar_gm_cell" } diff --git a/lua/app/module/shop/shop_manager.lua b/lua/app/module/shop/shop_manager.lua index 397a9abc..68fdc522 100644 --- a/lua/app/module/shop/shop_manager.lua +++ b/lua/app/module/shop/shop_manager.lua @@ -53,6 +53,10 @@ function ShopManager:showGiftPopUI(actType, actId, onlySelf, showType) UIManager:showUI("app/ui/shop/first_recharge_pop_ui", {showType = showType}) elseif actType == PayManager.PURCHARSE_TYPE.ACT_GIFT and actId == GConst.ShopConst.INTRODUCT_GIFT_ID then UIManager:showUI("app/ui/shop/introduct_pop_ui", {showType = showType}) + elseif actType == PayManager.PURCHARSE_TYPE.ACT_GIFT and (actId == GConst.ActivityConst.SKIN_GIFT_ID_1 or actId == GConst.ActivityConst.SKIN_GIFT_ID_2) then + ModuleManager.ActivityManager:showActivityUI(GConst.ActivityConst.PANEL_TYPE.SKIN) + elseif actType == PayManager.PURCHARSE_TYPE.ACT_GIFT and actId == GConst.ActivityConst.HERO_GIFT_ID_1 then + ModuleManager.ActivityManager:showActivityUI(GConst.ActivityConst.PANEL_TYPE.HERO) elseif actType == PayManager.PURCHARSE_TYPE.CHAPTER_GIFT then UIManager:showUI("app/ui/shop/gift_pop_chapter_ui", {type = actType, id = actId, onlySelf = onlySelf, showType = showType}) elseif actType == PayManager.PURCHARSE_TYPE.GROW_UP_GIFT_NEW then diff --git a/lua/app/module/skin/skin_manager.lua b/lua/app/module/skin/skin_manager.lua index cb12ce70..7ab8a5f2 100644 --- a/lua/app/module/skin/skin_manager.lua +++ b/lua/app/module/skin/skin_manager.lua @@ -2,8 +2,6 @@ local SkinManager = class("SkinManager", BaseModule) function SkinManager:init() self:addEventListener(EventManager.CUSTOM_EVENT.GETED_REWARD_SUCCESS, function(rewards) - Logger.logHighlight("奖励获取") - Logger.printTable(rewards) self:checkUnlockSkin(rewards) end) end @@ -15,7 +13,7 @@ function SkinManager:checkUnlockSkin(checkData) end for index, reward in ipairs(checkData) do - if reward.type == GConst.REWARD_TYPE.ITEM and reward.item.type == GConst.ItemConst.ITEM_TYPE.SKIN then + if reward.type == GConst.REWARD_TYPE.ITEM and ConfigManager:getConfig("item")[reward.item.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then DataManager.SkinData:onUnlockSkin(reward.item.id) end end diff --git a/lua/app/module/task/task_const.lua b/lua/app/module/task/task_const.lua index 250e0537..c3a7c27a 100644 --- a/lua/app/module/task/task_const.lua +++ b/lua/app/module/task/task_const.lua @@ -30,6 +30,7 @@ TaskConst.TASK_TYPE = { X_NEW_HERO_GOT = 27, -- 拥有X个英雄 X_OPEN_SHOP_BOX_LEVEL_1 = 28, -- 商城里的1级抽卡宝箱 X_OPEN_SHOP_BOX_LEVEL_2 = 29, -- 商城里的2级抽卡宝箱 + X_ARENA_CHALLENGE = 30, -- 竞技场挑战 } return TaskConst \ No newline at end of file diff --git a/lua/app/module/task/task_manager.lua b/lua/app/module/task/task_manager.lua index 9621afcd..38f6b677 100644 --- a/lua/app/module/task/task_manager.lua +++ b/lua/app/module/task/task_manager.lua @@ -270,6 +270,10 @@ function TaskManager:xOpenShopBoxLevel3(count) self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_OPEN_SHOP_BOX, count) end +function TaskManager:xArenaChallenge() + self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE, 1) +end + ---- 没有特殊说明,方法均返回任务增量 TaskManager.TYPE_DEAL_FUNC = { [GConst.TaskConst.TASK_TYPE.X_WATCH_AD] = TaskManager.xWatchAd, @@ -299,6 +303,7 @@ TaskManager.TYPE_DEAL_FUNC = { [GConst.TaskConst.TASK_TYPE.X_OPEN_SHOP_BOX_LEVEL_1] = TaskManager.xOpenShopBoxLevel1, [GConst.TaskConst.TASK_TYPE.X_OPEN_SHOP_BOX_LEVEL_2] = TaskManager.xOpenShopBoxLevel2, [GConst.TaskConst.TASK_TYPE.X_OPEN_SHOP_BOX_LEVEL_3] = TaskManager.xOpenShopBoxLevel3, + [GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE] = TaskManager.xArenaChallenge, } function TaskManager:taskGoto(taskType) diff --git a/lua/app/ui/activity/activity_bounty_buy_ui.lua b/lua/app/ui/activity/activity_bounty_buy_ui.lua new file mode 100644 index 00000000..954b2902 --- /dev/null +++ b/lua/app/ui/activity/activity_bounty_buy_ui.lua @@ -0,0 +1,112 @@ +local ActivityUI = class("ActivityUI", BaseUI) +local SPINE_BANNER = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = "ui_act_summer_buy_1", + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = "ui_act_summer_buy_2", +} +local PANEL_BG = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = "assets/arts/textures/background/shop/shop_bg_11.png", + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = "assets/arts/textures/background/shop/shop_bg_pig.png", +} +local TITLE_BG = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = "common_title_10", + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = "common_title_12", +} +local OFF_BG = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = "shop_bg_18", + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = "shop_bg_9", +} +local LINE_BG = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = "act_summer_board_6", + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = "act_summer_board_5", +} +local SPINE_POS_Y = { + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1] = 285, + [GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2] = 340, +} + +function ActivityUI:isFullScreen() + return false +end + +function ActivityUI:getPrefabPath() + return "assets/prefabs/ui/activity/activity_bounty_buy_ui.prefab" +end + +function ActivityUI:onPressBackspace() + self:closeUI() +end + +function ActivityUI:ctor(parmas) + self.payType = parmas + if self.payType == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + self.giftId = GConst.ActivityConst.BOUNTY_GIFT_ID_1 + elseif self.payType == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + self.giftId = GConst.ActivityConst.BOUNTY_GIFT_ID_2 + end +end + +function ActivityUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + self.bg = uiMap["activity_bounty_buy_ui.bg"] + self.spineBanner = uiMap["activity_bounty_buy_ui.bg.spine_banner"] + self.imgTitle = uiMap["activity_bounty_buy_ui.bg.img_title"] + self.txTitle = uiMap["activity_bounty_buy_ui.bg.img_title.tx_title"] + self.imgOff = uiMap["activity_bounty_buy_ui.bg.img_off"] + self.txOff = uiMap["activity_bounty_buy_ui.bg.img_off.tx_off"] + self.txDesc = uiMap["activity_bounty_buy_ui.bg.tx_desc"] + self.line = uiMap["activity_bounty_buy_ui.bg.line"] + self.scrollrectComp = uiMap["activity_bounty_buy_ui.bg.scroll_rect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.btnBuy = uiMap["activity_bounty_buy_ui.bg.btn_buy"] + self.txBuy = uiMap["activity_bounty_buy_ui.bg.btn_buy.tx_buy"] + self.btnClose = uiMap["activity_bounty_buy_ui.bg.close_btn"] + + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_PREVIEW_DESC)) + self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_11)) + + self.btnBuy:addClickListener(function() + ModuleManager.ActivityManager:buySummerBounty(self.giftId) + end) + self.btnClose:addClickListener(function() + self:closeUI() + end) + self:addEventListener(EventManager.CUSTOM_EVENT.ACTIVITY_SUMMER_END, function() + self:closeUI() + end) + self:bind(DataManager.ShopData, "isDirty", function() + self:closeUI() + end) +end + +function ActivityUI:onRefresh() + self.spineBanner:getSkeletonGraphic().enabled = false + self.spineBanner:loadAssetAsync(SPINE_BANNER[self.payType], function() + self.spineBanner:getSkeletonGraphic().enabled = true + self.spineBanner:playAnim("idle", true, true, true) + end, false) + self.spineBanner:setAnchoredPositionY(SPINE_POS_Y[self.payType]) + + self.bg:setTexture(PANEL_BG[self.payType]) + self.imgTitle:setSprite(GConst.ATLAS_PATH.COMMON, TITLE_BG[self.payType]) + self.imgOff:setSprite(GConst.ATLAS_PATH.SHOP, OFF_BG[self.payType]) + self.line:setSprite(GConst.ATLAS_PATH.ACT_SUMMER, LINE_BG[self.payType]) + local gift = DataManager.ShopData:getActGiftConfig()[self.giftId] + if gift.value then + self.imgOff:setActive(true) + self.txOff:setText(gift.value .. "%") + else + self.imgOff:setActive(false) + end + self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id)) + + local totalRewards = DataManager.ActivityData:getBountyGradeAllRewardSort(self.payType) + self.scrollrectComp:addInitCallback(function() + return GConst.TYPEOF_LUA_CLASS.REWARD_CELL + end) + self.scrollrectComp:addRefreshCallback(function(index, cell) + cell:refreshByConfig(totalRewards[index]) + end) + self.scrollrectComp:clearCells() + self.scrollrectComp:refillCells(#totalRewards) +end + +return ActivityUI \ No newline at end of file diff --git a/lua/app/ui/activity/activity_bounty_buy_ui.lua.meta b/lua/app/ui/activity/activity_bounty_buy_ui.lua.meta new file mode 100644 index 00000000..cb3dd1a7 --- /dev/null +++ b/lua/app/ui/activity/activity_bounty_buy_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2433585b4982fc8439f9ea349d187da2 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_bounty_comp.lua b/lua/app/ui/activity/activity_bounty_comp.lua new file mode 100644 index 00000000..111fd735 --- /dev/null +++ b/lua/app/ui/activity/activity_bounty_comp.lua @@ -0,0 +1,103 @@ +local ActivityBountyComp = class("ActivityBountyComp", LuaComponent) + +function ActivityBountyComp:init() + local uiMap = self:getUIMap() + self.txScore = uiMap["bounty_panel.bounty.tx_score"] + self.imgProg = uiMap["bounty_panel.bounty.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.txProg = uiMap["bounty_panel.bounty.prog.tx_prog"] + self.txLv = uiMap["bounty_panel.bounty.tx_lv"] + self.txLvNum = uiMap["bounty_panel.bounty.tx_lv_num"] + self.txFree = uiMap["bounty_panel.title.free.tx_free"] + -- 档位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.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.bountyList = DataManager.ActivityData:getBountyCfg() + self.scrollrectComp:addInitCallback(function() + self.maskLevel:getTransform():SetAsLastSibling() + self.lineLevel:getTransform():SetAsLastSibling() + return "app/ui/activity/cell/activity_bounty_cell" + end) + self.scrollrectComp:addRefreshCallback(function(index, cell) + cell:refresh(index, self.bountyList[index]) + end) + self.scrollrectComp:clearCells() + self.scrollrectComp:refillCells(#self.bountyList) + + self.btnBuy1:addClickListener(function() + UIManager:showUI("app/ui/activity/activity_bounty_buy_ui", GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + end) + self.btnBuy2:addClickListener(function() + UIManager:showUI("app/ui/activity/activity_bounty_buy_ui", GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) + end) + self.btnBuyLevel:addClickListener(function() + ModuleManager.ActivityManager:reqBuyBountyLevel() + end) +end + +function ActivityBountyComp:refresh() + self.btnBuyLevel:setActive(DataManager.ActivityData:canBuyBountyLevel()) + -- 战令积分显示 + local total = DataManager.ActivityData:getBountyUpgradeScore() + local cur = DataManager.ActivityData:getBountyLevelScore() + self.imgProg.value = cur / total + self.txScore:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_1)) + self.txProg:setText(cur .. "/" .. total) + self.txLv:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_12)) + self.txLvNum:setText(DataManager.ActivityData:getBountyLevel()) + + -- 档位展示 + local curGrade = DataManager.ActivityData:getBountyGrade() + self.btnBuy1:setActive(curGrade < GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + self.btnBuy2:setActive(curGrade < GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) + + local gift1 = DataManager.ActivityData:getBountyGradeGiftCfg(GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + local gift2 = DataManager.ActivityData:getBountyGradeGiftCfg(GConst.ActivityConst.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.ActivityData:getBuyBountyLevelCost())) + GFunc.centerImgAndTx(self.imgBuyLevelIcon, self.txBuyLevelNum, 5) + + -- 等级列表 + self.scrollrectComp:updateAllCell() + + local maxLevel = DataManager.ActivityData:getBountyMaxLevel() + local curLevel = DataManager.ActivityData: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)) + local percent = (curLevel - 1) / (maxLevel - 1) + if percent < 0 then + percent = 0 + end + self.imgProgLevel.value = percent + self.maskLevel:setAnchoredPositionY(-topRecoveryOffset - curLevel * cellHeight) + self.maskLevel:setSizeDeltaY(cellHeight * maxLevel + GConst.UI_SCREEN_HEIGHT) +end + +return ActivityBountyComp \ No newline at end of file diff --git a/lua/app/ui/activity/activity_bounty_comp.lua.meta b/lua/app/ui/activity/activity_bounty_comp.lua.meta new file mode 100644 index 00000000..52cb2e04 --- /dev/null +++ b/lua/app/ui/activity/activity_bounty_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6be3caa8b2628cc4eb4bd042b7600484 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_gift_hero_ui.lua b/lua/app/ui/activity/activity_gift_hero_ui.lua new file mode 100644 index 00000000..6c0e0821 --- /dev/null +++ b/lua/app/ui/activity/activity_gift_hero_ui.lua @@ -0,0 +1,6 @@ +local ActivityUI = require "app/ui/activity/activity_ui" +local ActivityGiftHeroUI = class("ActivityGiftHeroUI", ActivityUI) + +-- 活动英雄礼包,为了避免界面和activity_ui冲突 + +return ActivityGiftHeroUI \ No newline at end of file diff --git a/lua/app/ui/activity/activity_gift_hero_ui.lua.meta b/lua/app/ui/activity/activity_gift_hero_ui.lua.meta new file mode 100644 index 00000000..934f711a --- /dev/null +++ b/lua/app/ui/activity/activity_gift_hero_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 27dfb616c5928a6408dcd22f5318002c +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_gift_skin_ui.lua b/lua/app/ui/activity/activity_gift_skin_ui.lua new file mode 100644 index 00000000..224a94dc --- /dev/null +++ b/lua/app/ui/activity/activity_gift_skin_ui.lua @@ -0,0 +1,6 @@ +local ActivityUI = require "app/ui/activity/activity_ui" +local ActivityGiftSkinUI = class("ActivityGiftSkinUI", ActivityUI) + +-- 活动皮肤礼包,为了避免界面和activity_ui冲突 + +return ActivityGiftSkinUI \ No newline at end of file diff --git a/lua/app/ui/activity/activity_gift_skin_ui.lua.meta b/lua/app/ui/activity/activity_gift_skin_ui.lua.meta new file mode 100644 index 00000000..f2293f80 --- /dev/null +++ b/lua/app/ui/activity/activity_gift_skin_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fbf4f90499938e74d96a805ca6c2a29b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_hero_comp.lua b/lua/app/ui/activity/activity_hero_comp.lua new file mode 100644 index 00000000..4383b2da --- /dev/null +++ b/lua/app/ui/activity/activity_hero_comp.lua @@ -0,0 +1,52 @@ +local ActivityHeroComp = class("ActivityHeroComp", LuaComponent) + +function ActivityHeroComp:init() + local uiMap = self:getUIMap() + self.spineBanner = uiMap["hero_panel.spine_banner"] + self.txTitle = uiMap["hero_panel.tx_title"] + self.popRewardCell1 = uiMap["hero_panel.rewards.pop_reward_cell_1"] + self.popRewardCell2 = uiMap["hero_panel.rewards.pop_reward_cell_2"] + self.popRewardCell3 = uiMap["hero_panel.rewards.pop_reward_cell_3"] + self.txTime = uiMap["hero_panel.tx_time"] + self.btnBuy = uiMap["hero_panel.btn_buy"] + self.txBuy = uiMap["hero_panel.btn_buy.tx_buy"] + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["hero_panel.rewards.pop_reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)) + end + + self.btnBuy:addClickListener(function() + PayManager:purchasePackage(GConst.ActivityConst.HERO_GIFT_ID_1, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) + LocalData:recordTodayActSummerWatchedHero() +end + +function ActivityHeroComp:refresh() + self.spineBanner:playAnimComplete("born", false, true, function() + self.spineBanner:playAnim("idle", true, true) + end) + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_8)) + + local gift = DataManager.ShopData:getActGiftConfig()[GConst.ActivityConst.HERO_GIFT_ID_1] + self.txTime:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_18, tostring(gift.limit))) + self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id)) + for index, cell in ipairs(self.rewardCells) do + if gift.reward[index] then + cell:setVisible(true) + cell:refresh(gift.reward[index].id, gift.reward[index].num, true) + else + cell:setVisible(false) + end + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.HERO_GIFT_ID_1) > 0 then + self.btnBuy:setTouchEnable(true) + self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") + self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id)) + else + self.btnBuy:setTouchEnable(false) + self.btnBuy:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") + self.txBuy:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + end +end + +return ActivityHeroComp \ No newline at end of file diff --git a/lua/app/ui/activity/activity_hero_comp.lua.meta b/lua/app/ui/activity/activity_hero_comp.lua.meta new file mode 100644 index 00000000..b71feaba --- /dev/null +++ b/lua/app/ui/activity/activity_hero_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: acb5324ea144d4e40841f09925c09155 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_skin_comp.lua b/lua/app/ui/activity/activity_skin_comp.lua new file mode 100644 index 00000000..fd364c7c --- /dev/null +++ b/lua/app/ui/activity/activity_skin_comp.lua @@ -0,0 +1,112 @@ +local ActivitySkinComp = class("ActivitySkinComp", LuaComponent) + +function ActivitySkinComp:init() + local uiMap = self:getUIMap() + self.txTitle = uiMap["skin_panel.banner.title.tx_title"] + self.txBannerDesc1 = uiMap["skin_panel.banner.content.desc1.tx_desc1"] + self.txBannerDesc2 = uiMap["skin_panel.banner.content.desc2.tx_desc2"] + -- 礼包1 + self.spineSkin1 = uiMap["skin_panel.skin1.spine_skin1"] + self.txDesc1 = uiMap["skin_panel.skin1.bg_title.tx_title"] + self.btnBuy1 = uiMap["skin_panel.skin1.btn_buy"] + self.txBuy1 = uiMap["skin_panel.skin1.btn_buy.tx_buy"] + self.rewardCells1 = {} + for i = 1, 3 do + table.insert(self.rewardCells1, uiMap["skin_panel.skin1.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + -- 礼包2 + self.spineSkin2 = uiMap["skin_panel.skin2.spine_skin2"] + self.txDesc2 = uiMap["skin_panel.skin2.bg_title.tx_title"] + self.btnBuy2 = uiMap["skin_panel.skin2.btn_buy"] + self.txBuy2 = uiMap["skin_panel.skin2.btn_buy.tx_buy"] + self.rewardCells2 = {} + for i = 1, 3 do + table.insert(self.rewardCells2, uiMap["skin_panel.skin2.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + + self.btnBuy1:addClickListener(function() + PayManager:purchasePackage(GConst.ActivityConst.SKIN_GIFT_ID_1, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) + self.btnBuy2:addClickListener(function() + PayManager:purchasePackage(GConst.ActivityConst.SKIN_GIFT_ID_2, PayManager.PURCHARSE_TYPE.ACT_GIFT) + end) + LocalData:recordTodayActSummerWatchedSkin() +end + +function ActivitySkinComp:refresh() + self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_5)) + + -- 礼包1 + local gift1 = DataManager.ShopData:getActGiftConfig()[GConst.ActivityConst.SKIN_GIFT_ID_1] + local skinId1,heroId1 + for idx, reward in ipairs(gift1.reward) do + if ConfigManager:getConfig("item")[reward.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then + skinId1 = DataManager.SkinData:getSkinIdByItemId(reward.id) + heroId1 = DataManager.SkinData:getHeroIdBySkinId(skinId1) + end + end + if skinId1 and heroId1 then + self.spineSkin1:getSkeletonGraphic().enabled = false + self.spineSkin1:loadAssetAsync(DataManager.SkinData:getModelId(skinId1), function() + self.spineSkin1:getSkeletonGraphic().enabled = true + self.spineSkin1:playAnim("idle", true, true, true) + end, true) + self.txBannerDesc1:setText(DataManager.HeroData:getHeroById(heroId1):getName() .. "-" .. DataManager.SkinData:getName(skinId1) .. "(" .. I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_9) .. ")") + end + self.txDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_6)) + for index, cell in ipairs(self.rewardCells1) do + if gift1.reward[index] then + cell:setVisible(true) + cell:refreshByConfig(gift1.reward[index]) + else + cell:setVisible(false) + end + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.SKIN_GIFT_ID_1) > 0 then + self.btnBuy1:setTouchEnable(true) + self.btnBuy1:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") + self.txBuy1:setText(GFunc.getFormatPrice(gift1.recharge_id)) + else + self.btnBuy1:setTouchEnable(false) + self.btnBuy1:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") + self.txBuy1:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + end + + -- 礼包2 + local gift2 = DataManager.ShopData:getActGiftConfig()[GConst.ActivityConst.SKIN_GIFT_ID_2] + local skinId2,heroId2 + for idx, reward in ipairs(gift2.reward) do + if ConfigManager:getConfig("item")[reward.id].type == GConst.ItemConst.ITEM_TYPE.SKIN then + skinId2 = DataManager.SkinData:getSkinIdByItemId(reward.id) + heroId2 = DataManager.SkinData:getHeroIdBySkinId(skinId2) + end + end + if skinId2 and heroId2 then + self.spineSkin2:getSkeletonGraphic().enabled = false + self.spineSkin2:loadAssetAsync(DataManager.SkinData:getModelId(skinId2), function() + self.spineSkin2:getSkeletonGraphic().enabled = true + self.spineSkin2:playAnim("idle", true, true, true) + end, true) + self.txBannerDesc2:setText(DataManager.HeroData:getHeroById(heroId2):getName() .. "-" .. DataManager.SkinData:getName(skinId2) .. "(" .. I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_9) .. ")") + end + self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_7)) + for index, cell in ipairs(self.rewardCells2) do + if gift2.reward[index] then + cell:setVisible(true) + cell:refreshByConfig(gift2.reward[index]) + else + cell:setVisible(false) + end + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.SKIN_GIFT_ID_2) > 0 then + self.btnBuy2:setTouchEnable(true) + self.btnBuy2:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") + self.txBuy2:setText(GFunc.getFormatPrice(gift2.recharge_id)) + else + self.btnBuy2:setTouchEnable(false) + self.btnBuy2:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") + self.txBuy2:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_20)) + end +end + +return ActivitySkinComp \ No newline at end of file diff --git a/lua/app/ui/activity/activity_skin_comp.lua.meta b/lua/app/ui/activity/activity_skin_comp.lua.meta new file mode 100644 index 00000000..bc2c473c --- /dev/null +++ b/lua/app/ui/activity/activity_skin_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: efbdbb326ef93fc488aa2aa486acd5aa +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_task_comp.lua b/lua/app/ui/activity/activity_task_comp.lua new file mode 100644 index 00000000..ec347aa5 --- /dev/null +++ b/lua/app/ui/activity/activity_task_comp.lua @@ -0,0 +1,35 @@ +local ActivityTaskComp = class("ActivityTaskComp", LuaComponent) + +function ActivityTaskComp:init() + local uiMap = self:getUIMap() + self.txScore = uiMap["task_panel.bounty.tx_score"] + self.imgProg = uiMap["task_panel.bounty.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.txProg = uiMap["task_panel.bounty.prog.tx_prog"] + self.txLv = uiMap["task_panel.bounty.tx_lv"] + self.txLvNum = uiMap["task_panel.bounty.tx_lv_num"] + self.scrollrectComp = uiMap["task_panel.list_task"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) +end + +function ActivityTaskComp:refresh() + -- 战令积分显示 + local total = DataManager.ActivityData:getBountyUpgradeScore() + local cur = DataManager.ActivityData:getBountyLevelScore() + self.imgProg.value = cur / total + self.txScore:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_1)) + self.txProg:setText(cur .. "/" .. total) + self.txLv:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_12)) + self.txLvNum:setText(DataManager.ActivityData:getBountyLevel()) + + -- 任务列表 + local tasks = DataManager.ActivityData:getTaskListSort() + self.scrollrectComp:addInitCallback(function() + return "app/ui/activity/cell/activity_task_cell" + end) + self.scrollrectComp:addRefreshCallback(function(index, cell) + cell:refresh(tasks[index]) + end) + self.scrollrectComp:clearCells() + self.scrollrectComp:refillCells(#tasks) +end + +return ActivityTaskComp \ No newline at end of file diff --git a/lua/app/ui/activity/activity_task_comp.lua.meta b/lua/app/ui/activity/activity_task_comp.lua.meta new file mode 100644 index 00000000..295594d2 --- /dev/null +++ b/lua/app/ui/activity/activity_task_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3f79f106fd5bfec40abd342921663365 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/activity_ui.lua b/lua/app/ui/activity/activity_ui.lua new file mode 100644 index 00000000..deab82d1 --- /dev/null +++ b/lua/app/ui/activity/activity_ui.lua @@ -0,0 +1,243 @@ +local ActivityUI = class("ActivityUI", BaseUI) +local COMP_TASK = "app/ui/activity/activity_task_comp" +local COMP_BOUNTY = "app/ui/activity/activity_bounty_comp" +local COMP_SKIN = "app/ui/activity/activity_skin_comp" +local COMP_HERO = "app/ui/activity/activity_hero_comp" + +function ActivityUI:isFullScreen() + return false +end + +function ActivityUI:getPrefabPath() + return "assets/prefabs/ui/activity/activity_ui.prefab" +end + +function ActivityUI:onPressBackspace() + self:closeUI() +end + +function ActivityUI:ctor(param) + if param then + self.panelType = param + elseif DataManager.ActivityData:hasTaskRedPoint() then + self.panelType = GConst.ActivityConst.PANEL_TYPE.TASK + elseif DataManager.ActivityData:hasBountyRedPoint() then + self.panelType = GConst.ActivityConst.PANEL_TYPE.BOUNTY + elseif DataManager.ActivityData:hasSkinRedPoint() then + self.panelType = GConst.ActivityConst.PANEL_TYPE.SKIN + elseif DataManager.ActivityData:hasHeroRedPoint() then + self.panelType = GConst.ActivityConst.PANEL_TYPE.HERO + else + self.panelType = GConst.ActivityConst.PANEL_TYPE.TASK -- 默认进入任务页签 + end +end + +function ActivityUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + -- 标题 + self.imgTitle = uiMap["activity_ui.img_title"] + self.txTitle = uiMap["activity_ui.img_title.tx_title"] + -- 子界面 + self.taskPanel = uiMap["activity_ui.task_panel"] + self.bountyPanel = uiMap["activity_ui.bounty_panel"] + self.skinPanel = uiMap["activity_ui.skin_panel"] + self.heroPanel = uiMap["activity_ui.hero_panel"] + -- 任务标签 + self.btnTask = uiMap["activity_ui.common.btns.btn_task"] + self.txTask1 = uiMap["activity_ui.common.btns.btn_task.tx_btn"] + self.txTask2 = uiMap["activity_ui.common.btns.btn_task.select.tx_select"] + self.selectTask = uiMap["activity_ui.common.btns.btn_task.select"] + -- 战令标签 + self.btnBounty = uiMap["activity_ui.common.btns.btn_bounty"] + self.txBounty1 = uiMap["activity_ui.common.btns.btn_bounty.tx_btn"] + self.txBounty2 = uiMap["activity_ui.common.btns.btn_bounty.select.tx_select"] + self.selectBounty = uiMap["activity_ui.common.btns.btn_bounty.select"] + -- 皮肤标签 + self.btnSkin = uiMap["activity_ui.common.btns.btn_skin"] + self.txSkin1 = uiMap["activity_ui.common.btns.btn_skin.tx_btn"] + self.txSkin2 = uiMap["activity_ui.common.btns.btn_skin.select.tx_select"] + self.selectSkin = uiMap["activity_ui.common.btns.btn_skin.select"] + -- 英雄标签 + self.btnHero = uiMap["activity_ui.common.btns.btn_hero"] + self.txHero1 = uiMap["activity_ui.common.btns.btn_hero.tx_btn"] + self.txHero2 = uiMap["activity_ui.common.btns.btn_hero.select.tx_select"] + self.selectHero = uiMap["activity_ui.common.btns.btn_hero.select"] + -- 通用 + self.btnClose = uiMap["activity_ui.common.btn_close"] + self.btnHelp = uiMap["activity_ui.countdown.btn_help"] + self.txCountdown = uiMap["activity_ui.countdown.content.tx_countdown"] + + self.txTask1:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_NAME)) + self.txTask2:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_NAME)) + self.txBounty1:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) + self.txBounty2:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) + self.txSkin1:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_3)) + self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_3)) + self.txHero1:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_4)) + self.txHero2:setText(I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_4)) + + self.btnTask:addClickListener(function() + self.panelType = GConst.ActivityConst.PANEL_TYPE.TASK + self:onRefresh() + end) + self.btnBounty:addClickListener(function() + self.panelType = GConst.ActivityConst.PANEL_TYPE.BOUNTY + self:onRefresh() + end) + self.btnSkin:addClickListener(function() + self.panelType = GConst.ActivityConst.PANEL_TYPE.SKIN + self:onRefresh() + end) + self.btnHero:addClickListener(function() + self.panelType = GConst.ActivityConst.PANEL_TYPE.HERO + self:onRefresh() + end) + self.btnClose:addClickListener(function() + self:closeUI() + 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_DESC_10), + } + ModuleManager.TipsManager:showHelpTips(params) + end) + self:addEventListener(EventManager.CUSTOM_EVENT.ACTIVITY_SUMMER_END, function() + self:closeUI() + end) + self:bind(DataManager.ActivityData, "isDirty", function() + self:onRefresh() + end) +end + +function ActivityUI:onRefresh() + self.txTitle:setText(DataManager.ActivityData:getActTitle()) + self.imgTitle:setSprite(DataManager.ActivityData:getActTitleBg()) + + -- 倒计时 + if self.actCountdownSid then + self.txCountdown:unscheduleGlobal(self.actCountdownSid) + end + self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.ActivityData:getEndRemainTime())) + self.actCountdownSid = self.txCountdown:scheduleGlobal(function() + self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.ActivityData:getEndRemainTime())) + end, 1) + + if self.panelType == GConst.ActivityConst.PANEL_TYPE.TASK then + self:showTaskInfo() + elseif self.panelType == GConst.ActivityConst.PANEL_TYPE.BOUNTY then + self:showBountyInfo() + elseif self.panelType == GConst.ActivityConst.PANEL_TYPE.SKIN then + self:showSkinInfo() + elseif self.panelType == GConst.ActivityConst.PANEL_TYPE.HERO then + self:showHeroInfo() + end + self:refreshRedPoint() +end + +-- 刷新标签红点 +function ActivityUI:refreshRedPoint() + if DataManager.ActivityData:hasTaskRedPoint() then + self.btnTask:addRedPoint(-55, 0, 0.6) + else + self.btnTask:removeRedPoint() + end + if DataManager.ActivityData:hasBountyRedPoint() then + self.btnBounty:addRedPoint(-55, 0, 0.6) + else + self.btnBounty:removeRedPoint() + end + if DataManager.ActivityData:hasSkinRedPoint() then + self.btnSkin:addRedPoint(-55, 0, 0.6) + else + self.btnSkin:removeRedPoint() + end + if DataManager.ActivityData:hasHeroRedPoint() then + self.btnHero:addRedPoint(-55, 0, 0.6) + else + self.btnHero:removeRedPoint() + end +end + +function ActivityUI:showTaskInfo() + self.taskPanel:setActive(true) + self.selectTask:setActive(true) + self.bountyPanel:setActive(false) + self.selectBounty:setActive(false) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.heroPanel:setActive(false) + self.selectHero:setActive(false) + self.btnHelp:setActive(true) + + if not self.compTask then + self.taskPanel:initPrefabHelper() + self.taskPanel:genAllChildren() + self.compTask = self.taskPanel:addLuaComponent(COMP_TASK) + end + + self.compTask:refresh() +end + +function ActivityUI:showBountyInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.bountyPanel:setActive(true) + self.selectBounty:setActive(true) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.heroPanel:setActive(false) + self.selectHero:setActive(false) + self.btnHelp: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 ActivityUI:showSkinInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.bountyPanel:setActive(false) + self.selectBounty:setActive(false) + self.skinPanel:setActive(true) + self.selectSkin:setActive(true) + self.heroPanel:setActive(false) + self.selectHero:setActive(false) + self.btnHelp:setActive(false) + + if not self.compSkin then + self.skinPanel:initPrefabHelper() + self.skinPanel:genAllChildren() + self.compSkin = self.skinPanel:addLuaComponent(COMP_SKIN) + end + + self.compSkin:refresh() +end + +function ActivityUI:showHeroInfo() + self.taskPanel:setActive(false) + self.selectTask:setActive(false) + self.bountyPanel:setActive(false) + self.selectBounty:setActive(false) + self.skinPanel:setActive(false) + self.selectSkin:setActive(false) + self.heroPanel:setActive(true) + self.selectHero:setActive(true) + self.btnHelp:setActive(false) + + if not self.compHero then + self.heroPanel:initPrefabHelper() + self.heroPanel:genAllChildren() + self.compHero = self.heroPanel:addLuaComponent(COMP_HERO) + end + + self.compHero:refresh() +end + +return ActivityUI \ No newline at end of file diff --git a/lua/app/ui/activity/activity_ui.lua.meta b/lua/app/ui/activity/activity_ui.lua.meta new file mode 100644 index 00000000..cf54edd7 --- /dev/null +++ b/lua/app/ui/activity/activity_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0c526726984e51544a3c4431f87407a6 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/cell.meta b/lua/app/ui/activity/cell.meta new file mode 100644 index 00000000..297eeb68 --- /dev/null +++ b/lua/app/ui/activity/cell.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c4d674ecc75bed47a3147c849d209d8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/activity/cell/activity_bounty_cell.lua b/lua/app/ui/activity/cell/activity_bounty_cell.lua new file mode 100644 index 00000000..e0ed389a --- /dev/null +++ b/lua/app/ui/activity/cell/activity_bounty_cell.lua @@ -0,0 +1,60 @@ +local ActivityBountyCell = class("ActivityBountyCell", BaseCell) + +function ActivityBountyCell:init() + local uiMap = self:getUIMap() + self.txLevel = uiMap["activity_bounty_cell.level.tx_level"] + self.rewardCell1 = uiMap["activity_bounty_cell.reward_cell_1"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + self.rewardCell2 = uiMap["activity_bounty_cell.reward_cell_2"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + self.rewardCell3 = uiMap["activity_bounty_cell.reward_cell_3"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) +end + +function ActivityBountyCell:refresh(level, data) + self.gradeData = data + self.txLevel:setText(level) + + local isGet + local curGrade = DataManager.ActivityData:getBountyGrade() + + isGet = DataManager.ActivityData:isReceivedBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE) + self.rewardCell1:refreshByConfig(DataManager.ActivityData:getBountyGradeReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE), isGet, isGet) + self.rewardCell1:showLock(curGrade < GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE) + if DataManager.ActivityData:canGetBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE) then + self.rewardCell1.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell1:addClickListener(function() + self:onClickReward(GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE) + end) + else + self.rewardCell1.baseObject:removeRedPoint() + end + + isGet = DataManager.ActivityData:isReceivedBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + self.rewardCell2:refreshByConfig(DataManager.ActivityData:getBountyGradeReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1), isGet, isGet) + self.rewardCell2:showLock(curGrade < GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + if DataManager.ActivityData:canGetBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) then + self.rewardCell2.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell2:addClickListener(function() + self:onClickReward(GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) + end) + else + self.rewardCell2.baseObject:removeRedPoint() + end + + isGet = DataManager.ActivityData:isReceivedBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) + self.rewardCell3:refreshByConfig(DataManager.ActivityData:getBountyGradeReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2), isGet, isGet) + self.rewardCell3:showLock(curGrade < GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) + if DataManager.ActivityData:canGetBountyReward(level, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) then + self.rewardCell3.baseObject:addRedPoint(50, 50, 0.6) + self.rewardCell3:addClickListener(function() + self:onClickReward(GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) + end) + else + self.rewardCell3.baseObject:removeRedPoint() + end +end + +-- 领取奖励 +function ActivityBountyCell:onClickReward(grade) + ModuleManager.ActivityManager:reqSummerBountyReward(self.gradeData.id, grade) +end + +return ActivityBountyCell \ No newline at end of file diff --git a/lua/app/ui/activity/cell/activity_bounty_cell.lua.meta b/lua/app/ui/activity/cell/activity_bounty_cell.lua.meta new file mode 100644 index 00000000..fc6f684b --- /dev/null +++ b/lua/app/ui/activity/cell/activity_bounty_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 306878aa195006a4786dbeeea3b520d9 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/activity/cell/activity_task_cell.lua b/lua/app/ui/activity/cell/activity_task_cell.lua new file mode 100644 index 00000000..271fdf6d --- /dev/null +++ b/lua/app/ui/activity/cell/activity_task_cell.lua @@ -0,0 +1,64 @@ +local ActivityTaskCell = class("ActivityTaskCell", BaseCell) +local TASK_BG = { + {GConst.ATLAS_PATH.TASK, "task_bg_2"}, + {GConst.ATLAS_PATH.ACT_SUMMER, "act_summer_bg_2"}, +} +local TASK_ICON_BG = { + {GConst.ATLAS_PATH.TASK, "task_bg_4"}, + {GConst.ATLAS_PATH.ACT_SUMMER, "act_summer_board_1"}, +} + +function ActivityTaskCell:init() + local uiMap = self:getUIMap() + self.imgTaskBg = uiMap["activity_task_cell.img_task_bg"] + self.imgTask = uiMap["activity_task_cell.img_task_bg.img_task"] + self.txDesc = uiMap["activity_task_cell.tx_desc"] + self.imgProg = uiMap["activity_task_cell.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.txProg = uiMap["activity_task_cell.prog.tx_prog"] + self.txRewardName = uiMap["activity_task_cell.tx_reward_name"] + self.txNum = uiMap["activity_task_cell.tx_num"] + self.finish = uiMap["activity_task_cell.finish"] + self.txFinish = uiMap["activity_task_cell.finish.bg.tx_finish"] + + self:addClickListener(function() + if DataManager.ActivityData:canGetTaskReward(self.taskId) and not DataManager.ActivityData:isReceivedTaskReward(self.taskId) then + ModuleManager.ActivityManager:reqSummerTaskReward(self.taskId) + end + end) +end + +function ActivityTaskCell:refresh(id) + self.taskId = id + local total = DataManager.ActivityData:getTaskTarget(self.taskId) + local cur = DataManager.ActivityData:getTaskProgress(self.taskId) + self.imgTask:setSprite(GConst.ATLAS_PATH.ICON_TASK, DataManager.ActivityData:getTaskIcon(self.taskId)) + self.txDesc:setText(DataManager.ActivityData:getTaskDesc(self.taskId)) + self.imgProg.value = cur / total + self.txProg:setText(cur .. "/" .. total) + self.txRewardName:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_16)) + self.txNum:setText(DataManager.ActivityData:getTaskRewardNum(self.taskId)) + self.txFinish:setText(I18N:getGlobalText(I18N.GlobalConst.STR_COMPLETED)) + + self.finish:setActive(false) + self.baseObject:removeRedPoint() + if DataManager.ActivityData:canGetTaskReward(self.taskId) then + -- 已完成 + if DataManager.ActivityData:isReceivedTaskReward(self.taskId) then + -- 已领取 + self.baseObject:setSprite(TASK_BG[1][1], TASK_BG[1][2]) + self.imgTaskBg:setSprite(TASK_ICON_BG[1][1], TASK_ICON_BG[1][2]) + self.finish:setActive(true) + else + -- 未领取 + self.baseObject:setSprite(TASK_BG[2][1], TASK_BG[2][2]) + self.imgTaskBg:setSprite(TASK_ICON_BG[2][1], TASK_ICON_BG[2][2]) + self.baseObject:addRedPoint(260, 70, 0.8) + end + else + --未完成 + self.baseObject:setSprite(TASK_BG[1][1], TASK_BG[1][2]) + self.imgTaskBg:setSprite(TASK_ICON_BG[1][1], TASK_ICON_BG[1][2]) + end +end + +return ActivityTaskCell \ No newline at end of file diff --git a/lua/app/ui/activity/cell/activity_task_cell.lua.meta b/lua/app/ui/activity/cell/activity_task_cell.lua.meta new file mode 100644 index 00000000..13f8a673 --- /dev/null +++ b/lua/app/ui/activity/cell/activity_task_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 95f71fc79d8d6ce4485129fac274d448 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/common/cell/reward_cell.lua b/lua/app/ui/common/cell/reward_cell.lua index e76e59db..c2aaac5c 100644 --- a/lua/app/ui/common/cell/reward_cell.lua +++ b/lua/app/ui/common/cell/reward_cell.lua @@ -12,6 +12,7 @@ function RewardCell:init() self.sImg = uiMap["reward_cell.item_bg.s"] self.matchImg = uiMap["reward_cell.item_bg.match_img"] self.frameAni = uiMap["reward_cell.frame_ani"] + self.lock = uiMap["reward_cell.lock"] -- 首通 self.firstPass = uiMap["reward_cell.first"] self.firstPassTx = uiMap["reward_cell.first.tx_first"] @@ -36,9 +37,9 @@ function RewardCell:refresh(reward) if info == nil then return end - self:_refreshItem(info, reward.item.count) self.rewardId = reward.item.id self.rewardType = reward.type + self:_refreshItem(info, reward.item.count) else self.rewardId = nil end @@ -52,9 +53,9 @@ function RewardCell:refreshByConfig(reward, mask, check) if info == nil then return end - self:_refreshItem(info, reward.num) self.rewardId = reward.id self.rewardType = reward.type + self:_refreshItem(info, reward.num) else self.rewardId = nil end @@ -74,6 +75,7 @@ function RewardCell:refreshItemById(itemId, count, mask, check) end function RewardCell:_refreshItem(info, count) + self.lock:setVisible(false) self.numTx:setVisible(true) self.frameBg:setSprite(GConst.ATLAS_PATH.ICON_ITEM, GConst.FRAME_QLT[info.qlt]) if count and count > 0 then @@ -86,6 +88,9 @@ function RewardCell:_refreshItem(info, count) self.numTx:setText(GConst.EMPTY_STRING) end if info.type == GConst.ItemConst.ITEM_TYPE.HERO_FRAGMENT then + -- 英雄碎片道具 + self.skin:setVisible(false) + self.fragment:setVisible(true) local heroInfo = ConfigManager:getConfig("hero")[info.parameter] if heroInfo then self.icon:setSprite(GConst.ATLAS_PATH.ICON_HERO, heroInfo.icon) @@ -97,14 +102,31 @@ function RewardCell:_refreshItem(info, count) self.sImg:setVisible(false) self.matchImg:setVisible(false) end - self.fragment:setVisible(true) + elseif info.type == GConst.ItemConst.ITEM_TYPE.SKIN then + -- 皮肤道具 + self.skin:setVisible(true) + self.matchImg:setVisible(false) + self.fragment:setVisible(false) + local skinInfo = ConfigManager:getConfig("skin")[info.parameter] + if skinInfo then + self.skin:setVisible(true) + self.sImg:setVisible(skinInfo.qlt >= 4) + self.icon:setSprite(GConst.ATLAS_PATH.ICON_HERO, skinInfo.icon) + self.skin:setSprite(GConst.ATLAS_PATH.ICON_HERO, "frame_dec_" .. skinInfo.qlt) + self.skinQlt:setSprite(GConst.ATLAS_PATH.HERO, "hero_skin_" .. skinInfo.qlt) + self.frameBg:setSprite(GConst.ATLAS_PATH.ICON_ITEM, GConst.FRAME_QLT[skinInfo.qlt]) + else + self.icon:setSprite(GConst.ATLAS_PATH.COMMON, "common_alpha") + self.sImg:setVisible(false) + end else + -- 其他 self.icon:setSprite(GConst.ATLAS_PATH.ICON_ITEM, info.icon) self.fragment:setVisible(false) self.sImg:setVisible(false) self.matchImg:setVisible(false) + self.skin:setVisible(false) end - self:showSkin(info.type == GConst.ItemConst.ITEM_TYPE.SKIN) end function RewardCell:setNumTx(str) @@ -175,15 +197,9 @@ function RewardCell:showFirstPass(show) end end --- 展示皮肤标记 -function RewardCell:showSkin(show) - self.skin:setVisible(show == true) - if show then - local qlt = ConfigManager:getConfig("item")[self.rewardId] - self.skin:setSprite(GConst.ATLAS_PATH.ICON_HERO, "frame_dec_" .. qlt) - self.skinQlt:setSprite(GConst.ATLAS_PATH.HERO, "hero_skin_" .. qlt) - self.sImg:setVisible(qlt >= 4) - end +-- 展示锁定标记 +function RewardCell:showLock(show) + self.lock:setVisible(show == true) end return RewardCell \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_activity_cell.lua b/lua/app/ui/main_city/cell/side_bar_activity_cell.lua new file mode 100644 index 00000000..03e0f3cb --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_activity_cell.lua @@ -0,0 +1,46 @@ +local SideBarBaseCellComp = require "app/ui/main_city/cell/side_bar_base_cell" +local SideBarActivityCell = class("SideBarActivityCell", SideBarBaseCellComp) + +function SideBarActivityCell:getModuleKey() + return ModuleManager.MODULE_KEY.ACTIVITY +end + +function SideBarActivityCell:getIsOpen() + return DataManager.ActivityData:isOpen() +end + +function SideBarActivityCell:getSpineName() + return "ui_main_btn_act_summer" +end + +function SideBarActivityCell:onClick() + ModuleManager.ActivityManager:showActivityUI() +end + +function SideBarActivityCell:getIsShowRedPoint() + return DataManager.ActivityData:hasEntryRedPoint() +end + +function SideBarActivityCell:onRefresh() + self.timeBg:setVisible(true) + self:_refreshTime() +end + +function SideBarActivityCell:updateTime() + if self:getIsOpen() then + self:_refreshTime() + else + self:closeBtn() + end +end + +function SideBarActivityCell:_refreshTime() + local remainTime = DataManager.ActivityData:getEndRemainTime() + if remainTime >= 0 then + self.timeTx:setText(GFunc.getTimeStr(remainTime)) + else + self.timeTx:setText("00:00:00") + end +end + +return SideBarActivityCell \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_activity_cell.lua.meta b/lua/app/ui/main_city/cell/side_bar_activity_cell.lua.meta new file mode 100644 index 00000000..04e4b7bd --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_activity_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 17647bcfe606b834e9aca8d6c64249aa +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 7e5da6f2..f6f4320d 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -1100,6 +1100,7 @@ function MainCityUI:checkGift() -- 章节礼包 local chapterPopUpGifts = DataManager.ShopData:getPopUpGiftByType(PayManager.PURCHARSE_TYPE.CHAPTER_GIFT) -- 通用礼包 + local summerGiftIds local beginnerGiftIds local levelUpGiftIds local firstRechargeIds @@ -1110,6 +1111,13 @@ function MainCityUI:checkGift() for _, actId in ipairs(actPopUpGifts) do local cfgInfo = DataManager.ShopData:getActGiftConfig()[actId] if cfgInfo then + -- 夏日活动礼包 + if cfgInfo.type == PayManager.PURCHARSE_ACT_TYPE.ACT_SUMMER then + if not summerGiftIds then + summerGiftIds = {} + end + table.insert(summerGiftIds, actId) + end -- 新手礼包 if cfgInfo.type == PayManager.PURCHARSE_ACT_TYPE.BEGINNER_GIFT then if not beginnerGiftIds then @@ -1149,6 +1157,11 @@ function MainCityUI:checkGift() -- ModuleManager.ShopManager:triggerGiftPopUI(PayManager.PURCHARSE_TYPE.ACT_GIFT, firstRechargeIds[1]) -- return true -- end + -- 夏日礼包在最前 + if summerGiftIds and #summerGiftIds > 0 then + ModuleManager.ShopManager:triggerGiftPopUI(PayManager.PURCHARSE_TYPE.ACT_GIFT, summerGiftIds[1], showType) + return true + end -- 入门礼包 if introductGiftIds and #introductGiftIds > 0 then ModuleManager.ShopManager:triggerGiftPopUI(PayManager.PURCHARSE_TYPE.ACT_GIFT, introductGiftIds[1], showType) diff --git a/lua/app/ui/shop/cell/pop_reward_cell.lua b/lua/app/ui/shop/cell/pop_reward_cell.lua index 6e474622..2ff51dfc 100644 --- a/lua/app/ui/shop/cell/pop_reward_cell.lua +++ b/lua/app/ui/shop/cell/pop_reward_cell.lua @@ -17,8 +17,8 @@ function PopRewardCell:refresh(id, num, showBg) if cfgInfo then self.bg:setVisible(showBg) if cfgInfo.type == GConst.ItemConst.ITEM_TYPE.HERO_FRAGMENT then -- 英雄展示 - self.itemCell:getBaseObject():setVisible(false) - self.popHeroCell:setVisible(true) + self.itemCell:getBaseObject():setActive(false) + self.popHeroCell:getBaseObject():setActive(true) local heroEntity = DataManager.HeroData:getHeroById(id) if heroEntity then @@ -31,8 +31,8 @@ function PopRewardCell:refresh(id, num, showBg) end) self.descTx:setText(ModuleManager.HeroManager:getHeroName(id)) else -- 通用道具 - self.itemCell:getBaseObject():setVisible(true) - self.popHeroCell:setVisible(false) + self.itemCell:getBaseObject():setActive(true) + self.popHeroCell:getBaseObject():setActive(false) self.itemCell:refreshByCfg(id, 0) self.itemCell:setNum("") diff --git a/lua/app/userdata/activity/activity_data.lua b/lua/app/userdata/activity/activity_data.lua index 12aeaef6..667a4422 100644 --- a/lua/app/userdata/activity/activity_data.lua +++ b/lua/app/userdata/activity/activity_data.lua @@ -1,6 +1,492 @@ local ActivityData = class("ActivityData", BaseData) -function ActivityData:init(data) +-- 活动id,目前只有这一个活动 +local ACT_ID = 106 +local ACT_DAYS = 7 + +function ActivityData:ctor() + self.data.isDirty = false +end + +function ActivityData:init() + self.actData = {} + + ModuleManager.ActivityManager:reqSummerData() + self:markGiftPop() +end + +function ActivityData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function ActivityData:isOpen() + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.ACTIVITY, true) then + return false + end + if #self:getActiveIdList() <= 0 then + return false + end + return true +end + +-- 获取活动时间配置 +function ActivityData:getActCfg() + return ConfigManager:getConfig("activity")[ACT_ID] +end + +-- 获取活动战令配置 +function ActivityData:getBountyCfg() + if self.bountyCfg == nil then + self.bountyCfg = {} + for id, data in pairs(ConfigManager:getConfig("activity_bounty_level")) do + if data.act_id == ACT_ID then + data.id = id + table.insert(self.bountyCfg, data) + end + end + table.sort(self.bountyCfg, function (a, b) + return a.id < b.id + end) + end + + return self.bountyCfg +end + +-- 获取当前开启的活动id列表 +function ActivityData:getActiveIdList() + local result = {} + for id, data in pairs(ConfigManager:getConfig("activity")) do + if self:isInActiveTime() then + table.insert(result, id) + end + end + return result +end + +-- 是否在活动时间内 +function ActivityData:isInActiveTime() + if self.actData.activated_at == nil or self.actData.activated_at <= 0 then + return false + end + + local startTime = Time:getBeginningOfOneDay(self.actData.activated_at // 1000) + local endTime = startTime + ACT_DAYS * 24 * 60 * 60 + return Time:getServerTime() >= startTime and Time:getServerTime() <= endTime +end + +-- 获取活动开启剩余时间(秒) +function ActivityData:getStartRemainTime() + local startTime = Time:getCertainTimeByStr(self:getActCfg().start_time) + return startTime - Time:getServerTime() +end + +-- 获取活动结束剩余时间(秒) +function ActivityData:getEndRemainTime() + local startTime = Time:getBeginningOfOneDay(self.actData.activated_at // 1000) + local endTime = startTime + ACT_DAYS * 24 * 60 * 60 + return math.floor(endTime) - Time:getServerTime() +end + +-- 当前为活动第几天 +function ActivityData:getActDay() + if self.actData == nil then + return 0 + end + + local days = Time:getDistanceDays(self.actData.activated_at // 1000) + if days < 0 then + days = -days + end + return days + 1 +end + +-- 获取活动标题 +function ActivityData:getActTitle() + return I18N:getGlobalText(I18N.GlobalConst.ACT_DESC_2) +end + +-- 获取活动标题背景 +function ActivityData:getActTitleBg() + return GConst.ATLAS_PATH.ACT_SUMMER, "act_summer_title_1" +end + +-- 是否有入口红点 +function ActivityData:hasEntryRedPoint() + return self:hasTaskRedPoint() or self:hasBountyRedPoint() or self:hasSkinRedPoint() or self:hasHeroRedPoint() +end + +-- 获取活动数据成功 +function ActivityData:onGetActData(data) + self.actData = data + + -- 注册任务进度监听 + if self:isInActiveTime() then + for id, data in ipairs(ConfigManager:getConfig("activity_bounty_task")) do + ModuleManager.TaskManager:registerTask("ActivityData", data.type, function(count) + self:addTaskProgress(data.type, count) + end) + end + end + + if EDITOR_MODE then + Logger.logHighlight("夏日活动:".. self:getActDay()) + Logger.printTable(data) + end + + ModuleManager.ActivityManager:initSummerTimer() + + self:setDirty() +end + +-- 任务-------------------------------------------------------------------------------------------------- + +-- 获取今日任务列表 +function ActivityData:getTaskListSort() + local canGet = {} + local unfinish = {} + local result = {} + + for index, id in ipairs(table.keys(ConfigManager:getConfig("activity_bounty_task"))) do + if self:canGetTaskReward(id) then + -- 已完成 + if self:isReceivedTaskReward(id) then + -- 已领取 + table.insert(result, id) + else + -- 未领取 + table.insert(canGet, id) + end + else + --未完成 + table.insert(unfinish, id) + end + end + + unfinish = table.addArray(canGet, unfinish) + result = table.addArray(unfinish, result) + + return result +end + +-- 获取任务目标 +function ActivityData:getTaskTarget(id) + return ConfigManager:getConfig("activity_bounty_task")[id].number[self:getTaskStage(id)] +end + +-- 获取任务奖励 +function ActivityData:getTaskRewardNum(id) + return ConfigManager:getConfig("activity_bounty_task")[id].reward[self:getTaskStage(id)] +end + +-- 获取任务icon +function ActivityData:getTaskIcon(id) + return ConfigManager:getConfig("activity_bounty_task")[id].icon +end + +-- 获取任务描述 +function ActivityData:getTaskDesc(id) + local cfg = I18N:getConfig("activity_bounty_task") + if cfg == nil then + return GConst.EMPTY_STRING + end + return cfg[id].desc +end + +-- 获取任务类型 +function ActivityData:getTaskType(id) + return ConfigManager:getConfig("activity_bounty_task")[id].type +end + +-- 获取任务总阶段数 +function ActivityData:getTaskTotalStageNum(id) + local cfg = ConfigManager:getConfig("activity_bounty_task")[id] + if #cfg.number ~= #cfg.reward then + Logger.logError("活动任务阶段和奖励数量不一致,让策划检查配置!") + end + + return #cfg.number +end + +-- 获取任务所处阶段 +function ActivityData:getTaskStage(id) + local stage = 1 + local maxStage = self:getTaskTotalStageNum(id) + stage = self:getTaskClaimedStage(id) + 1 + if stage > maxStage then + stage = maxStage + end + return stage +end + +-- 获取任务进度 +function ActivityData:getTaskProgress(id) + local taskType = self:getTaskType(id) + if self.actData and self.actData.task_info and self.actData.task_info.summer_task and self.actData.task_info.summer_task[taskType] then + return self.actData.task_info.summer_task[taskType] + end + return 0 +end + +-- 获取任务已领取的最大阶段 +function ActivityData:getTaskClaimedStage(id) + local taskType = self:getTaskType(id) + if self.actData and self.actData.task_info and self.actData.task_info.claimed_stage and self.actData.task_info.claimed_stage[taskType] then + return self.actData.task_info.claimed_stage[taskType] + end + return 0 +end + +-- 任务是否完成 +function ActivityData:canGetTaskReward(id) + return self:getTaskProgress(id) >= self:getTaskTarget(id) +end + +-- 任务奖励是否已领取 +function ActivityData:isReceivedTaskReward(id) + return self:getTaskClaimedStage(id) >= self:getTaskStage(id) +end + +-- 是否有任务红点 +function ActivityData:hasTaskRedPoint() + for index, id in ipairs(table.keys(ConfigManager:getConfig("activity_bounty_task"))) do + if self:canGetTaskReward(id) and not self:isReceivedTaskReward(id) then + return true + end + end + return false +end + +-- 添加任务进度 +function ActivityData:addTaskProgress(taskType, count) + if self.actData.task_info.summer_task[taskType] == nil then + self.actData.task_info.summer_task[taskType] = 0 + end + self.actData.task_info.summer_task[taskType] = self.actData.task_info.summer_task[taskType] + count + + self:setDirty() +end + +-- 领取任务奖励成功 +function ActivityData:onReceivedTaskReward(id, getMaxStage, level, exp) + local taskType = self:getTaskType(id) + self.actData.task_info.claimed_stage[taskType] = getMaxStage + self.actData.level = level + self.actData.exp = exp + self:setDirty() +end + +-- 战令-------------------------------------------------------------------------------------------------- + +-- 获取战令档位,0免费档,1、2付费档 +function ActivityData:getBountyGrade() + if DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.ActivityConst.BOUNTY_GIFT_ID_2) > 0 then + return GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 + end + if DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.ActivityConst.BOUNTY_GIFT_ID_1) > 0 then + return GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 + end + + return GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE +end + +-- 获取战令档位礼包配置 +function ActivityData:getBountyGradeGiftCfg(gradeType) + if gradeType == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + return DataManager.ShopData:getActGiftConfig()[GConst.ActivityConst.BOUNTY_GIFT_ID_1] + elseif gradeType == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + return DataManager.ShopData:getActGiftConfig()[GConst.ActivityConst.BOUNTY_GIFT_ID_2] + end +end + +-- 战令最大等级 +function ActivityData:getBountyMaxLevel() + return #self:getBountyCfg() +end + +-- 获取战令等级 +function ActivityData:getBountyLevel() + if self.actData == nil or self.actData.level == nil then + return 1 + end + return self.actData.level +end + +-- 获取当前等级战令积分 +function ActivityData:getBountyLevelScore() + if self.actData == nil or self.actData.exp == nil then + return 0 + end + return self.actData.exp +end + +-- 获取当前升级所需总积分 +function ActivityData:getBountyUpgradeScore() + return self:getBountyCfg()[self:getBountyLevel()].exp +end + +-- 是否满足购买战令等级的条件 +function ActivityData:canBuyBountyLevel() + return self:getActDay() >= GFunc.getConstIntValue("activity_bounty_day") +end + +-- 购买战令等级的消耗 +function ActivityData:getBuyBountyLevelCost() + return GFunc.getConstReward("activity_bounty_cost") +end + +-- 是否有战令红点 +function ActivityData:hasBountyRedPoint() + local curLevel = self:getBountyLevel() + local lv = 0 + for idx, data in ipairs(self:getBountyCfg()) do + lv = lv + 1 + if lv > curLevel then + break + end + + if self:canGetBountyReward(lv, GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE) then + return true + end + if self:canGetBountyReward(lv, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1) then + return true + end + if self:canGetBountyReward(lv, GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2) then + return true + end + end + + return false +end + +-- 获取战令档位所有奖励,排序 +function ActivityData:getBountyGradeAllRewardSort(grade) + local rewards = {} + for idx, data in ipairs(self:getBountyCfg()) do + if grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE then + table.insert(rewards, data.reward) + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + table.insert(rewards, data.reward_pro) + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + table.insert(rewards, data.reward_pro_max) + end + end + rewards = GFunc.mergeRewards(rewards) + table.sort(rewards, function(a, b) + return a.id > b.id + end) + + return rewards +end + +-- 获取战令档位奖励 +function ActivityData:getBountyGradeReward(level, grade) + local cfg = self:getBountyCfg()[level] + local result + if cfg ~= nil then + if grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE then + result = cfg.reward + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + result = cfg.reward_pro + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + result = cfg.reward_pro_max + end + end + return result +end + +-- 战令奖励是否满足领取条件 +function ActivityData:isReachBountyReward(level, grade) + local curLevel = self:getBountyLevel() + local curGrade = self:getBountyGrade() + if curLevel >= level then + return grade <= curGrade + else + return false + end +end + +-- 战令奖励可领取 +function ActivityData:canGetBountyReward(level, grade) + return self:isReachBountyReward(level, grade) and not self:isReceivedBountyReward(level, grade) +end + +-- 战令奖励是否已领取 +function ActivityData:isReceivedBountyReward(level, grade) + local id = self:getBountyCfg()[level].id + if self.actData == nil or self.actData.collected == nil or self.actData.collected[id] == nil then + return false + end + + if grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE then + return self.actData.collected[id].normal + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + return self.actData.collected[id].superior + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + return self.actData.collected[id].superior_max + end +end + +-- 战令档位购买成功 +function ActivityData:onBuyBountyGrade(giftId) + local grade + if giftId == GConst.ActivityConst.BOUNTY_GIFT_ID_1 then-- 解锁1档 + grade = GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 + elseif giftId == GConst.ActivityConst.BOUNTY_GIFT_ID_2 then-- 解锁2档 + grade = GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 + end + + ModuleManager.ActivityManager:reqSummerBountyReward(0, grade)-- 请求档位全部奖励 + + self:setDirty() +end + +-- 战令奖励领取成功 +function ActivityData:onReceivedBountyReward(successMap) + for id, grade in pairs(successMap) do + if self.actData.collected[id] == nil then + self.actData.collected[id] = {} + end + + if grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.FREE then + self.actData.collected[id].normal = true + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY1 then + self.actData.collected[id].superior = true + elseif grade == GConst.ActivityConst.BOUNTY_GRADE_TYPE.PAY2 then + self.actData.collected[id].superior_max = true + end + end + + self:setDirty() +end + +-- 解锁战令等级成功 +function ActivityData:onBoughtBountyLevel() + self.actData.level = self.actData.level + 1 + self:setDirty() +end + +-- 礼包-------------------------------------------------------------------------------------------------- + +-- 标记礼包弹出状态 +function ActivityData:markGiftPop() + if DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.SKIN_GIFT_ID_1) > 0 then + DataManager.ShopData:markPopUpGift(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.ActivityConst.SKIN_GIFT_ID_1) + elseif DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.SKIN_GIFT_ID_2) > 0 then + DataManager.ShopData:markPopUpGift(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.ActivityConst.SKIN_GIFT_ID_2) + end + if DataManager.ShopData:getGiftRemainBuyNum(GConst.ActivityConst.HERO_GIFT_ID_1) > 0 then + DataManager.ShopData:markPopUpGift(PayManager.PURCHARSE_TYPE.ACT_GIFT, GConst.ActivityConst.HERO_GIFT_ID_1) + end +end + +-- 皮肤礼包是否有红点 +function ActivityData:hasSkinRedPoint() + return not LocalData:getTodayActSummerWatchedSkin() +end + +-- 英雄礼包是否有红点 +function ActivityData:hasHeroRedPoint() + return not LocalData:getTodayActSummerWatchedHero() end return ActivityData \ No newline at end of file diff --git a/lua/app/userdata/equip/equip_entity.lua b/lua/app/userdata/equip/equip_entity.lua index 4078b9b9..75ccbc7f 100644 --- a/lua/app/userdata/equip/equip_entity.lua +++ b/lua/app/userdata/equip/equip_entity.lua @@ -279,6 +279,11 @@ end -- 部位是否可升级 function EquipEntity:canLevelUp() + -- 判断英雄解锁 + if not self:getHeroEntity():isUnlock() then + return false + end + --判断材料 if not self:isEnoughMaterial() then return false diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 8b95144b..6f46a9bf 100644 --- a/lua/app/userdata/hero/hero_entity.lua +++ b/lua/app/userdata/hero/hero_entity.lua @@ -433,8 +433,7 @@ function HeroEntity:getHurtNum() end function HeroEntity:getName() - local skinName = DataManager.SkinData:getName(self:getSkinId()) - return skinName or ModuleManager.HeroManager:getHeroName(self:getCfgId()) + return ModuleManager.HeroManager:getHeroName(self:getCfgId()) end function HeroEntity:getDesc() diff --git a/lua/app/userdata/shop/shop_data.lua b/lua/app/userdata/shop/shop_data.lua index 816fef43..da8f5b80 100644 --- a/lua/app/userdata/shop/shop_data.lua +++ b/lua/app/userdata/shop/shop_data.lua @@ -83,6 +83,13 @@ function ShopData:getGiftBoughtNum(actType, actId) return 0 end +-- 获取通用礼包剩余可购买次数 +function ShopData:getGiftRemainBuyNum(actId) + local bought = self:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actId) + + return self:getActGiftConfig()[actId].limit - bought +end + -- 礼包购买成功更新 function ShopData:updateGiftInfo(gift) local giftType = gift.act_type @@ -107,6 +114,8 @@ function ShopData:updateGiftInfo(gift) DataManager.ArenaData:onBoughtGift(giftId) elseif cfg[giftId].type == PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT or cfg[giftId].type == PayManager.PURCHARSE_ACT_TYPE.ARMOR_GIFT then self:onGiftBuySuccess(cfg[giftId].type) + elseif cfg[giftId].type == PayManager.PURCHARSE_ACT_TYPE.ACT_SUMMER then + DataManager.ActivityData:onBuyBountyGrade(giftId) end end end diff --git a/lua/app/userdata/skin/skin_data.lua b/lua/app/userdata/skin/skin_data.lua index 89ab302e..b44204da 100644 --- a/lua/app/userdata/skin/skin_data.lua +++ b/lua/app/userdata/skin/skin_data.lua @@ -125,7 +125,7 @@ end -- 获取模型id function SkinData:getModelId(skinId) local cfg = self:getSkinCfg(skinId) - return cfg and cfg.model_id or "p0001"-- 未配置模型id的处理 + return cfg and cfg.model_id end -- 获取皮肤来源 @@ -287,8 +287,11 @@ end -- 解锁皮肤 function SkinData:onUnlockSkin(itemId) local skinId = self:getSkinIdByItemId(itemId) + if skinId == nil then + return + end local heroId = self:getHeroIdBySkinId(skinId) - if skinId or heroId then + if heroId == nil then return end