夏日活动

This commit is contained in:
Fang 2023-08-04 10:48:15 +08:00
parent f5ed280271
commit e0db8bcfda
68 changed files with 1860 additions and 52 deletions

View File

@ -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 = {

View File

@ -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",
}
-- 此方法不能直接在外部调用请使用例如BaseUIBaseModule等封装好的接口

View File

@ -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

View File

@ -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", -- 每日挑战

View File

@ -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,

View File

@ -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)

View File

@ -111,6 +111,26 @@ local avatar = {
["iconId"]="26",
["hero"]=54002
},
[14003]={
["iconId"]="31",
["hero"]=14003
},
[24003]={
["iconId"]="27",
["hero"]=24003
},
[34003]={
["iconId"]="28",
["hero"]=34003
},
[44003]={
["iconId"]="29",
["hero"]=44003
},
[54003]={
["iconId"]="30",
["hero"]=54003
},
[1400201]={
["iconId"]="skin_3",
["item"]=1400201
@ -129,6 +149,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5a5148a7b16b1fc41b4cf4d3032434f7
guid: 893b1162479b05246acae9d3a7c2dc8d
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1127c4a778e20e548bab5b6d9197438f
guid: ecf9832219c651a42a6da2144d6b4b0e
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -80,6 +80,21 @@ local avatar = {
[25001]={
["desc"]="激活闪烁法师后获得。"
},
[14003]={
["desc"]="激活恶魔侍者后获得。"
},
[24003]={
["desc"]="激活阿飞后获得。"
},
[34003]={
["desc"]="激活忍者菲尔后获得。"
},
[44003]={
["desc"]="激活月之法师后获得。"
},
[54003]={
["desc"]="激活堕落骑士后获得。"
},
[1400201]={
["desc"]="激活潘达沙滩王者皮肤获得。"
},
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 918bec283e903ac40b3c53b3f01b7e6e
guid: 0f83d9ac19d0ece40a8322b3a3076967
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 37583a684486ff14f81e7f764ee1dfe7
guid: da6eafcb15352aa48ad1a28bb73f5875
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="Obtained after activating Twinkling Mage."
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d227df9391e785e408121f4ff642cfb5
guid: aba4b90f0689e0d49ac6fbecf9f457e6
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="Se obtiene tras activar Mago Brillante."
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 519cb5672fc300e46a858a224241830b
guid: 5d2e06c6a89d5ba4f9f56288581b30fb
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1218053606fbff34db28d72a590c208a
guid: 256cb63107484c14388a13d5f80f47c1
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="Dapat setelah lolos Blink Mage"
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 10498da83e85fdf4dbb6c8206ca0d693
guid: 3d8991f3c62a35d46a4f56b0fd0bebac
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="トゥインクリングメイジをアクティブ化後獲得できる。"
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 14212bd9d0535924eb424e56b3d89aae
guid: dc9c852361917104da8be013c7b344c1
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="반짝이는 마법사을(를) 활성화한 후, 획득할 수 있습니다."
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a5b8d45ff88b5cc4b97a7220f6d9dd7b
guid: 888023c46b5a83e4ca8623eb8b44146f
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="Ativar Mago do Brilho para obter."
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fa0d75a897385e244a94199562ff8a10
guid: 5b35ae430e54fbe44b652cbfca604e87
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="หลังจากการเปิดใช้งานนักเวทแวบวับจะได้รับ"
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f49db969f35f5744cbb754a485aafaf6
guid: 3b9824b549f61574e81a5ef2be629f48
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="Kích hoạt Pháp Sư Blink nhận được."
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2f94a212b1547cc49a9ca8a0c0a11388
guid: cae075fa2ab34d4468845c6964b80002
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -79,6 +79,21 @@ local avatar = {
},
[25001]={
["desc"]="啟動閃爍法師後獲得。"
},
[14003]={
},
[24003]={
},
[34003]={
},
[44003]={
},
[54003]={
},
[1400201]={
@ -94,6 +109,6 @@ local avatar = {
}
}
local config = {
data=avatar,count=31
data=avatar,count=36
}
return config

View File

@ -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 =

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 0b055c01cb49c774ea9d7417586df034
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -14,4 +14,101 @@ function ActivityManager:onBoughtGoldPigFinish(result)
end
end
-- 夏日活动分界线-----------------------------------------------------------------------------------------------------
function ActivityManager:showActivityUI()
UIManager:showUI("app/ui/activity/activity_ui")
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)
DataManager.ActivityData:onGetActData(result.summer)
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

View File

@ -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)

View File

@ -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"
}

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 2433585b4982fc8439f9ea349d187da2
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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("LV")
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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 6be3caa8b2628cc4eb4bd042b7600484
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: acb5324ea144d4e40841f09925c09155
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: efbdbb326ef93fc488aa2aa486acd5aa
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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("LV")
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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 3f79f106fd5bfec40abd342921663365
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,241 @@
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()
self.panelType = GConst.ActivityConst.PANEL_TYPE.TASK -- 默认进入任务页签
if self.panelType == nil and DataManager.ActivityData:hasTaskRedPoint() then
self.panelType = GConst.ActivityConst.PANEL_TYPE.TASK
elseif self.panelType == nil and DataManager.ActivityData:hasBountyRedPoint() then
self.panelType = GConst.ActivityConst.PANEL_TYPE.BOUNTY
elseif self.panelType == nil and DataManager.ActivityData:hasSkinRedPoint() then
self.panelType = GConst.ActivityConst.PANEL_TYPE.SKIN
elseif self.panelType == nil and DataManager.ActivityData:hasHeroRedPoint() then
self.panelType = GConst.ActivityConst.PANEL_TYPE.HERO
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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 0c526726984e51544a3c4431f87407a6
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1c4d674ecc75bed47a3147c849d209d8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 306878aa195006a4786dbeeea3b520d9
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 95f71fc79d8d6ce4485129fac274d448
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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

View File

@ -0,0 +1,24 @@
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
return SideBarActivityCell

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 17647bcfe606b834e9aca8d6c64249aa
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -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("")

View File

@ -1,6 +1,479 @@
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()
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 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 0
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:hasSkinRedPoint()
return not LocalData:getTodayActSummerWatchedSkin()
end
-- 英雄礼包是否有红点
function ActivityData:hasHeroRedPoint()
return not LocalData:getTodayActSummerWatchedHero()
end
return ActivityData

View File

@ -279,6 +279,11 @@ end
-- 部位是否可升级
function EquipEntity:canLevelUp()
-- 判断英雄解锁
if not self:getHeroEntity():isUnlock() then
return false
end
--判断材料
if not self:isEnoughMaterial() then
return false

View File

@ -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()

View File

@ -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

View File

@ -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