ui动画、结算界面逻辑

This commit is contained in:
Fang 2023-06-30 10:19:47 +08:00
parent 84f1f27c3c
commit 9dc155e593
26 changed files with 487 additions and 302 deletions

View File

@ -40,6 +40,9 @@ EventManager.CUSTOM_EVENT = {
PLAYER_INFO_CLICK_AVATAR = "PLAYER_INFO_CLICK_AVATAR",-- 个人信息选择头像 PLAYER_INFO_CLICK_AVATAR = "PLAYER_INFO_CLICK_AVATAR",-- 个人信息选择头像
PLAYER_INFO_CLICK_FRAME = "PLAYER_INFO_CLICK_FRAME",-- 个人信息选择头像框 PLAYER_INFO_CLICK_FRAME = "PLAYER_INFO_CLICK_FRAME",-- 个人信息选择头像框
RENAME_SUCCESS = "RENAME_SUCCESS",-- 重命名成功 RENAME_SUCCESS = "RENAME_SUCCESS",-- 重命名成功
-- 竞技场
ARENA_SEASON_SETTLEMENT = "ARENA_SEASON_SETTLEMENT",-- 赛季结算
ARENA_SEASON_END = "ARENA_SEASON_END",-- 赛季结束
-- BORAD_TOUCH_BEGIN = "BORAD_TOUCH_BEGIN", -- BORAD_TOUCH_BEGIN = "BORAD_TOUCH_BEGIN",
-- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER" -- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER"
} }

View File

@ -68,11 +68,11 @@ local func_open = {
["pop_ups"]=1 ["pop_ups"]=1
}, },
["arena_open"]={ ["arena_open"]={
["stage"]=10, ["stage"]=5,
["pop_ups"]=1 ["pop_ups"]=1
}, },
["act_arena_gift"]={ ["act_arena_gift"]={
["stage"]=10, ["stage"]=5,
["pop_ups"]=1 ["pop_ups"]=1
} }
} }

View File

@ -135,9 +135,7 @@ local LocalizationGlobalConst =
LEVEL_FUND_DESC_1 = "LEVEL_FUND_DESC_1", LEVEL_FUND_DESC_1 = "LEVEL_FUND_DESC_1",
BUFF_DESC = "BUFF_DESC", BUFF_DESC = "BUFF_DESC",
DAILY_CHALLENGE_DESC_1 = "DAILY_CHALLENGE_DESC_1", DAILY_CHALLENGE_DESC_1 = "DAILY_CHALLENGE_DESC_1",
DISCONNECT_RELOGIN = "DISCONNECT_RELOGIN",
RECONNECT = "RECONNECT", RECONNECT = "RECONNECT",
RELOGIN = "RELOGIN",
SEVEN_DAY_TITLE = "SEVEN_DAY_TITLE", SEVEN_DAY_TITLE = "SEVEN_DAY_TITLE",
SEVEN_DAY_DESC_1 = "SEVEN_DAY_DESC_1", SEVEN_DAY_DESC_1 = "SEVEN_DAY_DESC_1",
DAY_X = "DAY_X", DAY_X = "DAY_X",
@ -301,6 +299,13 @@ local LocalizationGlobalConst =
ARENA_BATTLE_DESC_3 = "ARENA_BATTLE_DESC_3", ARENA_BATTLE_DESC_3 = "ARENA_BATTLE_DESC_3",
ARENA_BATTLE_DESC_4 = "ARENA_BATTLE_DESC_4", ARENA_BATTLE_DESC_4 = "ARENA_BATTLE_DESC_4",
ARENA_BATTLE_DESC_5 = "ARENA_BATTLE_DESC_5", ARENA_BATTLE_DESC_5 = "ARENA_BATTLE_DESC_5",
ARENA_DESC_25 = "ARENA_DESC_25",
ARENA_DESC_26 = "ARENA_DESC_26",
ARENA_DESC_27 = "ARENA_DESC_27",
ARENA_DESC_29 = "ARENA_DESC_29",
ARENA_DESC_30 = "ARENA_DESC_30",
ARENA_DESC_31 = "ARENA_DESC_31",
ARENA_DESC_HELP = "ARENA_DESC_HELP",
} }
return LocalizationGlobalConst return LocalizationGlobalConst

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "购买成长基金{0}后,可通过提升等级获得钻石。\n多档基金可同时购买", ["LEVEL_FUND_DESC_1"] = "购买成长基金{0}后,可通过提升等级获得钻石。\n多档基金可同时购买",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "今日剩余挑战次数不足", ["DAILY_CHALLENGE_DESC_1"] = "今日剩余挑战次数不足",
["DISCONNECT_RELOGIN"] = "网络连接已断开, 请重新登录",
["RECONNECT"] = "网络连接已断开,是否重连", ["RECONNECT"] = "网络连接已断开,是否重连",
["RELOGIN"] = "重新登录",
["SEVEN_DAY_TITLE"] = "新手七天乐", ["SEVEN_DAY_TITLE"] = "新手七天乐",
["SEVEN_DAY_DESC_1"] = "每天将开启新的任务", ["SEVEN_DAY_DESC_1"] = "每天将开启新的任务",
["DAY_X"] = "第{0}天", ["DAY_X"] = "第{0}天",
@ -301,6 +299,13 @@ local localization_global =
["ARENA_BATTLE_DESC_3"] = "眩晕中", ["ARENA_BATTLE_DESC_3"] = "眩晕中",
["ARENA_BATTLE_DESC_4"] = "冻结中", ["ARENA_BATTLE_DESC_4"] = "冻结中",
["ARENA_BATTLE_DESC_5"] = "昏睡中", ["ARENA_BATTLE_DESC_5"] = "昏睡中",
["ARENA_DESC_25"] = "是否消耗{0}钻石重新匹配?",
["ARENA_DESC_26"] = "对手已经离开,请重新匹配",
["ARENA_DESC_27"] = "竞技场积分{0}",
["ARENA_DESC_29"] = "竞技场结算中,请稍后再匹配……",
["ARENA_DESC_30"] = "竞技场新赛季开启,请更新游戏再进入!",
["ARENA_DESC_31"] = "竞技场结算开始,暂停挑战!",
["ARENA_DESC_HELP"] = "1.竞技场为赛季周期制,每个赛季结束后将重置竞技场并发放上一赛季段位奖励。\n2.竞技场结算将在结束当日的23点30分UTC-0开始结算结算时长为30分钟结算期间为防止竞技场记录员受到干扰竞技场将无法进行挑战请各位骑士见谅。\n3.结算后所有骑士团将重置为当前段位的最低段位阶段。如果前一赛季挑战不足10次则重置为上一段位的最低阶段。",
} }
return localization_global return localization_global

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "After purchasing Growth Fund {0}, you can obtain Diamonds by upgrading. \nMultiple funds can be purchased simultaneously.", ["LEVEL_FUND_DESC_1"] = "After purchasing Growth Fund {0}, you can obtain Diamonds by upgrading. \nMultiple funds can be purchased simultaneously.",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "Insufficient challenge attempts for today.", ["DAILY_CHALLENGE_DESC_1"] = "Insufficient challenge attempts for today.",
["DISCONNECT_RELOGIN"] = "Network disconnected. Please log in again.",
["RECONNECT"] = "Network disconnected. Reconnect?", ["RECONNECT"] = "Network disconnected. Reconnect?",
["RELOGIN"] = "Re-login",
["SEVEN_DAY_TITLE"] = "Novice 7-Day Login Event", ["SEVEN_DAY_TITLE"] = "Novice 7-Day Login Event",
["SEVEN_DAY_DESC_1"] = "New quests are unlocked daily", ["SEVEN_DAY_DESC_1"] = "New quests are unlocked daily",
["DAY_X"] = "Day {0}", ["DAY_X"] = "Day {0}",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "Bisa mendapat berlian dengan naik level setelah membeli {0} Dana Growth.\nDana multi-level dapat dibeli secara bersamaan.", ["LEVEL_FUND_DESC_1"] = "Bisa mendapat berlian dengan naik level setelah membeli {0} Dana Growth.\nDana multi-level dapat dibeli secara bersamaan.",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "Tantangan yang tersisa saat ini tidak cukup", ["DAILY_CHALLENGE_DESC_1"] = "Tantangan yang tersisa saat ini tidak cukup",
["DISCONNECT_RELOGIN"] = "Koneksi jaringan terputus, silakan login ulang",
["RECONNECT"] = "Koneksi jaringan terputus. Login ulang?", ["RECONNECT"] = "Koneksi jaringan terputus. Login ulang?",
["RELOGIN"] = "Login ulang",
["SEVEN_DAY_TITLE"] = "Kegembiraan 7 Hari bagi Pemula", ["SEVEN_DAY_TITLE"] = "Kegembiraan 7 Hari bagi Pemula",
["SEVEN_DAY_DESC_1"] = "Misi baru akan dibuka setiap hari.", ["SEVEN_DAY_DESC_1"] = "Misi baru akan dibuka setiap hari.",
["DAY_X"] = "Hari ke-{0}", ["DAY_X"] = "Hari ke-{0}",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "成長ファンド{0}を購入した後、レベルアップすることでダイヤを獲得できます。\n複数のファンドを同時に購入できます", ["LEVEL_FUND_DESC_1"] = "成長ファンド{0}を購入した後、レベルアップすることでダイヤを獲得できます。\n複数のファンドを同時に購入できます",
["BUFF_DESC"] = "バフ", ["BUFF_DESC"] = "バフ",
["DAILY_CHALLENGE_DESC_1"] = "本日の残り挑戦回数が足りません", ["DAILY_CHALLENGE_DESC_1"] = "本日の残り挑戦回数が足りません",
["DISCONNECT_RELOGIN"] = "ネットワーク接続が切断されました。もう一度ログインしてください",
["RECONNECT"] = "ネットワーク接続が切断されました。再接続しますか", ["RECONNECT"] = "ネットワーク接続が切断されました。再接続しますか",
["RELOGIN"] = "再ログイン",
["SEVEN_DAY_TITLE"] = "初心者7日間ログイン報酬", ["SEVEN_DAY_TITLE"] = "初心者7日間ログイン報酬",
["SEVEN_DAY_DESC_1"] = "ミッションは日ごとに解放される", ["SEVEN_DAY_DESC_1"] = "ミッションは日ごとに解放される",
["DAY_X"] = "{0}日目", ["DAY_X"] = "{0}日目",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "레벨업 펀드{0}를 구매한 후, 레벨업을 통해 다이아를 획득할 수 있습니다. \n여러 등급의 패스는 동시에 구매할 수 있습니다.", ["LEVEL_FUND_DESC_1"] = "레벨업 펀드{0}를 구매한 후, 레벨업을 통해 다이아를 획득할 수 있습니다. \n여러 등급의 패스는 동시에 구매할 수 있습니다.",
["BUFF_DESC"] = "버프", ["BUFF_DESC"] = "버프",
["DAILY_CHALLENGE_DESC_1"] = "오늘 남은 도전 횟수가 부족합니다.", ["DAILY_CHALLENGE_DESC_1"] = "오늘 남은 도전 횟수가 부족합니다.",
["DISCONNECT_RELOGIN"] = "네트워크 연결이 끊어졌습니다. 다시 로그인하세요.",
["RECONNECT"] = "네크워크 연결이 끊어졌습니다. 다시 연결해 보세요.", ["RECONNECT"] = "네크워크 연결이 끊어졌습니다. 다시 연결해 보세요.",
["RELOGIN"] = "다시 로그인하기",
["SEVEN_DAY_TITLE"] = "초보자 7일 축제", ["SEVEN_DAY_TITLE"] = "초보자 7일 축제",
["SEVEN_DAY_DESC_1"] = "매일 새로운 미션이 시작됩니다.", ["SEVEN_DAY_DESC_1"] = "매일 새로운 미션이 시작됩니다.",
["DAY_X"] = "제{0}일", ["DAY_X"] = "제{0}일",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "Após comprar o Fundo de Crescimento {0}, você pode obter diamantes ao aumentar de nível.\nVários fundos podem ser comprados ao mesmo tempo.", ["LEVEL_FUND_DESC_1"] = "Após comprar o Fundo de Crescimento {0}, você pode obter diamantes ao aumentar de nível.\nVários fundos podem ser comprados ao mesmo tempo.",
["BUFF_DESC"] = "BÔNUS", ["BUFF_DESC"] = "BÔNUS",
["DAILY_CHALLENGE_DESC_1"] = "Hoje restam poucas chances de desafio", ["DAILY_CHALLENGE_DESC_1"] = "Hoje restam poucas chances de desafio",
["DISCONNECT_RELOGIN"] = "A conexão com a internet foi interrompida, por favor, faça login novamente",
["RECONNECT"] = "A conexão com a internet foi interrompida, deseja reconectar?", ["RECONNECT"] = "A conexão com a internet foi interrompida, deseja reconectar?",
["RELOGIN"] = "Fazer login novamente",
["SEVEN_DAY_TITLE"] = "Alegria de 7 Dias do Principiante", ["SEVEN_DAY_TITLE"] = "Alegria de 7 Dias do Principiante",
["SEVEN_DAY_DESC_1"] = "Novas missões serão disponíveis diariamente", ["SEVEN_DAY_DESC_1"] = "Novas missões serão disponíveis diariamente",
["DAY_X"] = "Dia {0}", ["DAY_X"] = "Dia {0}",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "หลังจากซื้อกองทุนเติบโต{0}แล้ว จะสามารถรับเพชรได้โดยการอัปเลเวล\nสามารถซื้อได้หลายกองทุนในเวลาเดียวกัน", ["LEVEL_FUND_DESC_1"] = "หลังจากซื้อกองทุนเติบโต{0}แล้ว จะสามารถรับเพชรได้โดยการอัปเลเวล\nสามารถซื้อได้หลายกองทุนในเวลาเดียวกัน",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "จำนวนท้าทายที่เหลือของวันนี้ไม่พอ", ["DAILY_CHALLENGE_DESC_1"] = "จำนวนท้าทายที่เหลือของวันนี้ไม่พอ",
["DISCONNECT_RELOGIN"] = "การเชื่อมต่อเครือข่ายถูกตัด โปรดล็อกอินอีกครั้ง",
["RECONNECT"] = "การเชื่อมต่อเครือข่ายถูกตัด เชื่อมต่อใหม่หรือไม่", ["RECONNECT"] = "การเชื่อมต่อเครือข่ายถูกตัด เชื่อมต่อใหม่หรือไม่",
["RELOGIN"] = "ล็อกอินใหม่",
["SEVEN_DAY_TITLE"] = "กิจกรรมล็อกอิน 7 วันสำหรับมือใหม่", ["SEVEN_DAY_TITLE"] = "กิจกรรมล็อกอิน 7 วันสำหรับมือใหม่",
["SEVEN_DAY_DESC_1"] = "ภารกิจใหม่จะเปิดทุกวัน", ["SEVEN_DAY_DESC_1"] = "ภารกิจใหม่จะเปิดทุกวัน",
["DAY_X"] = "วันที่ {0}", ["DAY_X"] = "วันที่ {0}",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "Sau khi mua Quỹ Trưởng Thành {0}, có thể tăng cấp nhận Kim Cương.\nCó thể cùng lúc mua nhiều mốc quỹ", ["LEVEL_FUND_DESC_1"] = "Sau khi mua Quỹ Trưởng Thành {0}, có thể tăng cấp nhận Kim Cương.\nCó thể cùng lúc mua nhiều mốc quỹ",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "Hôm nay thiếu lượt khiêu chiến", ["DAILY_CHALLENGE_DESC_1"] = "Hôm nay thiếu lượt khiêu chiến",
["DISCONNECT_RELOGIN"] = "Mất kết nối, vui lòng đăng nhập lại",
["RECONNECT"] = "Mất kết nối, kết nối lại chứ", ["RECONNECT"] = "Mất kết nối, kết nối lại chứ",
["RELOGIN"] = "Đăng Nhập Lại",
["SEVEN_DAY_TITLE"] = "7 ngày tân thủ vui vẻ", ["SEVEN_DAY_TITLE"] = "7 ngày tân thủ vui vẻ",
["SEVEN_DAY_DESC_1"] = "Mỗi ngày sẽ mở nhiệm vụ mới", ["SEVEN_DAY_DESC_1"] = "Mỗi ngày sẽ mở nhiệm vụ mới",
["DAY_X"] = "Ngày {0}", ["DAY_X"] = "Ngày {0}",

View File

@ -135,9 +135,7 @@ local localization_global =
["LEVEL_FUND_DESC_1"] = "購買成長基金{0}後,可透過提高等級獲得鑽石。 \n多檔基金可同時購買", ["LEVEL_FUND_DESC_1"] = "購買成長基金{0}後,可透過提高等級獲得鑽石。 \n多檔基金可同時購買",
["BUFF_DESC"] = "BUFF", ["BUFF_DESC"] = "BUFF",
["DAILY_CHALLENGE_DESC_1"] = "今日剩餘挑戰次數不足", ["DAILY_CHALLENGE_DESC_1"] = "今日剩餘挑戰次數不足",
["DISCONNECT_RELOGIN"] = "網路連接已中斷,請重新登入",
["RECONNECT"] = "網路連接已中斷,是否重連", ["RECONNECT"] = "網路連接已中斷,是否重連",
["RELOGIN"] = "重新登入",
["SEVEN_DAY_TITLE"] = "新人七天樂", ["SEVEN_DAY_TITLE"] = "新人七天樂",
["SEVEN_DAY_DESC_1"] = "每天將開啟新的任務", ["SEVEN_DAY_DESC_1"] = "每天將開啟新的任務",
["DAY_X"] = "第{0}天", ["DAY_X"] = "第{0}天",

View File

@ -1,7 +1,13 @@
local ArenaManager = class("ArenaManager", BaseModule) local ArenaManager = class("ArenaManager", BaseModule)
-- 赛季结算
function ArenaManager:onSeasonSettlement()
EventManager.dispatchEvent(EventManager.CUSTOM_EVENT.ARENA_SEASON_SETTLEMENT)
end
-- 赛季改变 -- 赛季改变
function ArenaManager:onSeasonChanged() function ArenaManager:onSeasonChanged()
EventManager.dispatchEvent(EventManager.CUSTOM_EVENT.ARENA_SEASON_END)
if not self.isResetting then if not self.isResetting then
return return
end end
@ -28,6 +34,13 @@ function ArenaManager:reqChallenge()
return return
end end
-- 判断体力
if not DataManager.ArenaData:isEnoughTicket() then
GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_ARENA_TICKET)
ModuleManager.CommerceManager:showBuyArenaTicketUI()
return
end
local reqData = { local reqData = {
defInfo = DataManager.ArenaData:getMatchInfo() defInfo = DataManager.ArenaData:getMatchInfo()
} }
@ -82,12 +95,14 @@ end
function ArenaManager:rspSettlement(result) function ArenaManager:rspSettlement(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onBattleResultReceived(result.settlement) DataManager.ArenaData:onBattleResultReceived(result.settlement)
local checkCount = 0
-- 总共赢的次数result.total_win_count if result.settlement.win then
-- 总共输的次数result.total_lose_count checkCount = result.total_win_count
else
checkCount = result.total_lose_count
end
-- 展示结算界面 -- 展示结算界面
ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.ARENA, result.rewards, result.reqData.combatReport) ModuleManager.BattleManager:showArenaBattleResultUI(result.settlement, result.rewards, checkCount)
end end
end end

View File

@ -19,7 +19,25 @@ function BattleManager:showPauseUI(battleType)
end end
function BattleManager:showBattleResultUI(battleType, rewards, combatReport, mysteryBoxIdx) function BattleManager:showBattleResultUI(battleType, rewards, combatReport, mysteryBoxIdx)
UIManager:showUI("app/ui/battle/battle_result_ui", {battleType = battleType, rewards = rewards, combatReport = combatReport, mysteryBoxIdx = mysteryBoxIdx}) UIManager:showUI("app/ui/battle/battle_result_ui", {
battleType = battleType,
isWin = combatReport.victory,
rewards = rewards,
atkReport = combatReport.atkReport,
wave = combatReport.wave,
mysteryBoxIdx = mysteryBoxIdx or 0,
remainRound = combatReport.remainRound or 0,
})
end
function BattleManager:showArenaBattleResultUI(settlement, rewards, checkCount)
UIManager:showUI("app/ui/battle/battle_result_ui", {
battleType = GConst.BattleConst.BATTLE_TYPE.ARENA,
isWin = settlement.win,
rewards = rewards,
incrScore = settlement.incr_score,
arenaTotalCount = checkCount,
})
end end
function BattleManager:showBoxOpenUI(rewards, callback) function BattleManager:showBoxOpenUI(rewards, callback)

View File

@ -73,6 +73,8 @@ function ArenaMatchUI:onLoadRootComplete()
-- 匹配结果页 -- 匹配结果页
self.matchResult = uiMap["arena_match_ui.match_result"] self.matchResult = uiMap["arena_match_ui.match_result"]
self.btnClose = uiMap["arena_match_ui.match_result.btn_close"] self.btnClose = uiMap["arena_match_ui.match_result.btn_close"]
self.spineVS = uiMap["arena_match_ui.match_result.spine_vs"]
self.matchAnimator = self.matchResult:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR)
-- 对手信息 -- 对手信息
self.matchAvatar = CellManager:addCellComp(uiMap["arena_match_ui.match_result.match.info.player_head_cell"], GConst.TYPEOF_LUA_CLASS.PLAYER_HEAD_CELL) self.matchAvatar = CellManager:addCellComp(uiMap["arena_match_ui.match_result.match.info.player_head_cell"], GConst.TYPEOF_LUA_CLASS.PLAYER_HEAD_CELL)
self.matchTxName = uiMap["arena_match_ui.match_result.match.info.tx_name"] self.matchTxName = uiMap["arena_match_ui.match_result.match.info.tx_name"]
@ -105,7 +107,6 @@ function ArenaMatchUI:onLoadRootComplete()
end) end)
self.btnStart:addClickListener(function() self.btnStart:addClickListener(function()
ModuleManager.ArenaManager:reqChallenge() ModuleManager.ArenaManager:reqChallenge()
self:closeUI()
end) end)
self.btnRematch:addClickListener(function() self.btnRematch:addClickListener(function()
self:onClickRematch() self:onClickRematch()
@ -114,6 +115,10 @@ function ArenaMatchUI:onLoadRootComplete()
UIManager:showUI("app/ui/arena/arena_formation_ui", GConst.BattleConst.FORMATION_TYPE.ARENA_ATTACK) UIManager:showUI("app/ui/arena/arena_formation_ui", GConst.BattleConst.FORMATION_TYPE.ARENA_ATTACK)
self:closeUI() self:closeUI()
end) end)
self:addEventListener(EventManager.CUSTOM_EVENT.ARENA_SEASON_SETTLEMENT, function()
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_31))
self:closeUI()
end)
end end
function ArenaMatchUI:onRefresh() function ArenaMatchUI:onRefresh()
@ -160,7 +165,9 @@ function ArenaMatchUI:showMatchResult()
self.matchResult:setActive(true) self.matchResult:setActive(true)
self.showResult = true self.showResult = true
self.freeRematchCD = DataManager.ArenaData:getFreeRematchCd() self.spineVS:playAnimComplete("born", false, true, function()
self.spineVS:playAnim("idle", true, true)
end)
self.txStart:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_CHALLENGE)) self.txStart:setText(I18N:getGlobalText(I18N.GlobalConst.TASK_CHALLENGE))
self.txConst:setText(DataManager.ArenaData:getFightCostNum()) self.txConst:setText(DataManager.ArenaData:getFightCostNum())
@ -202,12 +209,13 @@ function ArenaMatchUI:showMatchResult()
self.matchExistCd = self.matchExistCd - 1 self.matchExistCd = self.matchExistCd - 1
if self.matchExistCd <= 0 then if self.matchExistCd <= 0 then
self:unscheduleGlobal(self.existSid) self:unscheduleGlobal(self.existSid)
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_8)) GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_26))
self:closeUI() self:closeUI()
end end
end, 1) end, 1)
-- 免费匹配cd倒计时 -- 免费匹配cd倒计时
self.freeRematchCD = DataManager.ArenaData:getFreeRematchCd()
if self.countdownSid then if self.countdownSid then
self:unscheduleGlobal(self.countdownSid) self:unscheduleGlobal(self.countdownSid)
end end
@ -245,7 +253,7 @@ function ArenaMatchUI:onClickRematch()
else else
-- 钻石 -- 钻石
local params ={ local params ={
content = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_COUNTENT), content = I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_25, DataManager.ArenaData:getRematchConstGem()),
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL,
costId = GConst.ItemConst.ITEM_ID_GEM, costId = GConst.ItemConst.ITEM_ID_GEM,
costNum = DataManager.ArenaData:getRematchConstGem(), costNum = DataManager.ArenaData:getRematchConstGem(),

View File

@ -8,14 +8,28 @@ function BattleResultUI:getPrefabPath()
end end
function BattleResultUI:ctor(params) function BattleResultUI:ctor(params)
self.rewards = params.rewards if EDITOR_MODE then
self.combatReport = params.combatReport Logger.printTable(params)
self.mysteryBoxIdx = params.mysteryBoxIdx or 0 end
-- 通用
self.battleType = params.battleType self.battleType = params.battleType
self.isWin = params.isWin
self.rewards = params.rewards
-- pve特有
self.atkReport = params.atkReport
self.wave = params.wave
-- 主线特有
self.mysteryBoxIdx = params.mysteryBoxIdx or 0
-- 金币副本特有
self.remainRound = params.remainRound
-- 竞技场特有
self.incrScore = params.incrScore
self.arenaTotalCount = params.arenaTotalCount
self.isTryShowGoldPig = false self.isTryShowGoldPig = false
self.totalDmg = 0 self.totalDmg = 0
if self.combatReport.atkReport then if self.atkReport then
for _, info in ipairs(self.combatReport.atkReport) do for _, info in ipairs(self.atkReport) do
self.totalDmg = self.totalDmg + info.dmg self.totalDmg = self.totalDmg + info.dmg
end end
end end
@ -35,8 +49,8 @@ function BattleResultUI:onClose()
if self.sliderSequence then if self.sliderSequence then
self.sliderSequence:Kill() self.sliderSequence:Kill()
end end
if self.animUnit then if self.animNode then
self.animUnit:Kill() self.animNode:Kill()
end end
if self.animPig then if self.animPig then
self.animPig:Kill() self.animPig:Kill()
@ -48,217 +62,281 @@ function BattleResultUI:onClose()
end end
end end
end end
if self.arenaSequence then
self.arenaSequence:Kill()
self.arenaSequence = nil
end
end end
function BattleResultUI:onLoadRootComplete() function BattleResultUI:onLoadRootComplete()
self:_display()
self:_addListeners()
end
function BattleResultUI:_display()
if self.combatReport.victory then
self:refreshVictoryNode()
AudioManager:playEffect(AudioManager.EFFECT_ID.BATTLE_VICTORY)
else
self:refreshDefeatNode()
AudioManager:playEffect(AudioManager.EFFECT_ID.BATTLE_DEFEAT)
end
self:refreshFixedInfo()
self:refreshRewards()
self:refreshUnitInfo()
self:initGoldPig()
end
function BattleResultUI:_addListeners()
local uiMap = self.root:genAllChildren() local uiMap = self.root:genAllChildren()
uiMap["battle_result_ui.mask_v"]:addClickListener(function()
if self.isTryShowGoldPig then
ModuleManager.BattleManager:endBattleAndExit()
else
if not self:tryShowGoldPig() then
ModuleManager.BattleManager:endBattleAndExit()
end
end
end)
uiMap["battle_result_ui.mask_d"]:addClickListener(function() self.continue = uiMap["battle_result_ui.continue"]
if self.isTryShowGoldPig then -- 胜利节点
ModuleManager.BattleManager:endBattleAndExit() self.victoryNode = uiMap["battle_result_ui.victory_node"]
else self.victoryMask = uiMap["battle_result_ui.mask_v"]
if not self:tryShowGoldPig() then self.victoryTxTitle = uiMap["battle_result_ui.victory_node.title_bg.desc"]
ModuleManager.BattleManager:endBattleAndExit() self.victorySpine = uiMap["battle_result_ui.victory_node.ui_spine_obj"]
end self.victoryUnitNode = uiMap["battle_result_ui.victory_node.unit_node"]
end -- 失败节点
end) self.defeatNode = uiMap["battle_result_ui.defeat_node"]
end self.defeatMask = uiMap["battle_result_ui.mask_d"]
self.defeatTxTitle = uiMap["battle_result_ui.defeat_node.title_bg.desc"]
function BattleResultUI:refreshFixedInfo() self.defeatSpine = uiMap["battle_result_ui.defeat_node.ui_spine_obj"]
local uiMap = self.root:genAllChildren() self.defeatUnitNode = uiMap["battle_result_ui.defeat_node.unit_node"]
local icon = uiMap["battle_result_ui.unit_node.icon"] -- 战斗信息
local desc1 = uiMap["battle_result_ui.unit_node.desc_1"] self.unitNode = uiMap["battle_result_ui.unit_node"]
local desc2 = uiMap["battle_result_ui.unit_node.desc_2"] self.unitImgBattleIcon = uiMap["battle_result_ui.unit_node.icon"]
local desc3 = uiMap["battle_result_ui.unit_node.desc_3"] self.unitTxDesc1 = uiMap["battle_result_ui.unit_node.desc_1"]
local rewardTitle = uiMap["battle_result_ui.reward_node.reward_title"] self.unitTxDesc2 = uiMap["battle_result_ui.unit_node.desc_2"]
local continue = uiMap["battle_result_ui.continue"] self.unitTxDesc3 = uiMap["battle_result_ui.unit_node.desc_3"]
desc2:setText(self.combatReport.wave) self.unitImgReportV = uiMap["battle_result_ui.unit_node.report_img_v"]
desc3:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_7, GFunc.num2Str(self.totalDmg))) self.unitImgReportD = uiMap["battle_result_ui.unit_node.report_img_d"]
rewardTitle:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC))
continue:setText(I18N:getGlobalText(I18N.GlobalConst.CONTINUE_DESC))
local iconName = "common_dec_3"
if self.battleType == GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD then
iconName = "common_dec_15"
local round = self.combatReport.remainRound or 0
desc2:setText(round)
desc1:setText(I18N:getGlobalText(I18N.GlobalConst.ROUND_LEFT))
else
desc1:setText(GConst.EMPTY_STRING)
end
icon:setSprite(GConst.ATLAS_PATH.COMMON, iconName)
GFunc.centerImgAndTx(icon, desc2, 7)
end
function BattleResultUI:refreshVictoryNode()
local uiMap = self.root:genAllChildren()
uiMap["battle_result_ui.mask_v"]:setVisible(true)
uiMap["battle_result_ui.mask_d"]:setVisible(false)
uiMap["battle_result_ui.defeat_node"]:setVisible(false)
uiMap["battle_result_ui.victory_node"]:setVisible(true)
uiMap["battle_result_ui.victory_node.unit_node.report_img_v"]:setVisible(true)
uiMap["battle_result_ui.defeat_node.unit_node.report_img_d"]:setVisible(false)
uiMap["battle_result_ui.victory_node.title_bg.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
uiMap["battle_result_ui.victory_node.ui_spine_obj"]:playAnimComplete("born", false, true, function()
uiMap["battle_result_ui.victory_node.ui_spine_obj"]:playAnim("idle", true, true)
end)
self:refreshUnitNodeAnim(uiMap["battle_result_ui.victory_node.unit_node"])
end
function BattleResultUI:refreshDefeatNode()
local uiMap = self.root:genAllChildren()
uiMap["battle_result_ui.mask_v"]:setVisible(false)
uiMap["battle_result_ui.mask_d"]:setVisible(true)
uiMap["battle_result_ui.defeat_node"]:setVisible(true)
uiMap["battle_result_ui.victory_node"]:setVisible(false)
uiMap["battle_result_ui.victory_node.unit_node.report_img_v"]:setVisible(false)
uiMap["battle_result_ui.defeat_node.unit_node.report_img_d"]:setVisible(true)
uiMap["battle_result_ui.defeat_node.title_bg.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_6))
uiMap["battle_result_ui.defeat_node.ui_spine_obj"]:playAnimComplete("born", false, true, function()
uiMap["battle_result_ui.defeat_node.ui_spine_obj"]:playAnim("idle", true, true)
end)
self:refreshUnitNodeAnim(uiMap["battle_result_ui.defeat_node.unit_node"])
end
function BattleResultUI:refreshUnitNodeAnim(parent)
local uiMap = self.root:genAllChildren()
if not parent then
uiMap["battle_result_ui.unit_node"]:setActive(false)
return
else
uiMap["battle_result_ui.unit_node"]:setActive(true)
end
uiMap["battle_result_ui.unit_node"]:setParent(parent, false)
uiMap["battle_result_ui.unit_node"]:setAnchoredPosition(0, 0)
local canvasNodeUnit = parent:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
self.animUnit = self.root:createBindTweenSequence()
self.animUnit:Insert(0, canvasNodeUnit:DOFade(0, 0))
self.animUnit:Insert(0.1, canvasNodeUnit:DOFade(1, 0))
self.animUnit:Insert(0, parent:getTransform():DOScale(0, 0))
self.animUnit:Insert(0.1, parent:getTransform():DOScale(0.35, 0))
self.animUnit:Insert(0.13, parent:getTransform():DOScale(1.1, 0.16))
self.animUnit:Insert(0.26, parent:getTransform():DOScale(1, 0.14))
self.animUnit:OnComplete(function()
self.animUnit = nil
end)
end
function BattleResultUI:refreshArenaNode(isShow)
local uiMap = self.root:genAllChildren()
if not isShow then
uiMap["battle_result_ui.arena_node"]:setActive(false)
return
else
uiMap["battle_result_ui.arena_node"]:setActive(true)
end
end
function BattleResultUI:refreshRewards()
if self.scrollRectComp then
self.scrollRectComp:updateAllCell()
return
end
self.animRewards = {}
local uiMap = self.root:genAllChildren()
self.rewardNode = uiMap["battle_result_ui.reward_node"]
self.rewardNode:setVisible(true)
local scrollRect = uiMap["battle_result_ui.reward_node.scroll_rect"]
self.scrollRectComp = scrollRect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.scrollRectComp:addInitCallback(function()
return GConst.TYPEOF_LUA_CLASS.REWARD_CELL
end)
self.scrollRectComp:addRefreshCallback(function(index, cell)
cell:refresh(self.rewards[index])
if index <= MAX_SCROLL_SHOW_COUNT and self.animRewards[index] == nil then
self.animRewards[index] = self:showRewardAppearAnim(index, cell)
end
cell:showRightUpIcon(index <= self.mysteryBoxIdx, GConst.ATLAS_PATH.COMMON, "common_chest_1")
end)
self.scrollRectComp:setFadeArgs(0.05, 0.3)
self.scrollRectComp:clearCells()
local rewardCount = #self.rewards
if rewardCount > MAX_SCROLL_SHOW_COUNT then
local comp = scrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
self.scrollRectComp:setPerLineNum(5)
scrollRect:setSizeDeltaX(560)
else
local comp = scrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Clamped
if rewardCount >= 5 then
self.scrollRectComp:setPerLineNum(5)
scrollRect:setSizeDeltaX(560)
elseif rewardCount <= 0 then
self.scrollRectComp:setPerLineNum(1)
scrollRect:setSizeDeltaX(560)
else
self.scrollRectComp:setPerLineNum(rewardCount)
scrollRect:setSizeDeltaX(112*rewardCount)
end
end
self.scrollRectComp:refillCells(rewardCount)
end
function BattleResultUI:refreshUnitInfo()
local uiMap = self.root:genAllChildren()
if not self.unitResultReportCells then if not self.unitResultReportCells then
self.unitResultReportCells = {} self.unitResultReportCells = {}
for index = 1, 5 do for index = 1, 5 do
self.unitResultReportCells[index] = CellManager:addCellComp(uiMap["battle_result_ui.unit_node.unit_result_report_cell_" .. index], UNIT_RESULT_RERPORT_CELL) self.unitResultReportCells[index] = CellManager:addCellComp(uiMap["battle_result_ui.unit_node.unit_result_report_cell_" .. index], UNIT_RESULT_RERPORT_CELL)
end end
end end
-- 奖励节点
self.rewardNode = uiMap["battle_result_ui.reward_node"]
self.rewardTxTitle = uiMap["battle_result_ui.reward_node.reward_title"]
self.rewardScrollRect = uiMap["battle_result_ui.reward_node.scroll_rect"]
self.rewardScrollRectComp = self.rewardScrollRect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
-- 金猪存钱罐
self.goldPigNode = uiMap["battle_result_ui.gold_pig"]
self.goldPigTxGem = uiMap["battle_result_ui.gold_pig.gem_bg.gem_tx"]
self.goldPigSlider = uiMap["battle_result_ui.gold_pig.slider_bg.slider"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
self.goldPigTxSlider = uiMap["battle_result_ui.gold_pig.slider_bg.text"]
self.goldPigImgGem = uiMap["battle_result_ui.gold_pig.gem_bg.gem_img"]
self.goldPigSpine = uiMap["battle_result_ui.gold_pig.spine_pig"]
self.goldPigGem = uiMap["battle_result_ui.gold_pig.gem_bg"]
self.canvasGroupPigGem = self.goldPigGem:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
-- 竞技场
self.arenaNode = uiMap["battle_result_ui.arena_node"]
self.arenaSpineGrading = uiMap["battle_result_ui.arena_node.spine_grading"]
self.arenaTxGrading = uiMap["battle_result_ui.arena_node.tx_grading"]
self.arenaTxScore = uiMap["battle_result_ui.arena_node.tx_score"]
self.arenaImgProp = uiMap["battle_result_ui.arena_node.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
self.arenaTxProg = uiMap["battle_result_ui.arena_node.prog.tx_prog"]
-- 竞技场广告宝箱
self.arenaBoxNode = uiMap["battle_result_ui.arena_box_node"]
self.victoryMask:addClickListener(function()
self:onClickMask()
end)
self.defeatMask:addClickListener(function()
self:onClickMask()
end)
end
function BattleResultUI:onClickMask()
if self.isTryShowGoldPig then
ModuleManager.BattleManager:endBattleAndExit()
else
if not self:tryShowGoldPig() then
ModuleManager.BattleManager:endBattleAndExit()
end
end
end
function BattleResultUI:onRefresh()
if self.isWin then
self:refreshVictoryNode()
AudioManager:playEffect(AudioManager.EFFECT_ID.BATTLE_VICTORY)
else
self:refreshDefeatNode()
AudioManager:playEffect(AudioManager.EFFECT_ID.BATTLE_DEFEAT)
end
self:refreshRewards()
self:refreshUnitInfo()
self:refreshArenaNode()
end
function BattleResultUI:refreshVictoryNode()
self.victoryNode:setVisible(true)
self.unitImgReportV:setVisible(true)
self.defeatNode:setVisible(false)
self.unitImgReportD:setVisible(false)
self.victoryTxTitle:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.victorySpine:playAnimComplete("born", false, true, function()
self.victorySpine:playAnim("idle", true, true)
end)
if self.battleType == GConst.BattleConst.BATTLE_TYPE.ARENA then
self:showNodeAnim(self.victoryUnitNode, self.arenaNode)
else
self:showNodeAnim(self.victoryUnitNode, self.unitNode)
end
end
function BattleResultUI:refreshDefeatNode()
self.victoryNode:setVisible(false)
self.unitImgReportV:setVisible(false)
self.defeatNode:setVisible(true)
self.unitImgReportD:setVisible(true)
self.defeatTxTitle:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_6))
self.defeatSpine:playAnimComplete("born", false, true, function()
self.defeatSpine:playAnim("idle", true, true)
end)
if self.battleType == GConst.BattleConst.BATTLE_TYPE.ARENA then
self:showNodeAnim(self.defeatUnitNode, self.arenaNode)
else
self:showNodeAnim(self.defeatUnitNode, self.unitNode)
end
end
-- 播放节点动画
function BattleResultUI:showNodeAnim(parent, node)
if not parent then
node:setVisible(false)
return
else
node:setVisible(true)
end
node:setParent(parent, false)
node:setAnchoredPosition(0, 0)
local canvasNode = parent:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP)
self.animNode = self.root:createBindTweenSequence()
self.animNode:Insert(0, canvasNode:DOFade(0, 0))
self.animNode:Insert(0.1, canvasNode:DOFade(1, 0))
self.animNode:Insert(0, parent:getTransform():DOScale(0, 0))
self.animNode:Insert(0.1, parent:getTransform():DOScale(0.35, 0))
self.animNode:Insert(0.13, parent:getTransform():DOScale(1.1, 0.16))
self.animNode:Insert(0.26, parent:getTransform():DOScale(1, 0.14))
self.animNode:OnComplete(function()
self.animNode = nil
end)
end
function BattleResultUI:refreshArenaNode()
if self.battleType ~= GConst.BattleConst.BATTLE_TYPE.ARENA then
self.arenaNode:setVisible(false)
return
end
self.arenaNode:setVisible(true)
local totalScore = DataManager.ArenaData:getScore()
local lastScore = totalScore - self.incrScore
local curId = DataManager.ArenaData:getGradingId()
local lastId = DataManager.ArenaData:getGradingIdFromScore(lastScore)
self.arenaTxGrading:setText(DataManager.ArenaData:getGradingName(lastId))
if self.arenaSequence then
self.arenaSequence:Kill()
end
self.arenaSequence = DOTweenManager:createSeqWithIntId()
local tween = DOTweenManager:createDOTweenTo(
function()
return lastScore
end,
function(value)
local maxScore = DataManager.ArenaData:getGradingScoreTotal(value)
local curScore = DataManager.ArenaData:getGradingScore(value)
self.arenaImgProp.value = curScore/maxScore
self.arenaTxProg:setText(math.floor(curScore).."/"..maxScore)
end,
totalScore, 1.5)
self.arenaSequence:Append(tween)
self.arenaSequence:AppendCallback(function()
self.arenaTxGrading:setText(DataManager.ArenaData:getGradingName(curId))
self.arenaSequence = nil
end)
if self.incrScore > 0 then
self.arenaTxScore:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_27, "+"..self.incrScore))
else
self.arenaTxScore:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_27, self.incrScore))
end
-- 检查ad宝箱显示
self.arenaBoxNode:setVisible(false)
if self.isWin then
if (self.arenaTotalCount % GFunc.getConstIntValue("arena_win_adbox")) == 0 then
self.arenaBoxNode:setVisible(true)
end
else
if (self.arenaTotalCount % GFunc.getConstIntValue("arena_lose_adbox")) == 0 then
self.arenaBoxNode:setVisible(true)
end
end
end
function BattleResultUI:refreshRewards()
self.animRewards = {}
self.rewardNode:setVisible(true)
self.rewardTxTitle:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC))
self.continue:setText(I18N:getGlobalText(I18N.GlobalConst.CONTINUE_DESC))
self.rewardScrollRectComp:addInitCallback(function()
return GConst.TYPEOF_LUA_CLASS.REWARD_CELL
end)
self.rewardScrollRectComp:addRefreshCallback(function(index, cell)
cell:refresh(self.rewards[index])
if index <= MAX_SCROLL_SHOW_COUNT and self.animRewards[index] == nil then
self.animRewards[index] = self:showRewardAppearAnim(index, cell)
end
cell:showRightUpIcon(index <= self.mysteryBoxIdx, GConst.ATLAS_PATH.COMMON, "common_chest_1")
end)
self.rewardScrollRectComp:setFadeArgs(0.05, 0.3)
self.rewardScrollRectComp:clearCells()
local rewardCount = #self.rewards
if rewardCount > MAX_SCROLL_SHOW_COUNT then
local comp = self.rewardScrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
self.rewardScrollRectComp:setPerLineNum(5)
self.rewardScrollRect:setSizeDeltaX(560)
else
local comp = self.rewardScrollRect:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Clamped
if rewardCount >= 5 then
self.rewardScrollRectComp:setPerLineNum(5)
self.rewardScrollRect:setSizeDeltaX(560)
elseif rewardCount <= 0 then
self.rewardScrollRectComp:setPerLineNum(1)
self.rewardScrollRect:setSizeDeltaX(560)
else
self.rewardScrollRectComp:setPerLineNum(rewardCount)
self.rewardScrollRect:setSizeDeltaX(112*rewardCount)
end
end
self.rewardScrollRectComp:refillCells(rewardCount)
end
function BattleResultUI:refreshUnitInfo()
if not self.atkReport then
self.unitNode:setVisible(false)
return
end
self.unitNode:setVisible(true)
for index, cell in ipairs(self.unitResultReportCells) do for index, cell in ipairs(self.unitResultReportCells) do
local info = self.combatReport.atkReport[index] local info = self.atkReport[index]
cell:getBaseObject():setVisible(info ~= nil) cell:getBaseObject():setVisible(info ~= nil)
if info then if info then
cell:refresh(info, self.totalDmg) cell:refresh(info, self.totalDmg)
end end
end end
end
function BattleResultUI:initGoldPig() self.unitTxDesc2:setText(self.wave)
local uiMap = self.root:genAllChildren() self.unitTxDesc3:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_7, GFunc.num2Str(self.totalDmg)))
self.goldPigRoot = uiMap["battle_result_ui.gold_pig"]
self.goldPigRoot:setVisible(false) local iconName = "common_dec_3"
self.goldPigGem = uiMap["battle_result_ui.gold_pig.gem_bg"] if self.battleType == GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD then
self.goldPigGemTx = uiMap["battle_result_ui.gold_pig.gem_bg.gem_tx"] iconName = "common_dec_15"
self.goldPigGemImg = uiMap["battle_result_ui.gold_pig.gem_bg.gem_img"] local round = self.remainRound or 0
self.goldPigGemSliderComp = uiMap["battle_result_ui.gold_pig.slider_bg.slider"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) self.unitTxDesc2:setText(round)
self.goldPigGemSliderTx = uiMap["battle_result_ui.gold_pig.slider_bg.text"] self.unitTxDesc1:setText(I18N:getGlobalText(I18N.GlobalConst.ROUND_LEFT))
self.goldPigSpine = uiMap["battle_result_ui.gold_pig.spine_pig"] else
self.canvasGroupPigGem = self.goldPigGem:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS_GROUP) self.unitTxDesc1:setText(GConst.EMPTY_STRING)
end
self.unitImgBattleIcon:setSprite(GConst.ATLAS_PATH.COMMON, iconName)
GFunc.centerImgAndTx(self.unitImgBattleIcon, self.unitTxDesc2, 7)
end end
function BattleResultUI:tryShowGoldPig() function BattleResultUI:tryShowGoldPig()
@ -270,7 +348,7 @@ function BattleResultUI:tryShowGoldPig()
return false return false
end end
self.rewardNode:setVisible(false) self.rewardNode:setVisible(false)
self.goldPigRoot:setVisible(true) self.goldPigNode:setVisible(true)
local lastGemCount = DataManager.GoldPigData:getLastCount() local lastGemCount = DataManager.GoldPigData:getLastCount()
local currGemCount = DataManager.GoldPigData:getCount() local currGemCount = DataManager.GoldPigData:getCount()
local maxGemCount = DataManager.GoldPigData:getMaxCount() local maxGemCount = DataManager.GoldPigData:getMaxCount()
@ -290,24 +368,24 @@ function BattleResultUI:tryShowGoldPig()
self.goldPigSpine:playAnim("idle2", true, false) self.goldPigSpine:playAnim("idle2", true, false)
end) end)
self.goldPigGemTx:setText("+" .. currGemCount - lastGemCount) self.goldPigTxGem:setText("+" .. currGemCount - lastGemCount)
GFunc.centerImgAndTx(self.goldPigGemImg, self.goldPigGemTx, 0, -4) GFunc.centerImgAndTx(self.goldPigImgGem, self.goldPigTxGem, 0, -4)
if currGemCount > lastGemCount then if currGemCount > lastGemCount then
self.sliderSequence = DOTweenManager:createSeqWithIntId() self.sliderSequence = DOTweenManager:createSeqWithIntId()
local curProgress = 0 local curProgress = 0
local remain = currGemCount - lastGemCount local remain = currGemCount - lastGemCount
local startPercent = lastGemCount / maxGemCount local startPercent = lastGemCount / maxGemCount
local remainPercent = currGemCount / maxGemCount - startPercent local remainPercent = currGemCount / maxGemCount - startPercent
self.goldPigGemSliderComp.value = startPercent self.goldPigSlider.value = startPercent
self.goldPigGemSliderTx:setText(lastGemCount .. "/" .. currGemCount) self.goldPigTxSlider:setText(lastGemCount .. "/" .. currGemCount)
local tween = DOTweenManager:createDOTweenTo( local tween = DOTweenManager:createDOTweenTo(
function() function()
return curProgress return curProgress
end, end,
function(value) function(value)
curProgress = value curProgress = value
self.goldPigGemSliderComp.value = startPercent + remainPercent*curProgress self.goldPigSlider.value = startPercent + remainPercent*curProgress
self.goldPigGemSliderTx:setText(lastGemCount + math.floor(remain*curProgress) .. "/" .. maxGemCount) self.goldPigTxSlider:setText(lastGemCount + math.floor(remain*curProgress) .. "/" .. maxGemCount)
end, end,
1, 1) 1, 1)
self.sliderSequence:Append(tween) self.sliderSequence:Append(tween)
@ -315,8 +393,8 @@ function BattleResultUI:tryShowGoldPig()
self.sliderSequence = nil self.sliderSequence = nil
end) end)
else -- 相等就不跑动画了 else -- 相等就不跑动画了
self.goldPigGemSliderComp.value = currGemCount / maxGemCount self.goldPigSlider.value = currGemCount / maxGemCount
self.goldPigGemSliderTx:setText(currGemCount .. "/" .. maxGemCount) self.goldPigTxSlider:setText(currGemCount .. "/" .. maxGemCount)
end end
return true return true
end end

View File

@ -61,7 +61,7 @@ function ResourceCell:show(itemId, hideAddImg)
end end
function ResourceCell:updateTime() function ResourceCell:updateTime()
if self.itemId then if self.itemId and DataManager.BagData.ItemData:isTimingRecovery(self.itemId) then
local curTime = DataManager.BagData.ItemData:getTimelyItemRecoveryTime(self.itemId) local curTime = DataManager.BagData.ItemData:getTimelyItemRecoveryTime(self.itemId)
if curTime <= 0 then if curTime <= 0 then
self.timeTx:setText(GConst.EMPTY_STRING) self.timeTx:setText(GConst.EMPTY_STRING)
@ -93,6 +93,8 @@ function ResourceCell:refreshTextRightNow()
self.numTx:setText("0") self.numTx:setText("0")
elseif obj:getId() == GConst.ItemConst.ITEM_ID_VIT then elseif obj:getId() == GConst.ItemConst.ITEM_ID_VIT then
self.numTx:setText(GFunc.num2Str(count) .. "/" .. DataManager.PlayerData:getMaxVit()) self.numTx:setText(GFunc.num2Str(count) .. "/" .. DataManager.PlayerData:getMaxVit())
elseif obj:getId() == GConst.ItemConst.ITEM_ID_ARENA_TICKET then
self.numTx:setText(GFunc.num2Str(count) .. "/" .. DataManager.PlayerData:getMaxArenaTicket())
else else
self.numTx:setText(GFunc.num2Str(count)) self.numTx:setText(GFunc.num2Str(count))
end end

View File

@ -102,10 +102,10 @@ end
function DungeonBoardCell:refreshCountdown(txCountdown) function DungeonBoardCell:refreshCountdown(txCountdown)
if self.countdownSid then if self.countdownSid then
ModuleManager.DungeonManager:unscheduleGlobal(self.countdownSid) self:getBaseObject():unscheduleGlobal(self.countdownSid)
self.countdownSid = nil self.countdownSid = nil
end end
self.countdownSid = ModuleManager.DungeonManager:scheduleGlobal(function() self.countdownSid = self:getBaseObject():scheduleGlobal(function()
self:updateTime(txCountdown) self:updateTime(txCountdown)
end, 1) end, 1)
self:updateTime(txCountdown) self:updateTime(txCountdown)

View File

@ -51,9 +51,14 @@ function ArenaComp:init()
self.txRank:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_5)) self.txRank:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_5))
self.btnHelp:addClickListener(function() self.btnHelp:addClickListener(function()
ModuleManager.TipsManager:showDescTips(DataManager.DungeonData:getRule(self.moduleKey), self.btnHelp) ModuleManager.TipsManager:showHelpTips({desc = I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_HELP)})
end) end)
self.btnRecord:addClickListener(function() self.btnRecord:addClickListener(function()
-- 赛季结算
if DataManager.ArenaData:isInSeasonSettlement() then
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_29))
return
end
UIManager:showUI("app/ui/arena/arena_recent_battle_ui") UIManager:showUI("app/ui/arena/arena_recent_battle_ui")
end) end)
self.btnFormation:addClickListener(function() self.btnFormation:addClickListener(function()
@ -119,32 +124,51 @@ function ArenaComp:refreshShow()
return return
end end
local maxScore = DataManager.ArenaData:getGradingScoreTotal() local totalScore = DataManager.ArenaData:getScore()
local curScore = DataManager.ArenaData:getGradingScore() local maxScore = DataManager.ArenaData:getGradingScoreTotal(totalScore)
local curScore = DataManager.ArenaData:getGradingScore(totalScore)
self.txSeason:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_3, DataManager.ArenaData:getSeason())) self.txSeason:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_3, DataManager.ArenaData:getSeason()))
self.txGarding:setText(DataManager.ArenaData:getGradingName(DataManager.ArenaData:getGradingId())) self.txGarding:setText(DataManager.ArenaData:getGradingName(DataManager.ArenaData:getGradingId()))
self.txProg:setText(curScore.."/"..maxScore) self.txProg:setText(curScore.."/"..maxScore)
self.imgProg:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = curScore/maxScore self.imgProg:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = curScore/maxScore
self.seasonChangeCD = DataManager.ArenaData:getRemainSeasonTime()
if self.seasonChangeSid then
ModuleManager.ArenaManager:unscheduleGlobal(self.seasonChangeSid)
end
self.seasonChangeSid = ModuleManager.ArenaManager:scheduleGlobal(function()
self:refreshCountdown()
end, 1)
self:refreshBounty() -- 刷新战令 self:refreshBounty() -- 刷新战令
self:updateTimer()
end end
function ArenaComp:refreshCountdown() function ArenaComp:updateTimer()
self.seasonChangeCD = self.seasonChangeCD - 1 if not DataManager.ArenaData:isOpen() then
if self.seasonChangeCD < 0 then
ModuleManager.ArenaManager:onSeasonChanged()
return return
end end
self.txCountdown:setText(Time:formatNumTimeStr(self.seasonChangeCD)) if self.seasonSettlementSid then
self:getBaseObject():unscheduleGlobal(self.seasonSettlementSid)
self.seasonSettlementSid = nil
end
if self.seasonEndSid then
self:getBaseObject():unscheduleGlobal(self.seasonEndSid)
self.seasonEndSid = nil
end
if DataManager.ArenaData:isInSeasonSettlement() then
-- 结算计时器
self.seasonSettlementSid = self:getBaseObject():performWithDelayGlobal(function()
ModuleManager.ArenaManager:onSeasonSettlement()
end, DataManager.ArenaData:getRemainSeasonTime())
else
-- 结束计时器
self.seasonEndSid = self:getBaseObject():performWithDelayGlobal(function()
ModuleManager.ArenaManager:onSeasonChanged()
end, DataManager.ArenaData:getRemainSeasonSettlementTime())
end
-- 显示倒计时
if self.seasonChangeSid then
self:getBaseObject():unscheduleGlobal(self.seasonChangeSid)
end
self.seasonChangeSid = self:getBaseObject():scheduleGlobal(function()
self.txCountdown:setText(Time:formatNumTimeStr(DataManager.ArenaData:getRemainSeasonTime()))
end, 1)
end end
return ArenaComp return ArenaComp

View File

@ -136,7 +136,7 @@ end
function DailyChallengeComp:refreshCountdown() function DailyChallengeComp:refreshCountdown()
self.countdownTx = self.uiMap["daily_challenge_comp.countdown.time_tx"] self.countdownTx = self.uiMap["daily_challenge_comp.countdown.time_tx"]
if not self.countdownSid then if not self.countdownSid then
self.countdownSid = ModuleManager.DailyChallengeManager:scheduleGlobal(function() self.countdownSid = self:getBaseObject():scheduleGlobal(function()
self:updateTime() self:updateTime()
end, 1) end, 1)
end end

View File

@ -41,7 +41,7 @@ function DungeonComp:refreshShow()
-- 跨天定时器 -- 跨天定时器
if self.countdownSid then if self.countdownSid then
SchedulerManager:unscheduleGlobal(self.countdownSid) self:getBaseObject():unscheduleGlobal(self.countdownSid)
self.countdownSid = nil self.countdownSid = nil
end end
self.countdownSid = self:getBaseObject():scheduleGlobal(function() self.countdownSid = self:getBaseObject():scheduleGlobal(function()

View File

@ -40,8 +40,6 @@ function MainComp:refreshModule(selectModule)
-- 左侧活动入口 -- 左侧活动入口
if not self.leftEntrance then if not self.leftEntrance then
self.uiMap["main_comp.left"]:setAnchoredPositionY(self.btnPosY)
self.leftEntrance = {} self.leftEntrance = {}
self.leftEntrance[GConst.MainCityConst.MAIN_MODULE.CHAPTER] = self.uiMap["main_comp.left.chapter"] self.leftEntrance[GConst.MainCityConst.MAIN_MODULE.CHAPTER] = self.uiMap["main_comp.left.chapter"]
self.leftEntrance[GConst.MainCityConst.MAIN_MODULE.ARENA] = self.uiMap["main_comp.left.arena"] self.leftEntrance[GConst.MainCityConst.MAIN_MODULE.ARENA] = self.uiMap["main_comp.left.arena"]
@ -50,8 +48,6 @@ function MainComp:refreshModule(selectModule)
-- 右侧活动入口 -- 右侧活动入口
if not self.rightEntrance then if not self.rightEntrance then
self.uiMap["main_comp.right"]:setAnchoredPositionY(self.btnPosY)
self.rightEntrance = {} self.rightEntrance = {}
self.rightEntrance[GConst.MainCityConst.MAIN_MODULE.CHAPTER] = self.uiMap["main_comp.right.chapter"] self.rightEntrance[GConst.MainCityConst.MAIN_MODULE.CHAPTER] = self.uiMap["main_comp.right.chapter"]
self.rightEntrance[GConst.MainCityConst.MAIN_MODULE.DUNGEON] = self.uiMap["main_comp.right.dungeon"] self.rightEntrance[GConst.MainCityConst.MAIN_MODULE.DUNGEON] = self.uiMap["main_comp.right.dungeon"]
@ -163,10 +159,12 @@ function MainComp:refreshLeftBtn()
end end
if showCount >= 2 then if showCount >= 2 then
self.uiMap["main_comp.left"]:setAnchoredPositionY(self.btnPosY - 20)
table.foreach(self.leftEntrance, function(idx, entrance) table.foreach(self.leftEntrance, function(idx, entrance)
entrance:setLocalScale(0.8,0.8) entrance:setLocalScale(0.8,0.8)
end) end)
else else
self.uiMap["main_comp.left"]:setAnchoredPositionY(self.btnPosY)
table.foreach(self.leftEntrance, function(idx, entrance) table.foreach(self.leftEntrance, function(idx, entrance)
entrance:setLocalScale(1,1) entrance:setLocalScale(1,1)
end) end)
@ -190,10 +188,12 @@ function MainComp:refreshRightBtn()
end end
if showCount >= 2 then if showCount >= 2 then
self.uiMap["main_comp.right"]:setAnchoredPositionY(self.btnPosY - 20)
table.foreach(self.rightEntrance, function(idx, entrance) table.foreach(self.rightEntrance, function(idx, entrance)
entrance:setLocalScale(0.8,0.8) entrance:setLocalScale(0.8,0.8)
end) end)
else else
self.uiMap["main_comp.right"]:setAnchoredPositionY(self.btnPosY)
table.foreach(self.rightEntrance, function(idx, entrance) table.foreach(self.rightEntrance, function(idx, entrance)
entrance:setLocalScale(1,1) entrance:setLocalScale(1,1)
end) end)
@ -323,6 +323,11 @@ function MainComp:refreshDungeon()
self.dungeonComp:refreshShow() self.dungeonComp:refreshShow()
end end
function MainComp:refreshArena()
self:refreshBtns()
self.arenaComp:refreshShow()
end
function MainComp:refreshStageFormaion() function MainComp:refreshStageFormaion()
self.heroCells:refresh() self.heroCells:refresh()
self:refreshHeroFormationVisible() self:refreshHeroFormationVisible()

View File

@ -63,9 +63,18 @@ function ArenaData:isOpen()
if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.ARENA, true) then if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.ARENA, true) then
return false return false
end end
if self.cfgRank == nil or self.cfgTime == nil then
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_30))
return false
end
return true return true
end end
-- 是否在赛季结算中
function ArenaData:isInSeasonSettlement()
return self:getRemainSeasonTime() > 0 and self:getRemainSeasonSettlementTime() < 0
end
-- 获取当前为第几赛季 -- 获取当前为第几赛季
function ArenaData:getSeason() function ArenaData:getSeason()
return self.season return self.season
@ -122,6 +131,36 @@ function ArenaData:getGradingIdFromScore(score, isLastSeason)
return seasonId return seasonId
end end
-- 获取所在段位的积分 cur - min
function ArenaData:getGradingScore(score)
return score - self:getGradingMinScore(self.score)
end
-- 获取所在段位的最低积分
function ArenaData:getGradingMinScore(score)
local id = self:getGradingIdFromScore(score)
return self.cfgRank[id].score
end
-- 获取所在段位的最高积分 full
function ArenaData:getGradingMaxScore(score)
local gradingId = self:getGradingIdFromScore(score)
local isNext = false
for id, data in pairs(self.cfgRank) do
if isNext then
return data.score
end
if id == gradingId then
isNext = true
end
end
end
-- 获取所在段位的总积分
function ArenaData:getGradingScoreTotal(score)
return self:getGradingMaxScore(score) - self:getGradingMinScore(score)
end
-- 获取段位图标名 -- 获取段位图标名
function ArenaData:getGradingIconName(id) function ArenaData:getGradingIconName(id)
local cfg = ConfigManager:getConfig("arena_rank") local cfg = ConfigManager:getConfig("arena_rank")
@ -177,6 +216,11 @@ function ArenaData:getFightCostNum()
return GFunc.getRewardNum(GFunc.getConstReward("arena_fight_cost")) return GFunc.getRewardNum(GFunc.getConstReward("arena_fight_cost"))
end end
-- 入场券是否足够
function ArenaData:isEnoughTicket()
return self:getFightCostNum() <= DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_ARENA_TICKET)
end
-- 排行榜 ---------------------------------------------------------------------- -- 排行榜 ----------------------------------------------------------------------
-- 排行榜玩家总数 -- 排行榜玩家总数
@ -248,34 +292,6 @@ function ArenaData:getGradingId()
return self.curGradingId return self.curGradingId
end end
-- 获取所在段位的积分 cur - min
function ArenaData:getGradingScore()
return self.score - self:getGradingMinScore(self.score)
end
-- 获取所在段位的最低积分
function ArenaData:getGradingMinScore()
return self.cfgRank[self.curGradingId].score
end
-- 获取所在段位的最高积分 full
function ArenaData:getGradingMaxScore()
local isNext = false
for id, data in pairs(self.cfgRank) do
if isNext then
return data.score
end
if id == self.curGradingId then
isNext = true
end
end
end
-- 获取所在段位的总积分
function ArenaData:getGradingScoreTotal()
return self:getGradingMaxScore() - self:getGradingMinScore()
end
-- 获取自己的排名 -- 获取自己的排名
function ArenaData:getRank() function ArenaData:getRank()
return self.rank return self.rank
@ -371,10 +387,13 @@ end
-- 结算战斗数据 -- 结算战斗数据
function ArenaData:onBattleResultReceived(settlement) function ArenaData:onBattleResultReceived(settlement)
-- 战斗记录改变 -- 战斗记录改变
if self.recentBattle == nil then
self.recentBattle = {}
end
table.remove(self.recentBattle, #self.recentBattle) table.remove(self.recentBattle, #self.recentBattle)
table.insert(self.recentBattle, 1, settlement) table.insert(self.recentBattle, 1, settlement)
-- 积分改变 -- 积分改变
self.score = self.score + settlement.score self.score = self.score + settlement.incr_score
self.curGradingId = self:getGradingIdFromScore(self.score) self.curGradingId = self:getGradingIdFromScore(self.score)
self:setDirty() self:setDirty()

View File

@ -3,8 +3,8 @@ local ItemEntity = require "app/userdata/bag/item_entity"
local ItemConst = require "app/module/item/item_const" local ItemConst = require "app/module/item/item_const"
local ItemData = class("ItemData", BaseData) local ItemData = class("ItemData", BaseData)
local RECOVERY_TYPE_TIME = 1
local RECOVERY_TYPE_DAILY = 2 local RECOVERY_TYPE_DAILY = 2
local SECONDS_PRE_DAY = 86400
local CACHE_ITEM = { local CACHE_ITEM = {
id = 0, id = 0,
@ -57,6 +57,7 @@ function ItemData:init(data)
end end
end end
end end
self.initDay = Time:getBeginningOfServerToday()
self.data.dirty = false self.data.dirty = false
end end
@ -222,6 +223,15 @@ function ItemData:setDirty()
self.data.dirty = not self.data.dirty self.data.dirty = not self.data.dirty
end end
-- 是否按时间恢复
function ItemData:isTimingRecovery(itemId)
local data = self.recoveryMap[itemId]
if not data then
return -1
end
return data.type == RECOVERY_TYPE_TIME
end
function ItemData:getTimelyItemRecoveryTime(itemId) function ItemData:getTimelyItemRecoveryTime(itemId)
local data = self.recoveryMap[itemId] local data = self.recoveryMap[itemId]
if not data then if not data then
@ -234,8 +244,13 @@ function ItemData:getTimelyItemRecoveryTime(itemId)
return -1 return -1
end end
-- 计算时间 -- 计算时间
local remainTime = data.ts + data.time - Time:getServerTime() if self:isTimingRecovery(itemId) then
return remainTime local remainTime = data.ts + data.time - Time:getServerTime()
return remainTime
else
-- 无自动恢复时间
return -1
end
end end
-- 按时间回复的在此回复 -- 按时间回复的在此回复
@ -270,17 +285,15 @@ end
-- 每日回复的在此回复 -- 每日回复的在此回复
function ItemData:recoveryDailyItem(data) function ItemData:recoveryDailyItem(data)
local nowTime = Time:getServerTime() if not self:isDayChange() then
if nowTime < data.ts then
return return
end end
local itemId = data.id local itemId = data.id
local currNum = self:getItemNumById(itemId) local currNum = self:getItemNumById(itemId)
if currNum < data.limit then if currNum < data.limit then
self:addItemNumById(itemId, data.limit - currNum, BIReport.ITEM_GET_TYPE.CROSS_DAY) self:addItemNumById(itemId, data.limit - currNum, BIReport.ITEM_GET_TYPE.CROSS_DAY)
end end
-- 计算下次回复的时间
data.ts = data.ts + SECONDS_PRE_DAY
end end
function ItemData:resetItemRecoveryTime(itemId) function ItemData:resetItemRecoveryTime(itemId)
@ -311,6 +324,11 @@ function ItemData:updateCd()
self:recoveryItem(v) -- 根据间隔时间增加 self:recoveryItem(v) -- 根据间隔时间增加
end end
end end
self.initDay = Time:getBeginningOfServerToday()
end
function ItemData:isDayChange()
return self.initDay ~= Time:getBeginningOfServerToday()
end end
return ItemData return ItemData

View File

@ -42,6 +42,7 @@ end
-- 设置数量 -- 设置数量
function ItemEntity:setNum(num) function ItemEntity:setNum(num)
Logger.logHighlight("设置:"..num)
self.data.num = num self.data.num = num
self:setDirty() self:setDirty()
end end

View File

@ -59,7 +59,7 @@ function HeroData:isExistHeroById(id)
return false return false
end end
return self.heroes[id] ~= nil return ConfigManager:getConfig("hero")[id] ~= nil
end end
function HeroData:addHero(heroStruct) function HeroData:addHero(heroStruct)