From 4ecf8a87dda89818f2bafd03dbdff949883df4fc Mon Sep 17 00:00:00 2001 From: puxuan <413323644@qq.com> Date: Fri, 10 Oct 2025 19:21:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=AF=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/common/config_manager.lua | 10 +- lua/app/common/data_manager.lua | 9 +- lua/app/common/module_manager.lua | 3 +- lua/app/config/const.lua | 28 + .../localization_global_const.lua | 13 + lua/app/config/strings/cn/chapter_dungeon.lua | 1206 +++++++++++++++++ .../strings/cn/chapter_dungeon.lua.meta} | 2 +- lua/app/config/strings/cn/global.lua | 16 +- lua/app/global/global_const.lua | 2 + .../battle_controller_dungeon_gold.lua | 17 +- lua/app/module/dungeon/dungeon_const.lua | 61 +- lua/app/module/dungeon/dungeon_manager.lua | 382 +++--- lua/app/module/item/item_const.lua | 2 + lua/app/ui/common/cell/hero_cell.lua | 51 +- lua/app/ui/common/cell/reward_cell.lua | 8 + lua/app/ui/dungeon/cell/dungeon_cell.lua | 96 ++ ...et_cell.lua.meta => dungeon_cell.lua.meta} | 2 +- lua/app/ui/dungeon/cell/dungeon_gold_cell.lua | 160 +++ .../dungeon_gold_cell.lua.meta} | 2 +- .../ui/dungeon/cell/dungeon_material_cell.lua | 161 +++ .../dungeon_material_cell.lua.meta} | 2 +- .../ui/dungeon/cell/dungeon_target_cell.lua | 119 -- lua/app/ui/dungeon/comp.meta | 8 + lua/app/ui/dungeon/comp/dungeon_gold_comp.lua | 63 + .../dungeon/comp/dungeon_gold_comp.lua.meta | 10 + .../ui/dungeon/comp/dungeon_material_comp.lua | 62 + .../comp/dungeon_material_comp.lua.meta | 10 + lua/app/ui/dungeon/dungeon_board_cell.lua | 138 -- lua/app/ui/dungeon/dungeon_comp.lua | 104 +- lua/app/ui/dungeon/dungeon_daily_main_ui.lua | 134 ++ .../ui/dungeon/dungeon_daily_main_ui.lua.meta | 10 + lua/app/ui/dungeon/dungeon_difficulty_ui.lua | 182 --- lua/app/ui/dungeon/item_get_ui.lua | 163 --- .../userdata/dungeon/dungeon_armor_entity.lua | 541 -------- .../dungeon/dungeon_armor_entity.lua.meta | 10 - .../userdata/dungeon/dungeon_base_entity.lua | 134 -- .../dungeon/dungeon_base_entity.lua.meta | 10 - .../userdata/dungeon/dungeon_daily_data.lua | 94 ++ .../dungeon/dungeon_daily_data.lua.meta | 10 + lua/app/userdata/dungeon/dungeon_data.lua | 665 +++------ .../userdata/dungeon/dungeon_gold_data.lua | 168 +++ .../dungeon/dungeon_gold_data.lua.meta | 10 + .../userdata/dungeon/dungeon_gold_entity.lua | 93 -- .../dungeon/dungeon_gold_entity.lua.meta | 10 - .../dungeon/dungeon_material_data.lua | 168 +++ .../dungeon/dungeon_material_data.lua.meta | 10 + .../userdata/dungeon/dungeon_rune_entity.lua | 308 ----- .../dungeon/dungeon_rune_entity.lua.meta | 10 - .../dungeon/dungeon_shards_entity.lua | 97 -- .../dungeon/dungeon_shards_entity.lua.meta | 10 - .../dungeon/dungeon_weapon_entity.lua | 217 --- .../dungeon/dungeon_weapon_entity.lua.meta | 10 - 52 files changed, 2956 insertions(+), 2855 deletions(-) create mode 100644 lua/app/config/strings/cn/chapter_dungeon.lua rename lua/app/{ui/dungeon/dungeon_difficulty_ui.lua.meta => config/strings/cn/chapter_dungeon.lua.meta} (86%) create mode 100644 lua/app/ui/dungeon/cell/dungeon_cell.lua rename lua/app/ui/dungeon/cell/{dungeon_target_cell.lua.meta => dungeon_cell.lua.meta} (86%) create mode 100644 lua/app/ui/dungeon/cell/dungeon_gold_cell.lua rename lua/app/ui/dungeon/{item_get_ui.lua.meta => cell/dungeon_gold_cell.lua.meta} (86%) create mode 100644 lua/app/ui/dungeon/cell/dungeon_material_cell.lua rename lua/app/ui/dungeon/{dungeon_board_cell.lua.meta => cell/dungeon_material_cell.lua.meta} (86%) delete mode 100644 lua/app/ui/dungeon/cell/dungeon_target_cell.lua create mode 100644 lua/app/ui/dungeon/comp.meta create mode 100644 lua/app/ui/dungeon/comp/dungeon_gold_comp.lua create mode 100644 lua/app/ui/dungeon/comp/dungeon_gold_comp.lua.meta create mode 100644 lua/app/ui/dungeon/comp/dungeon_material_comp.lua create mode 100644 lua/app/ui/dungeon/comp/dungeon_material_comp.lua.meta delete mode 100644 lua/app/ui/dungeon/dungeon_board_cell.lua create mode 100644 lua/app/ui/dungeon/dungeon_daily_main_ui.lua create mode 100644 lua/app/ui/dungeon/dungeon_daily_main_ui.lua.meta delete mode 100644 lua/app/ui/dungeon/dungeon_difficulty_ui.lua delete mode 100644 lua/app/ui/dungeon/item_get_ui.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_armor_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_armor_entity.lua.meta delete mode 100644 lua/app/userdata/dungeon/dungeon_base_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_base_entity.lua.meta create mode 100644 lua/app/userdata/dungeon/dungeon_daily_data.lua create mode 100644 lua/app/userdata/dungeon/dungeon_daily_data.lua.meta create mode 100644 lua/app/userdata/dungeon/dungeon_gold_data.lua create mode 100644 lua/app/userdata/dungeon/dungeon_gold_data.lua.meta delete mode 100644 lua/app/userdata/dungeon/dungeon_gold_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_gold_entity.lua.meta create mode 100644 lua/app/userdata/dungeon/dungeon_material_data.lua create mode 100644 lua/app/userdata/dungeon/dungeon_material_data.lua.meta delete mode 100644 lua/app/userdata/dungeon/dungeon_rune_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_rune_entity.lua.meta delete mode 100644 lua/app/userdata/dungeon/dungeon_shards_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_shards_entity.lua.meta delete mode 100644 lua/app/userdata/dungeon/dungeon_weapon_entity.lua delete mode 100644 lua/app/userdata/dungeon/dungeon_weapon_entity.lua.meta diff --git a/lua/app/common/config_manager.lua b/lua/app/common/config_manager.lua index f45c9d0e..2c1c27ac 100644 --- a/lua/app/common/config_manager.lua +++ b/lua/app/common/config_manager.lua @@ -111,12 +111,12 @@ function ConfigManager:preLoadConfig() end handleMonsterGrow("monster_chapter") handleMonsterGrow("monster_daily_challenge") - handleMonsterGrow("monster_dungeon_gold") - handleMonsterGrow("monster_dungeon_shards") - handleMonsterGrow("monster_dungeon_equip") - handleMonsterGrow("monster_dungeon_armor") + -- handleMonsterGrow("monster_dungeon_gold") + -- handleMonsterGrow("monster_dungeon_shards") + -- handleMonsterGrow("monster_dungeon_equip") + -- handleMonsterGrow("monster_dungeon_armor") handleMonsterGrow("monster_activity") - handleMonsterGrow("monster_dungeon_rune") + handleMonsterGrow("monster_dungeon") self.configs["monster"] = { data = monsterFullData, diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index fd64251d..4b637d9c 100644 --- a/lua/app/common/data_manager.lua +++ b/lua/app/common/data_manager.lua @@ -47,8 +47,10 @@ function DataManager:init() self:initManager("ActGiftData", "app/userdata/activity/act_gift_data") self:initManager("ActSprintData", "app/userdata/activity/act_sprint/act_sprint_data") self:initManager("ActSprintSummonDataAll", "app/userdata/activity/act_sprint/act_sprint_summon_data_all") - -- 特权卡 - self:initManager("PrivilegeCardData", "app/userdata/privilege_card/privilege_card_data") + -- 特权卡 + self:initManager("PrivilegeCardData", "app/userdata/privilege_card/privilege_card_data") + -- 日常副本 + self:initManager("DungeonDailyData", "app/userdata/dungeon/dungeon_daily_data") end function DataManager:initManager(name, path) @@ -179,6 +181,9 @@ function DataManager:initWithServerData(data) self.ActSprintData:init(data.activity_rush_exchange) self.ActSevenDayData:initData(data.seven_day) -- self.ActSprintSummonDataAll:initTaskData(data.activity_score_task, data.activity_task) + -- 副本 + self.DungeonData:init() + self.DungeonDailyData:init(data.dungeon) -- 商店礼包都初始化完了后检查一下每日红点 -- self.ShopData:checkShopDiscountRedPoint() diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua index d4c07533..42c80aaf 100644 --- a/lua/app/common/module_manager.lua +++ b/lua/app/common/module_manager.lua @@ -107,7 +107,6 @@ ModuleManager.MODULE_KEY = { BEGINNER_GIFT = "new_player_gift", -- 新手礼包 MAIL = "mail_open", -- 邮件 DUNGEON_SHARDS = "dungeon_shards_open", -- 碎片副本 - DUNGEON_GOLD = "dungeon_gold_open", -- 金币副本 INTRODUCT_GIFT = "introduct_gift", -- 入门礼包 ARENA = "arena_open", -- 竞技场 ARENA_GIFT = "act_arena_gift", -- 竞技场礼包 @@ -134,6 +133,8 @@ ModuleManager.MODULE_KEY = { ACT_SEVENDAY_2 = "act_sevenday_2", -- 免广告卡 CARD_AD = "card_ad", + DUNGEON_GOLD = "dungeon_gold", -- 金币副本 + DUNGEON_RES = "dungeon_res", -- 材料副本 } local _moduleMgrs = {} diff --git a/lua/app/config/const.lua b/lua/app/config/const.lua index c0e62db1..b731d024 100644 --- a/lua/app/config/const.lua +++ b/lua/app/config/const.lua @@ -484,6 +484,34 @@ local const = { } } }, + ["dungeon_show_reward"]={ + ["reward"]={ + { + ["type"]=1, + ["type_for_nothing"]="Vw==", + ["id"]=1, + ["id_for_nothing"]="Vw==", + ["num"]=2, + ["num_for_nothing"]="VA==" + }, + { + ["type"]=1, + ["type_for_nothing"]="Vw==", + ["id"]=2, + ["id_for_nothing"]="VA==", + ["num"]=1, + ["num_for_nothing"]="Vw==" + }, + { + ["type"]=1, + ["type_for_nothing"]="Vw==", + ["id"]=12, + ["id_for_nothing"]="Vwo=", + ["num"]=1, + ["num_for_nothing"]="Vw==" + } + } + }, ["daily_challenge_ads_double_rewards_limit"]={ ["value"]=2 } diff --git a/lua/app/config/localization/localization_global_const.lua b/lua/app/config/localization/localization_global_const.lua index 73a9d532..94b7c785 100644 --- a/lua/app/config/localization/localization_global_const.lua +++ b/lua/app/config/localization/localization_global_const.lua @@ -902,6 +902,19 @@ local LocalizationGlobalConst = HERO_DESC_28 = "HERO_DESC_28", HERO_DESC_29 = "HERO_DESC_29", HERO_DESC_30 = "HERO_DESC_30", + DUNGEON_TITLE_1 = "DUNGEON_TITLE_1", + DUNGEON_TITLE_2 = "DUNGEON_TITLE_2", + DUNGEON_TITLE_3 = "DUNGEON_TITLE_3", + DUNGEON_HELP_1 = "DUNGEON_HELP_1", + DUNGEON_HELP_2 = "DUNGEON_HELP_2", + DUNGEON_HELP_3 = "DUNGEON_HELP_3", + DUNGEON_DESC_1 = "DUNGEON_DESC_1", + DUNGEON_DESC_2 = "DUNGEON_DESC_2", + DUNGEON_DESC_3 = "DUNGEON_DESC_3", + DUNGEON_DESC_4 = "DUNGEON_DESC_4", + CHEAT_1 = "CHEAT_1", + BATTLE_DESC_18 = "BATTLE_DESC_18", + CHALLENGE_TEAM_10 = "CHALLENGE_TEAM_10", } return LocalizationGlobalConst \ No newline at end of file diff --git a/lua/app/config/strings/cn/chapter_dungeon.lua b/lua/app/config/strings/cn/chapter_dungeon.lua new file mode 100644 index 00000000..c31a9d4c --- /dev/null +++ b/lua/app/config/strings/cn/chapter_dungeon.lua @@ -0,0 +1,1206 @@ +local chapter_dungeon = { + [1001]={ + ["name"]="金币1" + }, + [1002]={ + ["name"]="金币2" + }, + [1003]={ + ["name"]="金币3" + }, + [1004]={ + ["name"]="金币4" + }, + [1005]={ + ["name"]="金币5" + }, + [1006]={ + ["name"]="金币6" + }, + [1007]={ + ["name"]="金币7" + }, + [1008]={ + ["name"]="金币8" + }, + [1009]={ + ["name"]="金币9" + }, + [1010]={ + ["name"]="金币10" + }, + [1011]={ + ["name"]="金币11" + }, + [1012]={ + ["name"]="金币12" + }, + [1013]={ + ["name"]="金币13" + }, + [1014]={ + ["name"]="金币14" + }, + [1015]={ + ["name"]="金币15" + }, + [1016]={ + ["name"]="金币16" + }, + [1017]={ + ["name"]="金币17" + }, + [1018]={ + ["name"]="金币18" + }, + [1019]={ + ["name"]="金币19" + }, + [1020]={ + ["name"]="金币20" + }, + [1021]={ + ["name"]="金币21" + }, + [1022]={ + ["name"]="金币22" + }, + [1023]={ + ["name"]="金币23" + }, + [1024]={ + ["name"]="金币24" + }, + [1025]={ + ["name"]="金币25" + }, + [1026]={ + ["name"]="金币26" + }, + [1027]={ + ["name"]="金币27" + }, + [1028]={ + ["name"]="金币28" + }, + [1029]={ + ["name"]="金币29" + }, + [1030]={ + ["name"]="金币30" + }, + [1031]={ + ["name"]="金币31" + }, + [1032]={ + ["name"]="金币32" + }, + [1033]={ + ["name"]="金币33" + }, + [1034]={ + ["name"]="金币34" + }, + [1035]={ + ["name"]="金币35" + }, + [1036]={ + ["name"]="金币36" + }, + [1037]={ + ["name"]="金币37" + }, + [1038]={ + ["name"]="金币38" + }, + [1039]={ + ["name"]="金币39" + }, + [1040]={ + ["name"]="金币40" + }, + [1041]={ + ["name"]="金币41" + }, + [1042]={ + ["name"]="金币42" + }, + [1043]={ + ["name"]="金币43" + }, + [1044]={ + ["name"]="金币44" + }, + [1045]={ + ["name"]="金币45" + }, + [1046]={ + ["name"]="金币46" + }, + [1047]={ + ["name"]="金币47" + }, + [1048]={ + ["name"]="金币48" + }, + [1049]={ + ["name"]="金币49" + }, + [1050]={ + ["name"]="金币50" + }, + [1051]={ + ["name"]="金币51" + }, + [1052]={ + ["name"]="金币52" + }, + [1053]={ + ["name"]="金币53" + }, + [1054]={ + ["name"]="金币54" + }, + [1055]={ + ["name"]="金币55" + }, + [1056]={ + ["name"]="金币56" + }, + [1057]={ + ["name"]="金币57" + }, + [1058]={ + ["name"]="金币58" + }, + [1059]={ + ["name"]="金币59" + }, + [1060]={ + ["name"]="金币60" + }, + [1061]={ + ["name"]="金币61" + }, + [1062]={ + ["name"]="金币62" + }, + [1063]={ + ["name"]="金币63" + }, + [1064]={ + ["name"]="金币64" + }, + [1065]={ + ["name"]="金币65" + }, + [1066]={ + ["name"]="金币66" + }, + [1067]={ + ["name"]="金币67" + }, + [1068]={ + ["name"]="金币68" + }, + [1069]={ + ["name"]="金币69" + }, + [1070]={ + ["name"]="金币70" + }, + [1071]={ + ["name"]="金币71" + }, + [1072]={ + ["name"]="金币72" + }, + [1073]={ + ["name"]="金币73" + }, + [1074]={ + ["name"]="金币74" + }, + [1075]={ + ["name"]="金币75" + }, + [1076]={ + ["name"]="金币76" + }, + [1077]={ + ["name"]="金币77" + }, + [1078]={ + ["name"]="金币78" + }, + [1079]={ + ["name"]="金币79" + }, + [1080]={ + ["name"]="金币80" + }, + [1081]={ + ["name"]="金币81" + }, + [1082]={ + ["name"]="金币82" + }, + [1083]={ + ["name"]="金币83" + }, + [1084]={ + ["name"]="金币84" + }, + [1085]={ + ["name"]="金币85" + }, + [1086]={ + ["name"]="金币86" + }, + [1087]={ + ["name"]="金币87" + }, + [1088]={ + ["name"]="金币88" + }, + [1089]={ + ["name"]="金币89" + }, + [1090]={ + ["name"]="金币90" + }, + [1091]={ + ["name"]="金币91" + }, + [1092]={ + ["name"]="金币92" + }, + [1093]={ + ["name"]="金币93" + }, + [1094]={ + ["name"]="金币94" + }, + [1095]={ + ["name"]="金币95" + }, + [1096]={ + ["name"]="金币96" + }, + [1097]={ + ["name"]="金币97" + }, + [1098]={ + ["name"]="金币98" + }, + [1099]={ + ["name"]="金币99" + }, + [1100]={ + ["name"]="金币100" + }, + [1101]={ + ["name"]="金币101" + }, + [1102]={ + ["name"]="金币102" + }, + [1103]={ + ["name"]="金币103" + }, + [1104]={ + ["name"]="金币104" + }, + [1105]={ + ["name"]="金币105" + }, + [1106]={ + ["name"]="金币106" + }, + [1107]={ + ["name"]="金币107" + }, + [1108]={ + ["name"]="金币108" + }, + [1109]={ + ["name"]="金币109" + }, + [1110]={ + ["name"]="金币110" + }, + [1111]={ + ["name"]="金币111" + }, + [1112]={ + ["name"]="金币112" + }, + [1113]={ + ["name"]="金币113" + }, + [1114]={ + ["name"]="金币114" + }, + [1115]={ + ["name"]="金币115" + }, + [1116]={ + ["name"]="金币116" + }, + [1117]={ + ["name"]="金币117" + }, + [1118]={ + ["name"]="金币118" + }, + [1119]={ + ["name"]="金币119" + }, + [1120]={ + ["name"]="金币120" + }, + [1121]={ + ["name"]="金币121" + }, + [1122]={ + ["name"]="金币122" + }, + [1123]={ + ["name"]="金币123" + }, + [1124]={ + ["name"]="金币124" + }, + [1125]={ + ["name"]="金币125" + }, + [1126]={ + ["name"]="金币126" + }, + [1127]={ + ["name"]="金币127" + }, + [1128]={ + ["name"]="金币128" + }, + [1129]={ + ["name"]="金币129" + }, + [1130]={ + ["name"]="金币130" + }, + [1131]={ + ["name"]="金币131" + }, + [1132]={ + ["name"]="金币132" + }, + [1133]={ + ["name"]="金币133" + }, + [1134]={ + ["name"]="金币134" + }, + [1135]={ + ["name"]="金币135" + }, + [1136]={ + ["name"]="金币136" + }, + [1137]={ + ["name"]="金币137" + }, + [1138]={ + ["name"]="金币138" + }, + [1139]={ + ["name"]="金币139" + }, + [1140]={ + ["name"]="金币140" + }, + [1141]={ + ["name"]="金币141" + }, + [1142]={ + ["name"]="金币142" + }, + [1143]={ + ["name"]="金币143" + }, + [1144]={ + ["name"]="金币144" + }, + [1145]={ + ["name"]="金币145" + }, + [1146]={ + ["name"]="金币146" + }, + [1147]={ + ["name"]="金币147" + }, + [1148]={ + ["name"]="金币148" + }, + [1149]={ + ["name"]="金币149" + }, + [1150]={ + ["name"]="金币150" + }, + [1151]={ + ["name"]="金币151" + }, + [1152]={ + ["name"]="金币152" + }, + [1153]={ + ["name"]="金币153" + }, + [1154]={ + ["name"]="金币154" + }, + [1155]={ + ["name"]="金币155" + }, + [1156]={ + ["name"]="金币156" + }, + [1157]={ + ["name"]="金币157" + }, + [1158]={ + ["name"]="金币158" + }, + [1159]={ + ["name"]="金币159" + }, + [1160]={ + ["name"]="金币160" + }, + [1161]={ + ["name"]="金币161" + }, + [1162]={ + ["name"]="金币162" + }, + [1163]={ + ["name"]="金币163" + }, + [1164]={ + ["name"]="金币164" + }, + [1165]={ + ["name"]="金币165" + }, + [1166]={ + ["name"]="金币166" + }, + [1167]={ + ["name"]="金币167" + }, + [1168]={ + ["name"]="金币168" + }, + [1169]={ + ["name"]="金币169" + }, + [1170]={ + ["name"]="金币170" + }, + [1171]={ + ["name"]="金币171" + }, + [1172]={ + ["name"]="金币172" + }, + [1173]={ + ["name"]="金币173" + }, + [1174]={ + ["name"]="金币174" + }, + [1175]={ + ["name"]="金币175" + }, + [1176]={ + ["name"]="金币176" + }, + [1177]={ + ["name"]="金币177" + }, + [1178]={ + ["name"]="金币178" + }, + [1179]={ + ["name"]="金币179" + }, + [1180]={ + ["name"]="金币180" + }, + [1181]={ + ["name"]="金币181" + }, + [1182]={ + ["name"]="金币182" + }, + [1183]={ + ["name"]="金币183" + }, + [1184]={ + ["name"]="金币184" + }, + [1185]={ + ["name"]="金币185" + }, + [1186]={ + ["name"]="金币186" + }, + [1187]={ + ["name"]="金币187" + }, + [1188]={ + ["name"]="金币188" + }, + [1189]={ + ["name"]="金币189" + }, + [1190]={ + ["name"]="金币190" + }, + [1191]={ + ["name"]="金币191" + }, + [1192]={ + ["name"]="金币192" + }, + [1193]={ + ["name"]="金币193" + }, + [1194]={ + ["name"]="金币194" + }, + [1195]={ + ["name"]="金币195" + }, + [1196]={ + ["name"]="金币196" + }, + [1197]={ + ["name"]="金币197" + }, + [1198]={ + ["name"]="金币198" + }, + [1199]={ + ["name"]="金币199" + }, + [1200]={ + ["name"]="金币200" + }, + [2001]={ + ["name"]="材料1" + }, + [2002]={ + ["name"]="材料2" + }, + [2003]={ + ["name"]="材料3" + }, + [2004]={ + ["name"]="材料4" + }, + [2005]={ + ["name"]="材料5" + }, + [2006]={ + ["name"]="材料6" + }, + [2007]={ + ["name"]="材料7" + }, + [2008]={ + ["name"]="材料8" + }, + [2009]={ + ["name"]="材料9" + }, + [2010]={ + ["name"]="材料10" + }, + [2011]={ + ["name"]="材料11" + }, + [2012]={ + ["name"]="材料12" + }, + [2013]={ + ["name"]="材料13" + }, + [2014]={ + ["name"]="材料14" + }, + [2015]={ + ["name"]="材料15" + }, + [2016]={ + ["name"]="材料16" + }, + [2017]={ + ["name"]="材料17" + }, + [2018]={ + ["name"]="材料18" + }, + [2019]={ + ["name"]="材料19" + }, + [2020]={ + ["name"]="材料20" + }, + [2021]={ + ["name"]="材料21" + }, + [2022]={ + ["name"]="材料22" + }, + [2023]={ + ["name"]="材料23" + }, + [2024]={ + ["name"]="材料24" + }, + [2025]={ + ["name"]="材料25" + }, + [2026]={ + ["name"]="材料26" + }, + [2027]={ + ["name"]="材料27" + }, + [2028]={ + ["name"]="材料28" + }, + [2029]={ + ["name"]="材料29" + }, + [2030]={ + ["name"]="材料30" + }, + [2031]={ + ["name"]="材料31" + }, + [2032]={ + ["name"]="材料32" + }, + [2033]={ + ["name"]="材料33" + }, + [2034]={ + ["name"]="材料34" + }, + [2035]={ + ["name"]="材料35" + }, + [2036]={ + ["name"]="材料36" + }, + [2037]={ + ["name"]="材料37" + }, + [2038]={ + ["name"]="材料38" + }, + [2039]={ + ["name"]="材料39" + }, + [2040]={ + ["name"]="材料40" + }, + [2041]={ + ["name"]="材料41" + }, + [2042]={ + ["name"]="材料42" + }, + [2043]={ + ["name"]="材料43" + }, + [2044]={ + ["name"]="材料44" + }, + [2045]={ + ["name"]="材料45" + }, + [2046]={ + ["name"]="材料46" + }, + [2047]={ + ["name"]="材料47" + }, + [2048]={ + ["name"]="材料48" + }, + [2049]={ + ["name"]="材料49" + }, + [2050]={ + ["name"]="材料50" + }, + [2051]={ + ["name"]="材料51" + }, + [2052]={ + ["name"]="材料52" + }, + [2053]={ + ["name"]="材料53" + }, + [2054]={ + ["name"]="材料54" + }, + [2055]={ + ["name"]="材料55" + }, + [2056]={ + ["name"]="材料56" + }, + [2057]={ + ["name"]="材料57" + }, + [2058]={ + ["name"]="材料58" + }, + [2059]={ + ["name"]="材料59" + }, + [2060]={ + ["name"]="材料60" + }, + [2061]={ + ["name"]="材料61" + }, + [2062]={ + ["name"]="材料62" + }, + [2063]={ + ["name"]="材料63" + }, + [2064]={ + ["name"]="材料64" + }, + [2065]={ + ["name"]="材料65" + }, + [2066]={ + ["name"]="材料66" + }, + [2067]={ + ["name"]="材料67" + }, + [2068]={ + ["name"]="材料68" + }, + [2069]={ + ["name"]="材料69" + }, + [2070]={ + ["name"]="材料70" + }, + [2071]={ + ["name"]="材料71" + }, + [2072]={ + ["name"]="材料72" + }, + [2073]={ + ["name"]="材料73" + }, + [2074]={ + ["name"]="材料74" + }, + [2075]={ + ["name"]="材料75" + }, + [2076]={ + ["name"]="材料76" + }, + [2077]={ + ["name"]="材料77" + }, + [2078]={ + ["name"]="材料78" + }, + [2079]={ + ["name"]="材料79" + }, + [2080]={ + ["name"]="材料80" + }, + [2081]={ + ["name"]="材料81" + }, + [2082]={ + ["name"]="材料82" + }, + [2083]={ + ["name"]="材料83" + }, + [2084]={ + ["name"]="材料84" + }, + [2085]={ + ["name"]="材料85" + }, + [2086]={ + ["name"]="材料86" + }, + [2087]={ + ["name"]="材料87" + }, + [2088]={ + ["name"]="材料88" + }, + [2089]={ + ["name"]="材料89" + }, + [2090]={ + ["name"]="材料90" + }, + [2091]={ + ["name"]="材料91" + }, + [2092]={ + ["name"]="材料92" + }, + [2093]={ + ["name"]="材料93" + }, + [2094]={ + ["name"]="材料94" + }, + [2095]={ + ["name"]="材料95" + }, + [2096]={ + ["name"]="材料96" + }, + [2097]={ + ["name"]="材料97" + }, + [2098]={ + ["name"]="材料98" + }, + [2099]={ + ["name"]="材料99" + }, + [2100]={ + ["name"]="材料100" + }, + [2101]={ + ["name"]="材料101" + }, + [2102]={ + ["name"]="材料102" + }, + [2103]={ + ["name"]="材料103" + }, + [2104]={ + ["name"]="材料104" + }, + [2105]={ + ["name"]="材料105" + }, + [2106]={ + ["name"]="材料106" + }, + [2107]={ + ["name"]="材料107" + }, + [2108]={ + ["name"]="材料108" + }, + [2109]={ + ["name"]="材料109" + }, + [2110]={ + ["name"]="材料110" + }, + [2111]={ + ["name"]="材料111" + }, + [2112]={ + ["name"]="材料112" + }, + [2113]={ + ["name"]="材料113" + }, + [2114]={ + ["name"]="材料114" + }, + [2115]={ + ["name"]="材料115" + }, + [2116]={ + ["name"]="材料116" + }, + [2117]={ + ["name"]="材料117" + }, + [2118]={ + ["name"]="材料118" + }, + [2119]={ + ["name"]="材料119" + }, + [2120]={ + ["name"]="材料120" + }, + [2121]={ + ["name"]="材料121" + }, + [2122]={ + ["name"]="材料122" + }, + [2123]={ + ["name"]="材料123" + }, + [2124]={ + ["name"]="材料124" + }, + [2125]={ + ["name"]="材料125" + }, + [2126]={ + ["name"]="材料126" + }, + [2127]={ + ["name"]="材料127" + }, + [2128]={ + ["name"]="材料128" + }, + [2129]={ + ["name"]="材料129" + }, + [2130]={ + ["name"]="材料130" + }, + [2131]={ + ["name"]="材料131" + }, + [2132]={ + ["name"]="材料132" + }, + [2133]={ + ["name"]="材料133" + }, + [2134]={ + ["name"]="材料134" + }, + [2135]={ + ["name"]="材料135" + }, + [2136]={ + ["name"]="材料136" + }, + [2137]={ + ["name"]="材料137" + }, + [2138]={ + ["name"]="材料138" + }, + [2139]={ + ["name"]="材料139" + }, + [2140]={ + ["name"]="材料140" + }, + [2141]={ + ["name"]="材料141" + }, + [2142]={ + ["name"]="材料142" + }, + [2143]={ + ["name"]="材料143" + }, + [2144]={ + ["name"]="材料144" + }, + [2145]={ + ["name"]="材料145" + }, + [2146]={ + ["name"]="材料146" + }, + [2147]={ + ["name"]="材料147" + }, + [2148]={ + ["name"]="材料148" + }, + [2149]={ + ["name"]="材料149" + }, + [2150]={ + ["name"]="材料150" + }, + [2151]={ + ["name"]="材料151" + }, + [2152]={ + ["name"]="材料152" + }, + [2153]={ + ["name"]="材料153" + }, + [2154]={ + ["name"]="材料154" + }, + [2155]={ + ["name"]="材料155" + }, + [2156]={ + ["name"]="材料156" + }, + [2157]={ + ["name"]="材料157" + }, + [2158]={ + ["name"]="材料158" + }, + [2159]={ + ["name"]="材料159" + }, + [2160]={ + ["name"]="材料160" + }, + [2161]={ + ["name"]="材料161" + }, + [2162]={ + ["name"]="材料162" + }, + [2163]={ + ["name"]="材料163" + }, + [2164]={ + ["name"]="材料164" + }, + [2165]={ + ["name"]="材料165" + }, + [2166]={ + ["name"]="材料166" + }, + [2167]={ + ["name"]="材料167" + }, + [2168]={ + ["name"]="材料168" + }, + [2169]={ + ["name"]="材料169" + }, + [2170]={ + ["name"]="材料170" + }, + [2171]={ + ["name"]="材料171" + }, + [2172]={ + ["name"]="材料172" + }, + [2173]={ + ["name"]="材料173" + }, + [2174]={ + ["name"]="材料174" + }, + [2175]={ + ["name"]="材料175" + }, + [2176]={ + ["name"]="材料176" + }, + [2177]={ + ["name"]="材料177" + }, + [2178]={ + ["name"]="材料178" + }, + [2179]={ + ["name"]="材料179" + }, + [2180]={ + ["name"]="材料180" + }, + [2181]={ + ["name"]="材料181" + }, + [2182]={ + ["name"]="材料182" + }, + [2183]={ + ["name"]="材料183" + }, + [2184]={ + ["name"]="材料184" + }, + [2185]={ + ["name"]="材料185" + }, + [2186]={ + ["name"]="材料186" + }, + [2187]={ + ["name"]="材料187" + }, + [2188]={ + ["name"]="材料188" + }, + [2189]={ + ["name"]="材料189" + }, + [2190]={ + ["name"]="材料190" + }, + [2191]={ + ["name"]="材料191" + }, + [2192]={ + ["name"]="材料192" + }, + [2193]={ + ["name"]="材料193" + }, + [2194]={ + ["name"]="材料194" + }, + [2195]={ + ["name"]="材料195" + }, + [2196]={ + ["name"]="材料196" + }, + [2197]={ + ["name"]="材料197" + }, + [2198]={ + ["name"]="材料198" + }, + [2199]={ + ["name"]="材料199" + }, + [2200]={ + ["name"]="材料200" + } +} +local config = { +data=chapter_dungeon,count=400 +} +return config \ No newline at end of file diff --git a/lua/app/ui/dungeon/dungeon_difficulty_ui.lua.meta b/lua/app/config/strings/cn/chapter_dungeon.lua.meta similarity index 86% rename from lua/app/ui/dungeon/dungeon_difficulty_ui.lua.meta rename to lua/app/config/strings/cn/chapter_dungeon.lua.meta index 77f4cfb7..e4d4bbe7 100644 --- a/lua/app/ui/dungeon/dungeon_difficulty_ui.lua.meta +++ b/lua/app/config/strings/cn/chapter_dungeon.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 93a0a9d95d4774c49b001c3108e5a61c +guid: 3964bac270fcd4c9890caf5a9fdf865e ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/config/strings/cn/global.lua b/lua/app/config/strings/cn/global.lua index 4816c79d..46420383 100644 --- a/lua/app/config/strings/cn/global.lua +++ b/lua/app/config/strings/cn/global.lua @@ -874,8 +874,6 @@ local localization_global = ["PRIVILEGE_CARD_NAME_1"] = "每日福利", ["PRIVILEGE_CARD_NAME_2"] = "永久免广告卡", ["PRIVILEGE_CARD_NAME_3"] = "月卡", - -- ["PRIVILEGE_CARD_NAME_4"] = "终身卡", - -- ["PRIVILEGE_CARD_NAME_5"] = "挑战征服卡", ["PRIVILEGE_CARD_DESC_1"] = "已累计{0}天", ["PRIVILEGE_CARD_DESC_2"] = "永久免广告特权", ["PRIVILEGE_CARD_DESC_3"] = "购买后立即获得", @@ -883,11 +881,6 @@ local localization_global = ["PRIVILEGE_CARD_DESC_5"] = "免费刷新齿轮次数+1", ["PRIVILEGE_CARD_DESC_6"] = "解锁快速挂机不限次", ["PRIVILEGE_CARD_DESC_7"] = "每天领取大量钻石", - -- ["PRIVILEGE_CARD_DESC_8"] = "每天获得巨量钻石", - -- ["PRIVILEGE_CARD_DESC_9"] = "立得终身卡头像框", - -- ["PRIVILEGE_CARD_DESC_10"] = "体力上限+20", - -- ["PRIVILEGE_CARD_DESC_11"] = "{0}挑战次数+{1}", - -- ["PRIVILEGE_CARD_DESC_12"] = "购买月卡可解锁3倍速", ["STAR_UNLOCK"] = "{0}星解锁", ["HERO_DESC_24"] = "升级将提升全体属性", ["HERO_DESC_25"] = "属性提升", @@ -896,6 +889,15 @@ local localization_global = ["HERO_DESC_28"] = "英雄攻击加成", ["HERO_DESC_29"] = "当前加成", ["HERO_DESC_30"] = "全局增益", + ["DUNGEON_TITLE_1"] = "试炼之塔", + ["DUNGEON_HELP_1"] = "试炼之塔\n\n玩法规则:\n\n进度继承: 每次从历史最高层开始挑战。\n随机强化: 怪物初始携带随机效果,每通关 1 层随机提升 1 个效果等级(最多强化 6 次)。\n阵容随机: 每层怪物组合动态变化。\n属性递增: 怪物血量、攻击力随层数提升。\n通关奖励: 每层通关后结算发放水晶、幸运币(用于能力强化)。\n技能选择: 前 10 层每关可选择 2 次技能。", + ["DUNGEON_DESC_1"] = "今日次数{0}/{1}", + ["DUNGEON_DESC_2"] = "是否消耗{0}钻石购买", + ["DUNGEON_DESC_3"] = "扫荡", + ["DUNGEON_DESC_4"] = "战况", + ["CHEAT_1"] = "战斗数据异常", + ["BATTLE_DESC_18"] = "挑战", + ["CHALLENGE_TEAM_10"] = "通过上一个难度解锁", } return localization_global \ No newline at end of file diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 98707069..c84ebeaf 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -250,6 +250,8 @@ GConst.ATLAS_PATH = { UI_TALENT = "assets/arts/atlas/ui/talent.asset", UI_SUMMON = "assets/arts/atlas/ui/summon.asset", ICON_SUMMON = "assets/arts/atlas/icon/hero_summon.asset", + UI_SUPPLY = "assets/arts/atlas/ui/supply.asset", + UI_DUNGEON = "assets/arts/atlas/ui/dungeon.asset", } GConst.TOUCH_EVENT = { diff --git a/lua/app/module/battle/controller/battle_controller_dungeon_gold.lua b/lua/app/module/battle/controller/battle_controller_dungeon_gold.lua index ca792b55..51deff38 100644 --- a/lua/app/module/battle/controller/battle_controller_dungeon_gold.lua +++ b/lua/app/module/battle/controller/battle_controller_dungeon_gold.lua @@ -6,11 +6,14 @@ function BattleControllerDungeonGold:getBoardConfig() end function BattleControllerDungeonGold:getChapterConfig() - return ConfigManager:getConfig("chapter_dungeon_gold") + return ConfigManager:getConfig("chapter_dungeon") end function BattleControllerDungeonGold:getChapterId() - return DataManager.DungeonData:getCurFightChapterId() + if self._chapterId == nil then + self._chapterId = DataManager.DungeonDailyData:getCurrChallengeChapterId() + end + return self._chapterId end function BattleControllerDungeonGold:refreshWave() @@ -89,9 +92,10 @@ function BattleControllerDungeonGold:postWaveOver(atkDead, isQuit) local duration = self.waveDurationTime local totalTime = self.totalDurationTime - local startTimes = DataManager.DungeonData:getTotalCount(ModuleManager.MODULE_KEY.DUNGEON_GOLD, self.chapterId) + -- local startTimes = DataManager.DungeonData:getTotalCount(ModuleManager.MODULE_KEY.DUNGEON_GOLD, self.chapterId) local isFirstWin = false - if DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) < self.chapterId and self.victory then + local maxPassedId = DataManager.DungeonDailyData.GoldData:getMaxPassedId() + if maxPassedId < self.chapterId and self.victory then isFirstWin = true end @@ -101,8 +105,9 @@ function BattleControllerDungeonGold:postWaveOver(atkDead, isQuit) end function BattleControllerDungeonGold:postFightStart() - local unlockMaxChapter = DataManager.DungeonData:getUnlockMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) - BIReport:postFightBegin(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, self:getWaveIndex(), self.chapterId, unlockMaxChapter, DataManager.DungeonData:getTotalCount(ModuleManager.MODULE_KEY.DUNGEON_GOLD, self.chapterId)) + -- local startTimes = DataManager.DungeonData:getTotalCount(ModuleManager.MODULE_KEY.DUNGEON_GOLD, self.chapterId) + local maxPassedId = DataManager.DungeonDailyData.GoldData:getMaxPassedId() + BIReport:postFightBegin(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, self:getWaveIndex(), self.chapterId, maxPassedId, startTimes) end return BattleControllerDungeonGold \ No newline at end of file diff --git a/lua/app/module/dungeon/dungeon_const.lua b/lua/app/module/dungeon/dungeon_const.lua index 439c1d33..05a56691 100644 --- a/lua/app/module/dungeon/dungeon_const.lua +++ b/lua/app/module/dungeon/dungeon_const.lua @@ -1,9 +1,60 @@ local DungeonConst = {} --- 副本类型类型 -DungeonConst.TYPE = { - WEAPON = 1, -- 武器副本 - ARMOR = 2, -- 防具副本 +DungeonConst.MODULE_KEY_DUNGEON_DAILY = "dungeon_daily" + +DungeonConst.DUNGEON_DAILY_TYPE = { + GOLD = 1, + MATERIAL = 2 } -return DungeonConst \ No newline at end of file +-- 对应dungeon表id +DungeonConst.IDS = { + [DungeonConst.MODULE_KEY_DUNGEON_DAILY] = 1, +} + +-- 标题 +DungeonConst.STR_TITLE = { + [DungeonConst.MODULE_KEY_DUNGEON_DAILY] = I18N.GlobalConst.DUNGEON_TITLE_1, +} + +-- 帮助信息 +DungeonConst.STR_HELP = { + [DungeonConst.MODULE_KEY_DUNGEON_DAILY] = I18N.GlobalConst.DUNGEON_HELP_1, +} + +-- banner名称 +DungeonConst.IMG_BANNER = { + [DungeonConst.MODULE_KEY_DUNGEON_DAILY] = "supply_banner_1", +} + +-- 副本排行榜类型,客户端自定义 +DungeonConst.RANK_TYPE = { + TOWER = 1, + WORLD_BOSS = 2, + DOOR = 3, + PRISON_PHYSICS = 4, + PRISON_WIND = 5, + PRISON_LIGHT = 6, + PRISON_FIRE = 7, + PRISON_ELECTRIC = 8, + PRISON_ICE = 9, + ELITE_CHALLENGE = 10, + ELEMENT_DUNGEON = 11, +} + +-- 排行榜名称 +DungeonConst.RANK_NAME = { + [DungeonConst.RANK_TYPE.TOWER] = I18N.GlobalConst.DUNGEON_TITLE_1, + [DungeonConst.RANK_TYPE.WORLD_BOSS] = I18N.GlobalConst.DUNGEON_TITLE_2, + [DungeonConst.RANK_TYPE.DOOR] = I18N.GlobalConst.DUNGEON_TITLE_3, + [DungeonConst.RANK_TYPE.PRISON_PHYSICS] = I18N.GlobalConst.PRISON_NAME_1, + [DungeonConst.RANK_TYPE.PRISON_WIND] = I18N.GlobalConst.PRISON_NAME_2, + [DungeonConst.RANK_TYPE.PRISON_LIGHT] = I18N.GlobalConst.PRISON_NAME_3, + [DungeonConst.RANK_TYPE.PRISON_FIRE] = I18N.GlobalConst.PRISON_NAME_4, + [DungeonConst.RANK_TYPE.PRISON_ELECTRIC] = I18N.GlobalConst.PRISON_NAME_5, + [DungeonConst.RANK_TYPE.PRISON_ICE] = I18N.GlobalConst.PRISON_NAME_6, + [DungeonConst.RANK_TYPE.ELITE_CHALLENGE] = I18N.GlobalConst.DUNGEON_TITLE_1, + [DungeonConst.RANK_TYPE.ELEMENT_DUNGEON] = I18N.GlobalConst.ELEMENTAL_DUNGEON_TITLE, +} + +return DungeonConst \ No newline at end of file diff --git a/lua/app/module/dungeon/dungeon_manager.lua b/lua/app/module/dungeon/dungeon_manager.lua index aeff224c..17bbbe06 100644 --- a/lua/app/module/dungeon/dungeon_manager.lua +++ b/lua/app/module/dungeon/dungeon_manager.lua @@ -1,260 +1,206 @@ local DungeonManager = class("DungeonManager", BaseModule) +--region UI +function DungeonManager:showDungeonDaylyMainUI(page) + local params = { + page = page or GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD + } + UIManager:showUI("app/ui/dungeon/dungeon_daily_main_ui", params) +end + +-- function DungeonManager:showRankUI(showPage, rankList, rankSelf) +-- local params = { +-- showPage = showPage, +-- rankList = rankList, +-- rankSelf = rankSelf, +-- } +-- UIManager:showUI("app/ui/rank/rank_ui", params) +-- end + +-- function DungeonManager:showRankRewardUI(showModule) +-- local params = { +-- showModule = showModule, +-- } +-- UIManager:showUI("app/ui/rank/rank_reward_ui", params) +-- end +--endregion + -- 外部接口-------------------------------------------------------------------------- --- 挑战 -function DungeonManager:reqChallenge(module, id) - if module == ModuleManager.MODULE_KEY.DUNGEON_GOLD then - self:reqChallengeGold(id) - elseif module == ModuleManager.MODULE_KEY.DUNGEON_SHARDS then - self:reqChallengeShards(id) - end -end - --- 结算 -function DungeonManager:reqEndChallenge(module, id) - if module == ModuleManager.MODULE_KEY.DUNGEON_GOLD then - self:reqEndChallengeGold(id) - elseif module == ModuleManager.MODULE_KEY.DUNGEON_SHARDS then - self:reqEndChallengeShards(id) - end -end - -- 扫荡 function DungeonManager:reqSweep(module, id) - if module == ModuleManager.MODULE_KEY.DUNGEON_GOLD then - self:reqSweepGold(id) - elseif module == ModuleManager.MODULE_KEY.DUNGEON_SHARDS then - self:reqSweepShards(id) - end + self:reqSweepGold(id) + -- if module == ModuleManager.MODULE_KEY.DUNGEON_GOLD then + -- self:reqSweepGold(id) + -- elseif module == ModuleManager.MODULE_KEY.DUNGEON_RES then + -- self:reqSweepShards(id) + -- end end -- 内部接口-------------------------------------------------------------------------- function DungeonManager:checkDayChange() - if EDITOR_MODE then - Logger.logHighlight("检查跨天:".. tostring(DataManager.DungeonData:getIfCanReset())) - end - if not DataManager.DungeonData:getIfCanReset() then + if EDITOR_MODE then + Logger.logHighlight("检查跨天:".. tostring(DataManager.DungeonData:getIfCanReset())) + end + if not DataManager.DungeonData:getIfCanReset() then return end - -- 跨天重置数据 - DataManager.DungeonData:onDayChange() + -- 跨天重置数据 + DataManager.DungeonData:onDayChange() end -- 请求挑战金币副本 -function DungeonManager:reqChallengeGold(id) - local moduleKey = ModuleManager.MODULE_KEY.DUNGEON_GOLD - -- 判断次数 - if DataManager.DungeonData:getRemainTimes(moduleKey) <= 0 then - GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) - return - end - - -- 判断体力 - if not DataManager.DungeonData:isEnoughHp(moduleKey) then - GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_VIT) - ModuleManager.CommerceManager:showBuyVitUI() - return - end - - if not DataManager.DungeonData:isCanChallenge(moduleKey) then - return - end - - local parmas = {chapter_gold_id = id} - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterGoldChallengeStartReq, parmas, self.respChallengeGold, BIReport.ITEM_GET_TYPE.DUNGEON_GOLD_CHALLENGE) +function DungeonManager:onDungeonStartReq(id) + local params = { + id = id, + } + local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(id) + local ticketCount = 0 + if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes() + ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes() + ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + else + return + end + local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_MATERIAL_BATTLE + self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonStartReq, params, self.onDungeonStartRsp, itemGetType) end -- 响应挑战金币副本 -function DungeonManager:respChallengeGold(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - DataManager.DungeonData:onFightCountReduce(ModuleManager.MODULE_KEY.DUNGEON_GOLD) - DataManager.DungeonData:setCurFightChapterId(result.reqData.chapter_gold_id) - ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD) - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DUNGEON_CHALLENGE) - end +function DungeonManager:onDungeonStartRsp(result) + if result.err_code ~= GConst.ERROR_STR.SUCCESS then + return + end + DataManager.DungeonDailyData:setCurrChallengeChapterId(result.reqData.id) + local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(result.reqData.id) + ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, nil, function() + UIManager:closeAllUI() + ModuleManager.MaincityManager:showMainCityUI(GConst.MainCityConst.BOTTOM_PAGE.DUNGEON) + ModuleManager.DungeonManager:showDungeonDaylyMainUI(dungeonDailyType) + end) + -- end, nil, {dungeonType = dungeonDailyType}) end -- 请求结算金币副本 -function DungeonManager:reqEndChallengeGold(id, combatReport, taskProgress, totalDamage, remainingHp) - local parmas = { - win = combatReport.victory, - total_damage = totalDamage, - remaining_hp = remainingHp, - chapter_gold_id = id, - task_stat = taskProgress, - combatReport = combatReport, - } - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterGoldChallengeSettlementReq, parmas, self.respEndChallengeGold, BIReport.ITEM_GET_TYPE.DUNGEON_GOLD_END) +function DungeonManager:reqEndChallengeGold(chapterId, combatReport, taskProgress, totalDamage, remainingHp) + -- local parmas = { + -- win = combatReport.victory, + -- total_damage = totalDamage, + -- remaining_hp = remainingHp, + -- chapter_gold_id = id, + -- task_stat = taskProgress, + -- combatReport = combatReport, + -- } + -- self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterGoldChallengeSettlementReq, parmas, self.respEndChallengeGold, BIReport.ITEM_GET_TYPE.DUNGEON_GOLD_END) + + local params = { + id = chapterId, + win = combatReport.victory, + cheat = false, + task_stat = taskProgress, + combatReport = combatReport, + } + local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(chapterId) + local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_MATERIAL_BATTLE + self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonSettlementReq, params, self.respEndChallengeGold, itemGetType) end -- 响应结算金币副本 function DungeonManager:respEndChallengeGold(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - local passId = DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) - DataManager.DungeonData:initDungeonGold(result.gold_challenge) - ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, result.rewards, result.reqData.combatReport) + if result.err_code == GConst.ERROR_STR.BATTLE_CHEATER then + ModuleManager.BattleManager:exitBattle() + local params = { + content = I18N:getGlobalText(I18N.GlobalConst.CHEAT_1), + boxType = GConst.MESSAGE_BOX_TYPE.MB_OK, + okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK), + } + GFunc.showMessageBox(params) + return + elseif result.err_code ~= GConst.ERROR_STR.SUCCESS then + return + end + local chapterId = result.reqData.id + local victory = result.reqData.win + DataManager.DungeonDailyData:onFightDungeonDailyFinish(chapterId, victory) + ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, result.rewards, result.reqData.combatReport) - if passId ~= DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) then - local data = {} - data.dungeon_progress = DataManager.DungeonData:getDungeonBIStr() - CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(data) - end + -- if passId ~= DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) then + -- local data = {} + -- data.dungeon_progress = DataManager.DungeonData:getDungeonBIStr() + -- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(data) + -- end - if result.reqData then - local taskStat = result.reqData.task_stat - if taskStat then - taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_BOSS] = 0 -- boss不算 - taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] = 0 -- 击杀小怪数量不算 - taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.PASS_WAVE] = 0 -- 通关波数不算 - ModuleManager.TaskManager:addFightTaskProgress(taskStat) - end - end - end + if result.reqData then + local taskStat = result.reqData.task_stat + if taskStat then + taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_BOSS] = 0 -- boss不算 + taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] = 0 -- 击杀小怪数量不算 + taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.PASS_WAVE] = 0 -- 通关波数不算 + ModuleManager.TaskManager:addFightTaskProgress(taskStat) + end + end end -- 请求扫荡金币副本 -function DungeonManager:reqSweepGold(id) - local moduleKey = ModuleManager.MODULE_KEY.DUNGEON_GOLD - -- 判断次数 - if DataManager.DungeonData:getRemainTimes(moduleKey) <= 0 then - GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) - return - end - - -- 判断体力 - if not DataManager.DungeonData:isEnoughHp(moduleKey) then - GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_VIT) - ModuleManager.CommerceManager:showBuyVitUI() - return - end - - if not DataManager.DungeonData:isCanChallenge(moduleKey) then - return - end - - local parmas = { - chapter_gold_id = id, +function DungeonManager:sweepDungeonDaily(id) + local params = { + id = id, } - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterGoldChallengeFarmReq, parmas, self.respSweepGold, BIReport.ITEM_GET_TYPE.DUNGEON_GOLD_SWEEP) + local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(id) + if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.DUNGEON_TICKET_1) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.DUNGEON_TICKET_2) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + else + return + end + local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_MATERIAL_BATTLE + self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonSweepReq, params, self.onSweepDungeonDailyFinish, itemGetType) end -- 响应扫荡金币副本 -function DungeonManager:respSweepGold(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - DataManager.DungeonData:onFightCountReduce(ModuleManager.MODULE_KEY.DUNGEON_GOLD) +function DungeonManager:onSweepDungeonDailyFinish(result) + if result.err_code ~= GConst.ERROR_STR.SUCCESS then + return + end + if result.rewards then GFunc.showRewardBox(result.rewards) - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DUNGEON_SWEEP) end + DataManager.DungeonDailyData:onSweepDungeonDailyFinish(result.reqData.id) + ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.CHALLENGE_DAILY_NUM_SINGLE, 1) end --- 请求挑战碎片副本 -function DungeonManager:reqChallengeShards(id) - local moduleKey = ModuleManager.MODULE_KEY.DUNGEON_SHARDS - -- 判断次数 - if DataManager.DungeonData:getRemainTimes(moduleKey) <= 0 then - GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) - return - end - - -- 判断体力 - if not DataManager.DungeonData:isEnoughHp(moduleKey) then - GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_VIT) - ModuleManager.CommerceManager:showBuyVitUI() - return - end - - if not DataManager.DungeonData:isCanChallenge(moduleKey) then - return - end - - local parmas = {chapter_shards_id = id} - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterShardsChallengeStartReq, parmas, self.respChallengeShards, BIReport.ITEM_GET_TYPE.DUNGEON_SHARDS_CHALLENGE) -end - --- 响应挑战碎片副本 -function DungeonManager:respChallengeShards(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - DataManager.DungeonData:onFightCountReduce(ModuleManager.MODULE_KEY.DUNGEON_SHARDS) - DataManager.DungeonData:setCurFightChapterId(result.reqData.chapter_shards_id) - ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.DUNGEON_SHARDS) - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DUNGEON_CHALLENGE) - end -end - --- 请求结算碎片副本 -function DungeonManager:reqEndChallengeShards(id, combatReport, taskProgress, totalDamage) - local parmas = { - win = combatReport.victory, - total_damage = totalDamage, - chapter_shards_id = id, - task_stat = taskProgress, - combatReport = combatReport, - } - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterShardsChallengeSettlementReq, parmas, self.respEndChallengeShards, BIReport.ITEM_GET_TYPE.DUNGEON_SHARDS_END) -end - --- 响应结算碎片副本 -function DungeonManager:respEndChallengeShards(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - local passId = DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_SHARDS) - DataManager.DungeonData:initDungeonShards(result.shards_challenge) - local newRewards = {} - GFunc.mergeRewards2(result.rewards, newRewards, true) - ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.DUNGEON_SHARDS, newRewards, result.reqData and result.reqData.combatReport or {}, nil, nil, true) - - if passId ~= DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_SHARDS) then - local data = {} - data.dungeon_progress = DataManager.DungeonData:getDungeonBIStr() - CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(data) - end - - if result.reqData then - local taskStat = result.reqData.task_stat - if taskStat then - taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_BOSS] = 0 -- boss不算 - taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] = 0 -- 击杀小怪数量不算 - ModuleManager.TaskManager:addFightTaskProgress(taskStat) - end - end - end -end - --- 请求扫荡碎片副本 -function DungeonManager:reqSweepShards(id) - local moduleKey = ModuleManager.MODULE_KEY.DUNGEON_SHARDS - -- 判断次数 - if DataManager.DungeonData:getRemainTimes(moduleKey) <= 0 then - GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) - return - end - - -- 判断体力 - if not DataManager.DungeonData:isEnoughHp(moduleKey) then - GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_VIT) - ModuleManager.CommerceManager:showBuyVitUI() - return - end - - if not DataManager.DungeonData:isCanChallenge(moduleKey) then - return - end - - local parmas = { - chapter_shards_id = id, - } - self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterShardsChallengeFarmReq, parmas, self.respSweepShards, BIReport.ITEM_GET_TYPE.DUNGEON_SHARDS_SWEEP) -end - --- 响应扫荡碎片副本 -function DungeonManager:respSweepShards(result) - if result.err_code == GConst.ERROR_STR.SUCCESS then - DataManager.DungeonData:onFightCountReduce(ModuleManager.MODULE_KEY.DUNGEON_SHARDS) - GFunc.showRewardBox(result.rewards) - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DUNGEON_SWEEP) - end -end +--region 上报 +-- 日常副本 +BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_GOLD_BATTLE = "enter_dungeon_daily_gold_battle" -- 进入金币副本 +BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_GOLD_BATTLE = "finish_dungeon_daily_gold_battle" -- 结算金币副本 +BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_GOLD_BATTLE = "sweep_dungeon_daily_gold_battle" -- 扫荡金币副本 +BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_MATERIAL_BATTLE = "enter_dungeon_daily_material_battle" -- 进入材料副本 +BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_MATERIAL_BATTLE = "finish_dungeon_daily_material_battle" -- 结算材料副本 +BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_MATERIAL_BATTLE = "sweep_dungeon_daily_material_battle" -- 扫荡材料副本 +--endregion return DungeonManager \ No newline at end of file diff --git a/lua/app/module/item/item_const.lua b/lua/app/module/item/item_const.lua index a8311260..1dc492cf 100644 --- a/lua/app/module/item/item_const.lua +++ b/lua/app/module/item/item_const.lua @@ -26,6 +26,8 @@ ItemConst.ITEM_ID_GLOD_WING = 49 ItemConst.ITEM_ID_SLIVER_WING = 50 ItemConst.ITEM_ID_RUNES = 55 ItemConst.ITEM_ID_FULL_MOON = 56 +ItemConst.ITEM_ID_DUNGEON_TICKET_1 = 1 +ItemConst.ITEM_ID_DUNGEON_TICKET_2 = 1 ItemConst.ITEM_TYPE = { RES = 1, diff --git a/lua/app/ui/common/cell/hero_cell.lua b/lua/app/ui/common/cell/hero_cell.lua index d8c4853f..c432dd2f 100644 --- a/lua/app/ui/common/cell/hero_cell.lua +++ b/lua/app/ui/common/cell/hero_cell.lua @@ -11,16 +11,11 @@ function HeroCell:init() self.lvTx = uiMap["hero_cell.hero_bg.lv_tx"] -- 个人节点 self.selfNode = uiMap["hero_cell.hero_bg.self_node"] - self.progressBg = uiMap["hero_cell.hero_bg.self_node.progress_bg"] - self.progress = uiMap["hero_cell.hero_bg.self_node.progress_bg.progress"] - self.progressTx = uiMap["hero_cell.hero_bg.self_node.progress_bg.progress_tx"] self.unlockTx = uiMap["hero_cell.hero_bg.unlock_tx"] - self.fragmenImg = uiMap["hero_cell.hero_bg.self_node.progress_bg.fragment_img"] - self.lvUpArrow = uiMap["hero_cell.hero_bg.self_node.effect_node.ui_spine_obj"] + self.lvUpArrow = uiMap["hero_cell.hero_bg.self_node.ui_spine_obj"] self.maskImg2 = uiMap["hero_cell.hero_bg.mask_img_2"] -- 他人节点 - self.otherNode = uiMap["hero_cell.hero_bg.other_node"] - self.otherTxName = uiMap["hero_cell.hero_bg.other_node.tx_name"] + self.nameTx = uiMap["hero_cell.hero_bg.tx_name"] self.starComp = uiMap["hero_cell.hero_bg.star_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.STAR_CELL) self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7)) @@ -45,45 +40,30 @@ function HeroCell:refresh(heroEntity, isGray) end) self.selfNode:setVisible(true) - self.otherNode:setVisible(false) - local heroInfo = heroEntity:getConfig() - self:_refresh(heroInfo, isGray) + self:_refresh(heroEntity:getCfgId(), isGray) local canLvUp = heroEntity:canLvUp() self.lvUpArrow:setVisible(canLvUp) if canLvUp then self.lvUpArrow:playAnim("animation", true, false) end - self.fragmenImg:setVisible(not canLvUp) - local needFragmentCount = heroEntity:getLvUpMaterialNum() or 1 - local fragmentCount = DataManager.BagData.ItemData:getItemNumById(heroEntity:getFragmentId()) - self.progressTx:setText(fragmentCount .. "/" .. needFragmentCount) - if fragmentCount >= needFragmentCount then - self.progress:setSprite(GConst.ATLAS_PATH.COMMON, "common_progress_1", nil, self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)) - else - self.progress:setSprite(GConst.ATLAS_PATH.COMMON, "common_progress_2", nil, self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)) - end - self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = fragmentCount / needFragmentCount local star = heroEntity:getStar() self.starComp:refresh(star) if heroEntity:isUnlock() then if heroEntity:isActived() then - self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, heroEntity:getLv())) + self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_26, heroEntity:getLv())) self.lvTx:setVisible(true) else self.lvTx:setVisible(false) end - self.progressBg:setVisible(not heroEntity:isMaxLv()) self.unlockTx:setVisible(false) else self.lvTx:setVisible(false) if canLvUp then self.unlockTx:setVisible(false) - self.progressBg:setVisible(true) else self.unlockTx:setVisible(true) - self.progressBg:setVisible(false) end end self:refreshRedPoint() @@ -132,42 +112,28 @@ function HeroCell:refreshBriefInfo(heroEntity) local id = self.heroEntity:getCfgId() local level = self.heroEntity:getLv() self.selfNode:setVisible(false) - self.otherNode:setVisible(true) local star = heroEntity:getStar() self.starComp:refresh(star) self.unlockTx:setVisible(false) - self:_refresh(ConfigManager:getConfig("hero")[id]) - - self.otherTxName:setText(ModuleManager.HeroManager:getHeroName(id)) + self:_refresh(id) self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level)) end function HeroCell:refreshWithCfgId(id, isGray) local heroInfo = ConfigManager:getConfig("hero")[id] - self:_refresh(heroInfo, isGray) + self:_refresh(id, isGray) local lv = heroInfo.begin_lv - local lvInfo = ConfigManager:getConfig("hero_level")[lv] - local materials = lvInfo["cost_" .. heroInfo.qlt] - local fragmentCount = DataManager.BagData.ItemData:getItemNumById(heroInfo.item_id) - local needFragmentCount = materials[1] or 1 - self.progressTx:setText(fragmentCount .. "/" .. needFragmentCount) - if fragmentCount >= needFragmentCount then - self.progress:setSprite(GConst.ATLAS_PATH.COMMON, "common_progress_1", nil, self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)) - else - self.progress:setSprite(GConst.ATLAS_PATH.COMMON, "common_progress_2", nil, self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)) - end - self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = fragmentCount / needFragmentCount self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv)) self.lvTx:setVisible(true) - self.progressBg:setVisible(true) self.unlockTx:setVisible(false) self.lvUpArrow:setVisible(false) self.fragmenImg:setVisible(true) end -function HeroCell:_refresh(heroInfo, isGray) +function HeroCell:_refresh(id, isGray) + local heroInfo = ConfigManager:getConfig("hero")[id] self.clickCallback = nil self.maskImg2:setActive(isGray) self.heroBg:setSprite(GConst.ATLAS_PATH.ICON_HERO, GConst.FRAME_QLT[heroInfo.qlt]) @@ -176,6 +142,7 @@ function HeroCell:_refresh(heroInfo, isGray) self.check:setVisible(false) self:refreshHeroIcon(heroInfo.icon) self:setGray(isGray) + self.nameTx:setText(ModuleManager.HeroManager:getHeroName(id)) end function HeroCell:showCheck(visible) diff --git a/lua/app/ui/common/cell/reward_cell.lua b/lua/app/ui/common/cell/reward_cell.lua index c082c93a..d3310049 100644 --- a/lua/app/ui/common/cell/reward_cell.lua +++ b/lua/app/ui/common/cell/reward_cell.lua @@ -264,4 +264,12 @@ function RewardCell:showSelect(show) self.select:setActive(show == true) end +function RewardCell:setShowFirstTag(show) + if self.firstNode == nil or self.txfirst == nil then + return + end + self.firstNode:setVisible(show) + self.txfirst:setText(I18N:getGlobalText(I18N.GlobalConst.CHALLENGE_TEAM_7)) +end + return RewardCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/cell/dungeon_cell.lua b/lua/app/ui/dungeon/cell/dungeon_cell.lua new file mode 100644 index 00000000..7602d28d --- /dev/null +++ b/lua/app/ui/dungeon/cell/dungeon_cell.lua @@ -0,0 +1,96 @@ +local DungeonCell = class("DungeonCell", BaseCell) + +function DungeonCell:init() + local uiMap = self:getUIMap() + self.contentNode = uiMap["dungeon_cell.content"] + self.txTitle = uiMap["dungeon_cell.content.tx_title"] + self.infoNode = uiMap["dungeon_cell.content.info"] + self.btnHelp = uiMap["dungeon_cell.content.info.btn_help"] + self.timesTx = uiMap["dungeon_cell.content.info.tx_time"] + self.lockNode = uiMap["dungeon_cell.content.lock"] + self.lockTx = uiMap["dungeon_cell.content.lock.text"] + self.rewardCells = {} + for i = 1, 3 do + table.insert(self.rewardCells, uiMap["dungeon_cell.content.info.rewards.reward_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)) + end + self.txEmpty = uiMap["dungeon_cell.tx_empty"] + -- 敬请期待 + self.bgComingSoon = uiMap["dungeon_cell.bg_coming_soon"] + self.bgComingSoonTx = uiMap["dungeon_cell.bg_coming_soon.text"] + self.bgComingSoonTx:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_8)) + + self.btnHelp:addClickListener(function() + local params = { + desc = I18N:getGlobalText(GConst.DungeonConst.STR_HELP[self.moduleKey]) + } + ModuleManager.TipsManager:showHelpTips(params) + end) + + self.baseObject:addClickListener(function() + self:onClickGo() + end) +end + +function DungeonCell:refresh(moduleKey) + self.bgComingSoon:setVisible(false) + self.contentNode:setVisible(true) + self.moduleKey = moduleKey + self:getBaseObject():getGameObject().name = self.moduleKey + + self.txTitle:setText(I18N:getGlobalText(GConst.DungeonConst.STR_TITLE[self.moduleKey])) + local rewards = DataManager.DungeonData:getShowRewards(self.moduleKey) + for i, cell in ipairs(self.rewardCells) do + if rewards and rewards[i] then + cell:setActive(true) + cell:refreshByConfig(rewards[i]) + cell:hideCountTx() + else + cell:setActive(false) + end + end + self.baseObject:setSprite(GConst.ATLAS_PATH.UI_SUPPLY, GConst.DungeonConst.IMG_BANNER[self.moduleKey]) + if DataManager.DungeonData:isOpen(self.moduleKey) then + self.infoNode:setVisible(true) + self.lockNode:setVisible(false) + self.timesTx:setText(GConst.EMPTY_STRING) + else + self.timesTx:setText(GConst.EMPTY_STRING) + self.infoNode:setVisible(false) + self.lockNode:setVisible(true) + self.lockTx:setText(DataManager.DungeonData:getNotOpenStr(self.moduleKey)) + end + + if DataManager.DungeonData:hasRedPoint(self.moduleKey) then + self.baseObject:addRedPoint(334, 90, 1) + else + self.baseObject:removeRedPoint() + end + self.remainTime = nil + self:updateTime() +end + +function DungeonCell:showComingSoon() + self.bgComingSoon:setVisible(true) + self.contentNode:setVisible(false) +end + +function DungeonCell:onClickGo() + if not DataManager.DungeonData:isOpen(self.moduleKey, true) then + return + end + if self.moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + ModuleManager.DungeonManager:showDungeonDaylyMainUI() + end +end + +function DungeonCell:updateTime() + if self.moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + local remainTime = Time:getTodaySurplusTime() + if self.remainTime ~= remainTime then + self.remainTime = remainTime + self.timesTx:setText(I18N:getGlobalText(I18N.GlobalConst.GIFT_ROUTINE_DESC_9, Time:formatNumTime(remainTime))) + end + end +end + +return DungeonCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/cell/dungeon_target_cell.lua.meta b/lua/app/ui/dungeon/cell/dungeon_cell.lua.meta similarity index 86% rename from lua/app/ui/dungeon/cell/dungeon_target_cell.lua.meta rename to lua/app/ui/dungeon/cell/dungeon_cell.lua.meta index 1b980951..f2629b8b 100644 --- a/lua/app/ui/dungeon/cell/dungeon_target_cell.lua.meta +++ b/lua/app/ui/dungeon/cell/dungeon_cell.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 44945e5552167a94b9e05a970452fae0 +guid: f30c87e49a0944efab0cb8b97c491d13 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/ui/dungeon/cell/dungeon_gold_cell.lua b/lua/app/ui/dungeon/cell/dungeon_gold_cell.lua new file mode 100644 index 00000000..4ceb9407 --- /dev/null +++ b/lua/app/ui/dungeon/cell/dungeon_gold_cell.lua @@ -0,0 +1,160 @@ +local DungeonGoldCell = class("DungeonGoldCell", BaseCell) + +function DungeonGoldCell:init() + local uiMap = self:getUIMap() + + self.challengeBtn = uiMap["gold_cell.challenge_btn"] + self.challengeBtn:addClickListener(function() + if self.chapterId then + local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + -- ModuleManager.ChapterManager:showMainBattleEntryUI(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON,function() + -- self:OnClickStrtGame() + -- end, self.chapterId, false, GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD) + self:OnClickStrtGame() + end + end) + self.challengeBtnTx = uiMap["gold_cell.challenge_btn.text"] + self.challengeBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_18)) + -- 门票 + self.challengeBtnItem = uiMap["gold_cell.challenge_btn.item"] + self.challengeBtnItemTx = uiMap["gold_cell.challenge_btn.item.text"] + self.challengeBtnItemIcon = uiMap["gold_cell.challenge_btn.item.icon"] + self.challengeBtnItemNumTx = uiMap["gold_cell.challenge_btn.item.num_tx"] + self.challengeBtnItemTx:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_18)) + self.challengeBtnItemIcon:setSprite(GFunc.getIconRes(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1)) + + self.sweepBtn = uiMap["gold_cell.sweep_btn"] + self.sweepBtn:addClickListener(function() + if self.chapterId then + ModuleManager.DungeonManager:sweepDungeonDaily(self.chapterId) + end + end) + self.sweepBtnTx = uiMap["gold_cell.sweep_btn.text"] + self.sweepBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_DESC_3)) + -- 门票 + self.sweepBtnItem = uiMap["gold_cell.sweep_btn.item"] + self.sweepBtnItemTx = uiMap["gold_cell.sweep_btn.item.text"] + self.sweepBtnItemIcon = uiMap["gold_cell.sweep_btn.item.icon"] + self.sweepBtnItemNumTx = uiMap["gold_cell.sweep_btn.item.num_tx"] + self.sweepBtnItemTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_DESC_3)) + self.sweepBtnItemIcon:setSprite(GFunc.getIconRes(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1)) + + self.unlockBtn = uiMap["gold_cell.unlock_btn"] + self.unlockBtn:addClickListener(function() + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CHALLENGE_TEAM_10)) + end) + self.unlockTx = uiMap["gold_cell.unlock_btn.text"] + self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7)) + + self.stageTx = uiMap["gold_cell.stage_tx"] + self.powerTx = uiMap["gold_cell.power_tx"] + + self.scrollrect = uiMap["gold_cell.scrollrect"] + self.rewardList = {} +end +function DungeonGoldCell:OnClickStrtGame() + if self.chapterId then + ModuleManager.DungeonManager:onDungeonStartReq(self.chapterId) + -- ModuleManager.DungeonManager:startDungeonDailyBattle(self.chapterId) + end +end + +function DungeonGoldCell:refresh(index) + local chapterInfo = DataManager.DungeonDailyData.GoldData:getChapterInfo(index) + self.chapterId = chapterInfo.id + local maxPassedId = DataManager.DungeonDailyData.GoldData:getMaxPassedId() + local challengeId = DataManager.DungeonDailyData.GoldData:getChallengeId() + local chapterName = DataManager.DungeonDailyData.GoldData:getChapterName(chapterInfo.id) + self.stageTx:setText(chapterName) + -- local curPower = DataManager.PlayerData:getSelfEntity():getShowPower(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON) + -- local curPower = DataManager.HeroData:getShowPower() + -- local chapterPower = chapterInfo.cfg.power + -- if curPower >= chapterPower then + -- self.powerTx:setText("" .. I18N:getGlobalText(I18N.GlobalConst.RECOMMENDED_POWER, GFunc.getPowerShow(chapterPower)) .. "") + -- else + -- self.powerTx:setText("" .. I18N:getGlobalText(I18N.GlobalConst.RECOMMENDED_POWER, GFunc.getPowerShow(chapterPower)) .. "") + -- end + local rewardsCount = #self.rewardList + for i = 1, rewardsCount do + table.remove(self.rewardList) + end + self.firstCount = 0 + if chapterInfo.id > challengeId then -- 未解锁 + for k, v in ipairs(chapterInfo.cfg.first_reward) do + table.insert(self.rewardList, v) + end + self.firstCount = #chapterInfo.cfg.first_reward + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(false) + self.sweepBtn:setActive(false) + self.unlockBtn:setActive(true) + elseif chapterInfo.id == challengeId and challengeId ~= maxPassedId then -- 正在挑战中 + for k, v in ipairs(chapterInfo.cfg.first_reward) do + table.insert(self.rewardList, v) + end + self.firstCount = #chapterInfo.cfg.first_reward + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(true) + self.sweepBtn:setActive(false) + self.unlockBtn:setActive(false) + else -- 已通关,可以扫荡 + self.firstCount = 0 + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(false) + self.sweepBtn:setActive(true) + self.unlockBtn:setActive(false) + end + + if not self.scrollRectComp then + self.scrollRectComp = self.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(cellIndex, cell) + cell:refreshByConfig(self.rewardList[cellIndex], false, false) + cell:setShowFirstTag(cellIndex <= self.firstCount) + end) + end + + local totalCount = #self.rewardList + if self.scrollRectComp:getTotalCount() == nil or self.scrollRectComp:getTotalCount() <= 0 then + self.scrollRectComp:refillCells(totalCount) + elseif self.scrollRectComp:getTotalCount() ~= totalCount then + self.scrollRectComp:clearCells() + self.scrollRectComp:refillCells(totalCount) + else + self.scrollRectComp:updateAllCell() + end + + -- 根据道具数量刷新入口按钮 + local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1) + if remainTimes <= 0 and ticketCount > 0 then + self.challengeBtnItem:setVisible(true) + self.challengeBtnTx:setVisible(false) + self.challengeBtnItemNumTx:setText(ticketCount .. "/1") + + self.sweepBtnItem:setVisible(true) + self.sweepBtnTx:setVisible(false) + self.sweepBtnItemNumTx:setText(ticketCount .. "/1") + else + self.challengeBtnItem:setVisible(false) + self.challengeBtnTx:setVisible(true) + + self.sweepBtnItem:setVisible(false) + self.sweepBtnTx:setVisible(true) + end +end + +return DungeonGoldCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/item_get_ui.lua.meta b/lua/app/ui/dungeon/cell/dungeon_gold_cell.lua.meta similarity index 86% rename from lua/app/ui/dungeon/item_get_ui.lua.meta rename to lua/app/ui/dungeon/cell/dungeon_gold_cell.lua.meta index 85cc79b8..19c2092e 100644 --- a/lua/app/ui/dungeon/item_get_ui.lua.meta +++ b/lua/app/ui/dungeon/cell/dungeon_gold_cell.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5e5040fa8cbe53747ac9daae96856bb9 +guid: 5bd27958f45054ccc9c67d92901889ba ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/ui/dungeon/cell/dungeon_material_cell.lua b/lua/app/ui/dungeon/cell/dungeon_material_cell.lua new file mode 100644 index 00000000..dd7aa740 --- /dev/null +++ b/lua/app/ui/dungeon/cell/dungeon_material_cell.lua @@ -0,0 +1,161 @@ +local DungeonMaterialCell = class("DungeonMaterialCell", BaseCell) + +function DungeonMaterialCell:init() + local uiMap = self:getUIMap() + + self.challengeBtn = uiMap["material_cell.challenge_btn"] + self.challengeBtn:addClickListener(function() + if self.chapterId then + local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2) + if remainTimes <= 0 and ticketCount <= 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1)) + return + end + -- ModuleManager.ChapterManager:showMainBattleEntryUI(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON,function() + -- self:OnClickStrtGame() + -- end, self.chapterId, false, GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL) + self:OnClickStrtGame() + end + end) + self.challengeBtnTx = uiMap["material_cell.challenge_btn.text"] + self.challengeBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_18)) + -- 门票 + self.challengeBtnItem = uiMap["material_cell.challenge_btn.item"] + self.challengeBtnItemTx = uiMap["material_cell.challenge_btn.item.text"] + self.challengeBtnItemIcon = uiMap["material_cell.challenge_btn.item.icon"] + self.challengeBtnItemNumTx = uiMap["material_cell.challenge_btn.item.num_tx"] + self.challengeBtnItemTx:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_18)) + self.challengeBtnItemIcon:setSprite(GFunc.getIconRes(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2)) + + self.sweepBtn = uiMap["material_cell.sweep_btn"] + self.sweepBtn:addClickListener(function() + if self.chapterId then + ModuleManager.DungeonManager:sweepDungeonDaily(self.chapterId) + end + end) + self.sweepBtnTx = uiMap["material_cell.sweep_btn.text"] + self.sweepBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_DESC_3)) + -- 门票 + self.sweepBtnItem = uiMap["material_cell.sweep_btn.item"] + self.sweepBtnItemTx = uiMap["material_cell.sweep_btn.item.text"] + self.sweepBtnItemIcon = uiMap["material_cell.sweep_btn.item.icon"] + self.sweepBtnItemNumTx = uiMap["material_cell.sweep_btn.item.num_tx"] + self.sweepBtnItemTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_DESC_3)) + self.sweepBtnItemIcon:setSprite(GFunc.getIconRes(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2)) + + self.unlockBtn = uiMap["material_cell.unlock_btn"] + self.unlockBtn:addClickListener(function() + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CHALLENGE_TEAM_10)) + end) + self.unlockTx = uiMap["material_cell.unlock_btn.text"] + self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7)) + + self.stageTx = uiMap["material_cell.stage_tx"] + self.powerTx = uiMap["material_cell.power_tx"] + + self.scrollrect = uiMap["material_cell.scrollrect"] + self.rewardList = {} +end + +function DungeonMaterialCell:OnClickStrtGame() + if self.chapterId then + ModuleManager.DungeonManager:onDungeonStartReq(self.chapterId) + -- ModuleManager.DungeonManager:startDungeonDailyBattle(self.chapterId) + end +end + +function DungeonMaterialCell:refresh(index) + local chapterInfo = DataManager.DungeonDailyData.MaterialData:getChapterInfo(index) + self.chapterId = chapterInfo.id + local maxPassedId = DataManager.DungeonDailyData.MaterialData:getMaxPassedId() + local challengeId = DataManager.DungeonDailyData.MaterialData:getChallengeId() + local chapterName = DataManager.DungeonDailyData.MaterialData:getChapterName(chapterInfo.id) + self.stageTx:setText(chapterName) + -- local curPower = DataManager.PlayerData:getSelfEntity():getShowPower(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON) + -- local curPower = DataManager.HeroData:getShowPower() + -- local chapterPower = chapterInfo.cfg.power + -- if curPower >= chapterPower then + -- self.powerTx:setText("" .. I18N:getGlobalText(I18N.GlobalConst.RECOMMENDED_POWER, GFunc.getPowerShow(chapterPower)) .. "") + -- else + -- self.powerTx:setText("" .. I18N:getGlobalText(I18N.GlobalConst.RECOMMENDED_POWER, GFunc.getPowerShow(chapterPower)) .. "") + -- end + local rewardsCount = #self.rewardList + for i = 1, rewardsCount do + table.remove(self.rewardList) + end + self.firstCount = 0 + if chapterInfo.id > challengeId then -- 未解锁 + for k, v in ipairs(chapterInfo.cfg.first_reward) do + table.insert(self.rewardList, v) + end + self.firstCount = #chapterInfo.cfg.first_reward + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(false) + self.sweepBtn:setActive(false) + self.unlockBtn:setActive(true) + elseif chapterInfo.id == challengeId and challengeId ~= maxPassedId then -- 正在挑战中 + for k, v in ipairs(chapterInfo.cfg.first_reward) do + table.insert(self.rewardList, v) + end + self.firstCount = #chapterInfo.cfg.first_reward + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(true) + self.sweepBtn:setActive(false) + self.unlockBtn:setActive(false) + else -- 已通关,可以扫荡 + self.firstCount = 0 + for k, v in ipairs(chapterInfo.cfg.reward) do + table.insert(self.rewardList, v) + end + self.challengeBtn:setActive(false) + self.sweepBtn:setActive(true) + self.unlockBtn:setActive(false) + end + + if not self.scrollRectComp then + self.scrollRectComp = self.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(cellIndex, cell) + cell:refreshByConfig(self.rewardList[cellIndex], false, false) + cell:setShowFirstTag(cellIndex <= self.firstCount) + end) + end + + local totalCount = #self.rewardList + if self.scrollRectComp:getTotalCount() == nil or self.scrollRectComp:getTotalCount() <= 0 then + self.scrollRectComp:refillCells(totalCount) + elseif self.scrollRectComp:getTotalCount() ~= totalCount then + self.scrollRectComp:clearCells() + self.scrollRectComp:refillCells(totalCount) + else + self.scrollRectComp:updateAllCell() + end + + -- 根据道具数量刷新入口按钮 + local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes() + local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2) + if remainTimes <= 0 and ticketCount > 0 then + self.challengeBtnItem:setVisible(true) + self.challengeBtnTx:setVisible(false) + self.challengeBtnItemNumTx:setText(ticketCount .. "/1") + + self.sweepBtnItem:setVisible(true) + self.sweepBtnTx:setVisible(false) + self.sweepBtnItemNumTx:setText(ticketCount .. "/1") + else + self.challengeBtnItem:setVisible(false) + self.challengeBtnTx:setVisible(true) + + self.sweepBtnItem:setVisible(false) + self.sweepBtnTx:setVisible(true) + end +end + +return DungeonMaterialCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/dungeon_board_cell.lua.meta b/lua/app/ui/dungeon/cell/dungeon_material_cell.lua.meta similarity index 86% rename from lua/app/ui/dungeon/dungeon_board_cell.lua.meta rename to lua/app/ui/dungeon/cell/dungeon_material_cell.lua.meta index 5eafd3e5..c36e6f61 100644 --- a/lua/app/ui/dungeon/dungeon_board_cell.lua.meta +++ b/lua/app/ui/dungeon/cell/dungeon_material_cell.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 42e0b145611148845b047bd6359e9f4e +guid: 648ce5a0b2a4c455db454a2c3f85f76b ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/ui/dungeon/cell/dungeon_target_cell.lua b/lua/app/ui/dungeon/cell/dungeon_target_cell.lua deleted file mode 100644 index 14d129fe..00000000 --- a/lua/app/ui/dungeon/cell/dungeon_target_cell.lua +++ /dev/null @@ -1,119 +0,0 @@ -local DungeonTargetCell = class("DungeonTargetCell", BaseCell) - -function DungeonTargetCell:init() - local uiMap = self:getUIMap() - - self.txDesc = uiMap["dungeon_target_cell.tx_desc"] - self.btn = uiMap["dungeon_target_cell.right.btn"] - self.txBtn = uiMap["dungeon_target_cell.right.btn.tx_btn"] - -- 有扫荡次数 - self.timeObj = uiMap["dungeon_target_cell.time"] - self.txTime = uiMap["dungeon_target_cell.time.tx_time"] - self.powerObj = uiMap["dungeon_target_cell.right.power"] - self.imgPowerIcon = uiMap["dungeon_target_cell.right.power.img_icon"] - self.txPowerNum = uiMap["dungeon_target_cell.right.power.tx_num"] -end - -function DungeonTargetCell:refresh(targetId, targetNum, getWay, id) - self.getWay = getWay or self.getWay - self.dungeonId = id or self.dungeonId - if targetId and targetNum then - self.target = {id = targetId, value = targetNum} - end - - if self.getWay == GConst.DungeonConst.TYPE.WEAPON then - self:showWeapon() - elseif self.getWay == GConst.DungeonConst.TYPE.ARMOR then - self:showArmor() - end -end - --- 显示武器副本 -function DungeonTargetCell:showWeapon() - local weaponData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_WEAPON) - - local remainTime = weaponData:getRemianFarmCount() - - self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_19, self.dungeonId)) - - if weaponData:canFarmChapter(self.dungeonId) and remainTime > 0 then - -- 扫荡 - self.timeObj:setActive(true) - self.powerObj:setActive(true) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.SMASH)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_3") - self.txTime:setText(remainTime .."/" .. weaponData:getDialyFarmLimit()) - self.txPowerNum:setText(GFunc.getRewardNum(weaponData:getChallengeHpCost())) - GFunc.centerImgAndTx(self.imgPowerIcon, self.txPowerNum, 2) - self.btn:setTouchEnable(true) - elseif weaponData:canFightChapter(self.dungeonId) then - -- 前往 - self.timeObj:setActive(false) - self.powerObj:setActive(false) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_21)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_blue_3") - self.btn:setTouchEnable(true) - else - -- 未开启 - self.timeObj:setActive(false) - self.powerObj:setActive(false) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_22)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_3") - self.btn:setTouchEnable(false) - end - self.btn:addClickListener(function() - if weaponData:canFarmChapter(self.dungeonId) and remainTime > 0 then - ModuleManager.DungeonWeaponManager:reqSweep(self.dungeonId, self.target) - else - ModuleManager.DungeonWeaponManager:showMainUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI) - end - end) -end - --- 显示防具副本 -function DungeonTargetCell:showArmor() - local armorData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_ARMOR) - - local remainTime = armorData:getRemianFarmCount(self.dungeonId) - - local cfg = armorData:getConfig(self.dungeonId) - self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_20, cfg.chapter, cfg.stage)) - - if armorData:canFarmChapter(self.dungeonId) and remainTime > 0 then - -- 扫荡 - self.timeObj:setActive(true) - self.powerObj:setActive(true) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.SMASH)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_3") - self.txTime:setText(remainTime .."/" .. armorData:getDialyFarmLimit(self.dungeonId)) - self.txPowerNum:setText(GFunc.getRewardNum(armorData:getChallengeHpCost())) - GFunc.centerImgAndTx(self.imgPowerIcon, self.txPowerNum, 2) - self.btn:setTouchEnable(true) - - elseif armorData:canFightChapter(self.dungeonId) then - -- 前往 - self.timeObj:setActive(false) - self.powerObj:setActive(false) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_21)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_blue_3") - self.btn:setTouchEnable(true) - else - -- 未开启 - self.timeObj:setActive(false) - self.powerObj:setActive(false) - self.txBtn:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_22)) - self.btn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_3") - self.btn:setTouchEnable(false) - end - self.btn:addClickListener(function() - if armorData:canFarmChapter(self.dungeonId) and remainTime > 0 then - ModuleManager.DungeonArmorManager:reqSweep(self.dungeonId, self.target) - else - ModuleManager.DungeonArmorManager:showMainUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI) - end - end) -end - -return DungeonTargetCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/comp.meta b/lua/app/ui/dungeon/comp.meta new file mode 100644 index 00000000..c8c32d8b --- /dev/null +++ b/lua/app/ui/dungeon/comp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95839fad1f0264bf59d31f78317b9e65 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua b/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua new file mode 100644 index 00000000..4a401f7d --- /dev/null +++ b/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua @@ -0,0 +1,63 @@ +local DungeonGoldComp = class("DungeonGoldComp", LuaComponent) + +local DUNGEON_GOLD_CELL = "app/ui/dungeon/cell/dungeon_gold_cell" + +function DungeonGoldComp:init() + local uiMap = self:getUIMap() + self.scrollrect = uiMap["gold_comp.scrollrect"] + self.titleTx = uiMap["gold_comp.title_tx"] + self.descTx = uiMap["gold_comp.desc_tx"] + self.powerTx = uiMap["gold_comp.img_bg.tx_power"] +end + +function DungeonGoldComp:onRefresh(isFirstEnter) + self.titleTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_6)) + + local todayMaxTimes = DataManager.DungeonDailyData.GoldData:getTodayMaxTimes() + local timesStr = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes() .. "/" .. todayMaxTimes + self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst.BUY_VIT_DESC_2, timesStr)) + -- local curPower = DataManager.PlayerData:getSelfEntity():getShowPower(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON) + -- self.powerTx:setText(GFunc.getPowerShow(curPower)) + local curPower = DataManager.HeroData:getShowPower() + self.powerTx:setText(curPower) + if not self.scrollRectComp then + self.scrollRectComp = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.scrollRectComp:addInitCallback(function() + return DUNGEON_GOLD_CELL + end) + self.scrollRectComp:addRefreshCallback(function(index, cell) + cell:refresh(index) + end) + end + local allChaptersInfo = DataManager.DungeonDailyData.GoldData:getLimitChaptersInfo() + local count = #allChaptersInfo + if self.scrollRectComp:getTotalCount() == nil or self.scrollRectComp:getTotalCount() <= 0 then + self.scrollRectComp:refillCells(count) + elseif self.scrollRectComp:getTotalCount() ~= count then + self.scrollRectComp:clearCells() + self.scrollRectComp:refillCells(count) + else + self.scrollRectComp:updateAllCell() + end + if isFirstEnter then + local findIndex = 0 + local challengeId = DataManager.DungeonDailyData.GoldData:getChallengeId() + local maxPassedId = DataManager.DungeonDailyData.GoldData:getMaxPassedId() + if challengeId == maxPassedId then -- 全部通关了 + self.scrollRectComp:moveToIndex(count) + else + for k, v in ipairs(allChaptersInfo) do + if v.id == challengeId and challengeId ~= maxPassedId then + findIndex = k - 1 + break + end + end + if findIndex < 1 then + findIndex = 1 + end + self.scrollRectComp:moveToIndex(findIndex) + end + end +end + +return DungeonGoldComp \ No newline at end of file diff --git a/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua.meta b/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua.meta new file mode 100644 index 00000000..fad6242c --- /dev/null +++ b/lua/app/ui/dungeon/comp/dungeon_gold_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2300a94014c104e0997e8d79eb2cfdd1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/dungeon/comp/dungeon_material_comp.lua b/lua/app/ui/dungeon/comp/dungeon_material_comp.lua new file mode 100644 index 00000000..c96803eb --- /dev/null +++ b/lua/app/ui/dungeon/comp/dungeon_material_comp.lua @@ -0,0 +1,62 @@ +local DungeonMaterialComp = class("DungeonMaterialComp", LuaComponent) + +local DUNGEON_MATERIAL_CELL = "app/ui/dungeon/cell/dungeon_material_cell" + +function DungeonMaterialComp:init() + local uiMap = self:getUIMap() + self.scrollrect = uiMap["material_comp.scrollrect"] + self.titleTx = uiMap["material_comp.title_tx"] + self.descTx = uiMap["material_comp.desc_tx"] + self.powerTx = uiMap["material_comp.img_bg.tx_power"] +end + +function DungeonMaterialComp:onRefresh(isFirstEnter) + self.titleTx:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_7)) + local todayMaxTimes = DataManager.DungeonDailyData.MaterialData:getTodayMaxTimes() + local timesStr = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes() .. "/" .. todayMaxTimes + self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst.BUY_VIT_DESC_2, timesStr)) + -- local curPower = DataManager.PlayerData:getSelfEntity():getShowPower(ModuleManager.BattleManager.BATTLE_TYPE.DUNGEON) + -- self.powerTx:setText(GFunc.getPowerShow(curPower)) + local curPower = DataManager.HeroData:getShowPower() + self.powerTx:setText(curPower) + if not self.scrollRectComp then + self.scrollRectComp = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.scrollRectComp:addInitCallback(function() + return DUNGEON_MATERIAL_CELL + end) + self.scrollRectComp:addRefreshCallback(function(index, cell) + cell:refresh(index) + end) + end + local allChaptersInfo = DataManager.DungeonDailyData.MaterialData:getLimitChaptersInfo() + local count = #allChaptersInfo + if self.scrollRectComp:getTotalCount() == nil or self.scrollRectComp:getTotalCount() <= 0 then + self.scrollRectComp:refillCells(count) + elseif self.scrollRectComp:getTotalCount() ~= count then + self.scrollRectComp:clearCells() + self.scrollRectComp:refillCells(count) + else + self.scrollRectComp:updateAllCell() + end + if isFirstEnter then + local findIndex = 0 + local challengeId = DataManager.DungeonDailyData.MaterialData:getChallengeId() + local maxPassedId = DataManager.DungeonDailyData.MaterialData:getMaxPassedId() + if challengeId == maxPassedId then -- 全部通关了 + self.scrollRectComp:moveToIndex(count) + else + for k, v in ipairs(allChaptersInfo) do + if v.id == challengeId and challengeId ~= maxPassedId then + findIndex = k - 1 + break + end + end + if findIndex < 1 then + findIndex = 1 + end + self.scrollRectComp:moveToIndex(findIndex) + end + end +end + +return DungeonMaterialComp \ No newline at end of file diff --git a/lua/app/ui/dungeon/comp/dungeon_material_comp.lua.meta b/lua/app/ui/dungeon/comp/dungeon_material_comp.lua.meta new file mode 100644 index 00000000..8c4f04cb --- /dev/null +++ b/lua/app/ui/dungeon/comp/dungeon_material_comp.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 50c19fb0a117e477190e43a351d23242 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/dungeon/dungeon_board_cell.lua b/lua/app/ui/dungeon/dungeon_board_cell.lua deleted file mode 100644 index 158ba427..00000000 --- a/lua/app/ui/dungeon/dungeon_board_cell.lua +++ /dev/null @@ -1,138 +0,0 @@ -local DungeonBoardCell = class("DungeonBoardCell", BaseCell) - -local HIDE_REWARD_MODULE = { - [ModuleManager.MODULE_KEY.DUNGEON_WEAPON] = true, - [ModuleManager.MODULE_KEY.DUNGEON_ARMOR] = true, - [ModuleManager.MODULE_KEY.RUNES_OPEN] = true, -} - -function DungeonBoardCell:init() - self.uiMap = self:getUIMap() - - self.txTitle = self.uiMap["dungeon_board_cell.tx_title"] - self.countdown = self.uiMap["dungeon_board_cell.countdown"] - self.txCountdown = self.uiMap["dungeon_board_cell.countdown.tx_countdown"] - self.txOpen = self.uiMap["dungeon_board_cell.tx_open"] - self.lock = self.uiMap["dungeon_board_cell.lock"] - self.lockIcon = self.uiMap["dungeon_board_cell.lock.desc.icon"] - self.lockTxLock = self.uiMap["dungeon_board_cell.lock.desc.tx_lock"] - self.lockIconCountdown = self.uiMap["dungeon_board_cell.lock.countdown.icon"] - self.lockTxCountdown = self.uiMap["dungeon_board_cell.lock.countdown.tx_countdown"] - self.btnStart = self.uiMap["dungeon_board_cell.btn_start"] - self.txStart = self.uiMap["dungeon_board_cell.btn_start.tx_btn"] - self.txTimes = self.uiMap["dungeon_board_cell.btn_start.tx_times"] - self.btnHelp = self.uiMap["dungeon_board_cell.btn_help"] - self.itemReward = self.uiMap["dungeon_board_cell.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) - - self.btnStart:addClickListener(function() - DataManager.DungeonData:onClickFight(self.moduleKey) - end) - self.btnHelp:addClickListener(function() - -- 展示提示 - ModuleManager.TipsManager:showDescTips(DataManager.DungeonData:getRule(self.moduleKey), self.btnHelp) - end) -end - -function DungeonBoardCell:refresh(moduleKey) - self.moduleKey = moduleKey - - self:getGameObject().name = self.moduleKey - self:refreshInfo() - self:refreshRewards() -end - -function DungeonBoardCell:refreshInfo() - self.txTitle:setText(DataManager.DungeonData:getTitle(self.moduleKey)) - self.txOpen:setText("" .. DataManager.DungeonData:getOpenTimeDesc(self.moduleKey) .. "") - self.baseObject:setTexture(DataManager.DungeonData:getBanner(self.moduleKey)) - - if DataManager.DungeonData:isActive(self.moduleKey) then - self.btnStart:setVisible(true) - self.countdown:setVisible(true) - self.lock:setVisible(false) - - -- 红点 - if DataManager.DungeonData:isCanChallenge(self.moduleKey) then - self.btnStart:addRedPoint(110, 40, 0.6) - else - self.btnStart:removeRedPoint() - end - - self.txOpen:setAnchoredPositionY(-110) - self.txStart:setText(I18N:getGlobalText(I18N.GlobalConst.START_DESC)) - if self.moduleKey == ModuleManager.MODULE_KEY.DUNGEON_WEAPON then - local weaponData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_WEAPON) - local time = weaponData:getRemianFarmCount() - local timeStr = nil - if time <= 0 then - timeStr = "" .. time .. "" - else - timeStr = time - end - self.txTimes:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_5, timeStr)) - else - local time = DataManager.DungeonData:getRemainTimes(self.moduleKey) - local timeStr = nil - if time <= 0 then - timeStr = "" .. time .. "" - else - timeStr = time - end - self.txTimes:setText(I18N:getGlobalText(I18N.GlobalConst.TODAY_REMAIN_TIMES, timeStr)) - end - - if DataManager.DungeonData:isNotShowLimitCount(self.moduleKey) then - self.txTimes:setText(GConst.EMPTY_STRING) - end - - self:refreshCountdown(self.txCountdown) - else - self.btnStart:setVisible(false) - self.countdown:setVisible(false) - self.lock:setVisible(true) - - self.txOpen:setAnchoredPositionY(-75) - self.lockTxLock:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_OPEN)) - self:refreshCountdown(self.lockTxCountdown) - end - - GFunc.centerImgAndTx(self.lockIcon, self.lockTxLock, 10) - GFunc.centerImgAndTx(self.lockIconCountdown, self.lockTxCountdown, 10) -end - -function DungeonBoardCell:refreshRewards() - if HIDE_REWARD_MODULE[self.moduleKey] then - self.itemReward:getBaseObject():setActive(false) - else - self.itemReward:getBaseObject():setActive(true) - local id = DataManager.DungeonData:getBoardShowRewardId(self.moduleKey) - self.itemReward:refreshItemById(id, 0) - end -end - -function DungeonBoardCell:refreshCountdown(txCountdown) - if self.countdownSid then - self:getBaseObject():unscheduleGlobal(self.countdownSid) - self.countdownSid = nil - end - if DataManager.DungeonData:getIsAllTimeOpen(self.moduleKey) then - self.countdown:setVisible(false) - else - self.countdownSid = self:getBaseObject():scheduleGlobal(function() - self:updateTime(txCountdown) - end, 1) - self:updateTime(txCountdown) - end -end - -function DungeonBoardCell:updateTime(txCountdown) - if self.remainTime == nil or self.remainTime < 0 then - self.remainTime = DataManager.DungeonData:geNextTime(self.moduleKey) - else - self.remainTime = self.remainTime - 1 - end - - txCountdown:setText(GFunc.getTimeStrWithHMS(self.remainTime)) -end - -return DungeonBoardCell \ No newline at end of file diff --git a/lua/app/ui/dungeon/dungeon_comp.lua b/lua/app/ui/dungeon/dungeon_comp.lua index 7a6b8401..a29e0473 100644 --- a/lua/app/ui/dungeon/dungeon_comp.lua +++ b/lua/app/ui/dungeon/dungeon_comp.lua @@ -1,60 +1,76 @@ local DungeonComp = class("DungeonComp", LuaComponent) --- function DungeonComp:getIsOpen() --- return DataManager.DungeonData:isOpenAnyone() --- end - --- function DungeonComp:getEntranceName() --- return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_BTN) --- end - --- function DungeonComp:getShowEntranceRedPoint() --- return DataManager.DungeonData:isCanChallengeAnyone() --- end - --- function DungeonComp:ctor() --- end +local CELL = "app/ui/dungeon/cell/dungeon_cell" function DungeonComp:init() - self.uiMap = self:getBaseObject():genAllChildren() + local uiMap = self:getUIMap() + self.scrollrect = uiMap["dungeon_comp.content.scrollrect"] - self.scrollRect = self.uiMap["dungeon_comp.scrollrect"] - self.scrollRectComp = self.scrollRect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) - self.scrollRectComp:addInitCallback(function() - return "app/ui/dungeon/dungeon_board_cell" + self:bind(DataManager.DungeonDailyData.GoldData, "isDirty", function() + self:refresh() end) - self.scrollRectComp:addRefreshCallback(function(index, cell) - cell:refresh(self.openDungeons[index].module) + self:bind(DataManager.DungeonDailyData.MaterialData, "isDirty", function() + self:refresh() end) - self.scrollRectComp:setTotalCount(0) end -function DungeonComp:refresh(targetMuduleKey) - if EDITOR_MODE then - Logger.logHighlight("更新副本显示."..tostring(Time:getTodaySurplusTime())) +function DungeonComp:refresh(moduleKey) + if not self:getBaseObject():getActiveSelf() then + return end - self.openDungeons = DataManager.DungeonData:getOpenDungeons() - local targetIndex - if targetMuduleKey then - for index, dungeon in ipairs(self.openDungeons) do - if dungeon.module == targetMuduleKey then - targetIndex = index - break + self:checkRankData() + + self.showList = DataManager.DungeonData:getDungeonList() + if self.scrollRect == nil then + self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) + self.scrollRect:addInitCallback(function() + return CELL + end) + self.scrollRect:addRefreshCallback(function(index, cell) + if self.showList[index] then + cell:refresh(self.showList[index]) + else + cell:showComingSoon() end + end) + end + local cellCount = #self.showList + if not GFunc.isShenhe() then + cellCount = cellCount + 1 -- 最后一个显示敬请期待 + end + if self.scrollRect:getTotalCount() == nil or self.scrollRect:getTotalCount() <= 0 then + self.scrollRect:refillCells(cellCount) + elseif self.scrollRect:getTotalCount() ~= cellCount then + self.scrollRect:clearCells() + self.scrollRect:refillCells(cellCount) + else + self.scrollRect:updateAllCell() + end + + local findIdx = moduleKey and table.indexof(self.showList, moduleKey) or 0 + if moduleKey then + self.scrollRect:moveToIndex(findIdx) + end +end + +function DungeonComp:onCrossDay() + self.checkedRank = false +end + +function DungeonComp:checkRankData() + if self.checkedRank then + return + end + self.checkedRank = true +end + +function DungeonComp:updateTime() + local list = self.scrollRect:getListCell() + if list then + for k, v in ipairs(list) do + v:updateTime() end end - self.scrollRectComp:clearCells() - self.scrollRectComp:refillCells(#self.openDungeons, nil, targetIndex) - - -- 跨天定时器 - if self.countdownSid then - self:getBaseObject():unscheduleGlobal(self.countdownSid) - self.countdownSid = nil - end - self.countdownSid = self:getBaseObject():scheduleGlobal(function() - ModuleManager.DungeonManager:checkDayChange() - end, Time:getTodaySurplusTime() + 1) - end return DungeonComp \ No newline at end of file diff --git a/lua/app/ui/dungeon/dungeon_daily_main_ui.lua b/lua/app/ui/dungeon/dungeon_daily_main_ui.lua new file mode 100644 index 00000000..8c6ae368 --- /dev/null +++ b/lua/app/ui/dungeon/dungeon_daily_main_ui.lua @@ -0,0 +1,134 @@ +local DungeonDailyMainUI = class("DungeonDailyMainUI", BaseUI) + +local DUNGEON_GOLD_COMP = "app/ui/dungeon/comp/dungeon_gold_comp" +local DUNGEON_MATERIAL_COMP = "app/ui/dungeon/comp/dungeon_material_comp" + +function DungeonDailyMainUI:ctor(params) + self.page = params and params.page + if self.page == nil then + if DataManager.DungeonDailyData.GoldData:isOpen() then + self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD + elseif DataManager.DungeonDailyData.MaterialData:isOpen() then + self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL + end + elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + if not DataManager.DungeonDailyData.GoldData:isOpen() then + self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL + end + elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + if not DataManager.DungeonDailyData.MaterialData:isOpen() then + self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD + end + end + self.btns = {} +end + +function DungeonDailyMainUI:getPrefabPath() + return "assets/prefabs/ui/dungeon/dungeon_daily_main_ui.prefab" +end + +function DungeonDailyMainUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + self.closeBtn = uiMap["dungeon_daily_main_ui.bottom.close_btn"] + self.closeBtn:addClickListener(function() + self:closeUI() + end) + + self.dungeonGoldComp = uiMap["dungeon_daily_main_ui.gold_comp"]:addLuaComponent(DUNGEON_GOLD_COMP) + self.dungeonMaterialComp = uiMap["dungeon_daily_main_ui.material_comp"]:addLuaComponent(DUNGEON_MATERIAL_COMP) + + self.goldBtn = uiMap["dungeon_daily_main_ui.bottom.gold_btn"] + self.goldBtn:addClickListener(function() + self:switchPage(GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD) + end) + uiMap["dungeon_daily_main_ui.bottom.gold_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_8)) + self.materialBtn = uiMap["dungeon_daily_main_ui.bottom.material_btn"] + self.materialBtn:addClickListener(function() + self:switchPage(GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL) + end) + uiMap["dungeon_daily_main_ui.bottom.material_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_9)) + + self:_bind() +end + +function DungeonDailyMainUI:_bind() + self:bind(DataManager.DungeonDailyData.GoldData, "isDirty", function() + self:onRefresh() + end) + self:bind(DataManager.DungeonDailyData.MaterialData, "isDirty", function() + self:onRefresh() + end) + self:bind(DataManager.PrivilegeCardData, "isDirty", function() + self:onRefresh() + end) +end + +function DungeonDailyMainUI:onRefresh() + local btnsCount = #self.btns + for i = 1, btnsCount do + table.remove(self.btns) + end + if DataManager.DungeonDailyData.MaterialData:isOpen() then + self.materialBtn:setActive(true) + table.insert(self.btns, self.materialBtn) + if DataManager.DungeonDailyData.MaterialData:getIsShowRedPoint() then + self.materialBtn:addRedPoint(30, 30, 1) + else + self.materialBtn:removeRedPoint() + end + else + self.materialBtn:setActive(false) + end + if DataManager.DungeonDailyData.GoldData:isOpen() then + self.goldBtn:setActive(true) + table.insert(self.btns, self.goldBtn) + if DataManager.DungeonDailyData.GoldData:getIsShowRedPoint() then + self.goldBtn:addRedPoint(30, 30, 1) + else + self.goldBtn:removeRedPoint() + end + else + self.goldBtn:setActive(false) + end + for k, v in ipairs(self.btns) do + v:setAnchoredPositionX(-76 - (k-1)*123) + end + self:switchPage(self.page) +end + +function DungeonDailyMainUI:switchPage(page) + self.page = page + if self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + self.dungeonGoldComp:getBaseObject():setActive(true) + self.dungeonMaterialComp:getBaseObject():setActive(false) + self.goldBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_2_1") + self.materialBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_1_2") + self:refreshGold() + elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + self.dungeonGoldComp:getBaseObject():setActive(false) + self.dungeonMaterialComp:getBaseObject():setActive(true) + self.goldBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_2_2") + self.materialBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_1_1") + self:refreshMaterial() + end +end + +function DungeonDailyMainUI:refreshGold() + if self._alreadyEnterGold == nil then + self._alreadyEnterGold = true + self.dungeonGoldComp:onRefresh(true) + else + self.dungeonGoldComp:onRefresh() + end +end + +function DungeonDailyMainUI:refreshMaterial() + if self._alreadyEnterMaterial == nil then + self._alreadyEnterMaterial = true + self.dungeonMaterialComp:onRefresh(true) + else + self.dungeonMaterialComp:onRefresh(false) + end +end + +return DungeonDailyMainUI diff --git a/lua/app/ui/dungeon/dungeon_daily_main_ui.lua.meta b/lua/app/ui/dungeon/dungeon_daily_main_ui.lua.meta new file mode 100644 index 00000000..d23d318e --- /dev/null +++ b/lua/app/ui/dungeon/dungeon_daily_main_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7c842c06a8fa0463b8d19320e0264fa0 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/dungeon/dungeon_difficulty_ui.lua b/lua/app/ui/dungeon/dungeon_difficulty_ui.lua deleted file mode 100644 index c4cf5ed4..00000000 --- a/lua/app/ui/dungeon/dungeon_difficulty_ui.lua +++ /dev/null @@ -1,182 +0,0 @@ -local DungeonDifficultyUI = class("DungeonDifficultyUI", BaseUI) - -function DungeonDifficultyUI:isFullScreen() - return false -end - -function DungeonDifficultyUI:getPrefabPath() - return "assets/prefabs/ui/dungeon/dungeon_difficulty_ui.prefab" -end - -function DungeonDifficultyUI:ctor(params) - self.module = params.module - self.curId = DataManager.DungeonData:getUnlockMaxId(self.module) -end - -function DungeonDifficultyUI:onCover() -end - -function DungeonDifficultyUI:onReshow() -end - -function DungeonDifficultyUI:onClose() -end - -function DungeonDifficultyUI:onLoadRootComplete() - self.uiMap = self.root:genAllChildren() - - self.icon = self.uiMap["dungeon_difficulty_ui.bg.title.icon_title"] - self.btnClose = self.uiMap["dungeon_difficulty_ui.bg.close_btn"] - self.btnStart = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_start"] - self.txStart = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_start.tx_start"] - self.txStartCost = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_start.cost.tx_cost"] - self.btnSweep = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_sweep"] - self.txSweep = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_sweep.tx_sweep"] - self.txSweepCost = self.uiMap["dungeon_difficulty_ui.bg.btns.btn_sweep.cost.tx_cost"] - self.txTime = self.uiMap["dungeon_difficulty_ui.bg.btns.tx_time"] - self.txDifficulty = self.uiMap["dungeon_difficulty_ui.bg.select.chapter.tx_difficulty"] - self.txLevel = self.uiMap["dungeon_difficulty_ui.bg.select.chapter.tx_level"] - self.arrowLeft = self.uiMap["dungeon_difficulty_ui.bg.select.chapter.arrow_left"] - self.arrowRight = self.uiMap["dungeon_difficulty_ui.bg.select.chapter.arrow_right"] - self.txTitle = self.uiMap["dungeon_difficulty_ui.bg.title.title_text"] - self.buffObj = self.uiMap["dungeon_difficulty_ui.bg.boss_buff"] - self.txbuff = self.uiMap["dungeon_difficulty_ui.bg.boss_buff.tx_buff"] - self.iconBuff = self.uiMap["dungeon_difficulty_ui.bg.boss_buff.icon_buff"] - self.rewardTx = self.uiMap["dungeon_difficulty_ui.bg.reward_desc"] - self.rewardFirst = self.uiMap["dungeon_difficulty_ui.bg.rewards.reward_first"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) - self.rewardPass = self.uiMap["dungeon_difficulty_ui.bg.rewards.reward_pass"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) - self.txFrist = self.uiMap["dungeon_difficulty_ui.bg.rewards.reward_first.first.tx_first"] - self.Frist = self.uiMap["dungeon_difficulty_ui.bg.rewards.reward_first.first"] - self.txLock = self.uiMap["dungeon_difficulty_ui.bg.tx_lock"] - self.btnGroup = self.uiMap["dungeon_difficulty_ui.bg.btns"] - - local iconPath = DataManager.DungeonData:getIcon(self.module) - self.icon:setSprite(iconPath[1], iconPath[2], function() - self.icon:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_IMAGE):SetNativeSize() - end) - self.txTitle:setText(DataManager.DungeonData:getTitle(self.module)) - self.txDifficulty:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_STAGE)) - self.txStart:setText(I18N:getGlobalText(I18N.GlobalConst.START_DESC)) - self.txSweep:setText(I18N:getGlobalText(I18N.GlobalConst.SMASH)) - local cost = DataManager.DungeonData:getChallengeHpCost(self.module) - self.txStartCost:setText(GFunc.getRewardNum(cost)) - self.txSweepCost:setText(GFunc.getRewardNum(cost)) - self.txFrist:setText(I18N:getGlobalText(I18N.GlobalConst.FIRST_PASS)) - self.rewardTx:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC)) - self.txLock:setText(I18N:getGlobalText(I18N.GlobalConst.PASS_REQUIRE)) - - -- 背景自适应文本 - self.txFrist:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO):ForceMeshUpdate() - local txW = self.txFrist:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO).renderedWidth - self.Frist:setSizeDeltaX(txW + 20) - - self:refreshDifficulty() - - self.btnClose:addClickListener(function() - self:closeUI() - end) - self.btnStart:addClickListener(function() - -- 开始挑战 - ModuleManager.DungeonManager:reqChallenge(self.module, self.curId) - end) - self.btnSweep:addClickListener(function() - -- 开始扫荡 - ModuleManager.DungeonManager:reqSweep(self.module, self.curId) - end) - self.arrowLeft:addClickListener(function() - if self:isMinId() then - return - end - - self.curId = self.curId - 1 - self:refreshDifficulty() - end) - self.arrowRight:addClickListener(function() - if self:isMaxId() then - return - end - - self.curId = self.curId + 1 - self:refreshDifficulty() - end) - - self:addEventListener(EventManager.CUSTOM_EVENT.DUNGEON_DAY_CHANGE, function() - self:closeUI() - end) - self:addEventListener(EventManager.CUSTOM_EVENT.DUNGEON_CHALLENGE, function() - self:closeUI() - end) - self:addEventListener(EventManager.CUSTOM_EVENT.DUNGEON_SWEEP, function() - self:refreshDifficulty() - end) -end - -function DungeonDifficultyUI:refreshDifficulty() - self.btnSweep:setActive(self:isCanSweepId()) - self.txLevel:setText(tostring(self.curId)) - - -- buff - local buff = DataManager.DungeonData:getBossBuff(self.module, self.curId) - if buff then - local cfg = ConfigManager:getConfigWithOtherKey("buff", "name")[buff.type] - self.buffObj:setActive(true) - self.txbuff:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_DESC)) - self.iconBuff:setSprite(GConst.ATLAS_PATH.ICON_BUFF, cfg.icon) - self.iconBuff:addClickListener(function() - ModuleManager.TipsManager:showDescTips(GFunc.getBuffDesc(buff.type, buff.num), self.iconBuff) - end) - - GFunc.centerTxAndImg(self.txbuff, self.iconBuff, 5) - else - self.buffObj:setActive(false) - end - - -- 箭头 - self.txLock:setActive(not self:isCanChallengeId()) - self.btnGroup:setActive(self:isCanChallengeId()) - self.arrowRight:setActive(not self:isMaxId()) - self.arrowLeft:setActive(not self:isMinId()) - - -- 奖励 - local id = DataManager.DungeonData:getBoardShowRewardId(self.module) - local firstNum = DataManager.DungeonData:getFirstRewardNum(self.module, self.curId) - firstNum = firstNum or 0 - local passNum = DataManager.DungeonData:getPassRewardNum(self.module, self.curId) - passNum = passNum or 0 - - self.rewardFirst:refreshItemById(id, firstNum) - self.rewardPass:refreshItemById(id, passNum) - self.rewardFirst:getBaseObject():setActive((not self:isCanSweepId()) and firstNum) - - -- 次数 - local time = DataManager.DungeonData:getRemainTimes(self.module) - local timeStr = nil - if time <= 0 then - timeStr = "" .. time .. "" - else - timeStr = time - end - self.txTime:setText(I18N:getGlobalText(I18N.GlobalConst.TODAY_REMAIN_TIMES, timeStr)) -end - --- 是否是可扫荡关卡 -function DungeonDifficultyUI:isCanSweepId() - return self.curId <= DataManager.DungeonData:getPassedMaxId(self.module) -end - ---是否是可挑战关卡 -function DungeonDifficultyUI:isCanChallengeId() - return self.curId <= DataManager.DungeonData:getUnlockMaxId(self.module) -end - --- 是最大副本id -function DungeonDifficultyUI:isMaxId() - return self.curId == DataManager.DungeonData:getConfigMaxId(self.module) -end - ---是最小关卡 -function DungeonDifficultyUI:isMinId() - return self.curId == 1 -end - -return DungeonDifficultyUI \ No newline at end of file diff --git a/lua/app/ui/dungeon/item_get_ui.lua b/lua/app/ui/dungeon/item_get_ui.lua deleted file mode 100644 index f1be7771..00000000 --- a/lua/app/ui/dungeon/item_get_ui.lua +++ /dev/null @@ -1,163 +0,0 @@ -local ItemGetUI = class("ItemGetUI", BaseUI) - -local COMMON_MAIN_POSY = 0 -local COMMON_CLOSE_POSY = 280 -local GIFT_MAIN_POSY = 220 -local GIFT_CLOSE_POSY = 140 - -function ItemGetUI:isFullScreen() - return false -end - -function ItemGetUI:getPrefabPath() - return "assets/prefabs/ui/dungeon/item_get_ui.prefab" -end - -function ItemGetUI:onPressBackspace() - self:closeUI() -end - -function ItemGetUI:onClose() - if self.giftCountdownSid then - self.txCountdown:unscheduleGlobal(self.giftCountdownSid) - end -end - -function ItemGetUI:ctor(parmas) - self.equipEntity = DataManager.EquipData:getEquip(parmas.heroId, parmas.part) - self.targetId = parmas.id - self.targetNum = parmas.value -end - -function ItemGetUI:onLoadRootComplete() - local uiMap = self.root:genAllChildren() - - self.btnClose = uiMap["item_get_ui.content.btn_close"] - -- 主界面 - self.panelMain = uiMap["item_get_ui.panel_main"] - self.txTitle = uiMap["item_get_ui.content.title.tx_title"] - self.rewardCell = uiMap["item_get_ui.content.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) - self.txDesc = uiMap["item_get_ui.content.tx_desc"] - self.txGet = uiMap["item_get_ui.content.tx_get"] - self.scrollRectComp = uiMap["item_get_ui.content.scroll_view"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) - -- 礼包界面 - self.panelGift = uiMap["item_get_ui.panel_gift"] - self.txGiftTitle = uiMap["item_get_ui.panel_gift.tx_title"] - self.txCountdown = uiMap["item_get_ui.panel_gift.time_node.tx_countdown"] - self.btnBuy = uiMap["item_get_ui.panel_gift.buy_btn"] - self.txBuy = uiMap["item_get_ui.panel_gift.buy_btn.tx_buy"] - self.rewardNodeLayout = uiMap["item_get_ui.panel_gift.item_node"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) - self.rewardCellList = {} - for i = 1, 4 do - table.insert(self.rewardCellList, CellManager:addCellComp(uiMap["item_get_ui.panel_gift.item_node.pop_reward_cell_" .. i], GConst.TYPEOF_LUA_CLASS.POP_REWARD_CELL)) - end - - self.scrollRectComp:addInitCallback(function() - return "app/ui/dungeon/cell/dungeon_target_cell" - end) - self.scrollRectComp:addRefreshCallback(function(index, cell) - cell:refresh(self.targetId, self.targetNum, self.wayType, self.wayList[index]) - end) - - self.btnBuy:addClickListener(function() - if self.giftId then - PayManager:purchasePackage(self.giftId, PayManager.PURCHARSE_TYPE.ACT_GIFT) - end - end) - self.btnClose:addClickListener(function() - self:closeUI() - end) - self:addEventListener(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI, function() - self:closeUI() - end) - self:bind(DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_WEAPON), "isDirty", function() - self:onRefresh() - end) - self:bind(DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_ARMOR), "isDirty", function() - self:onRefresh() - end) - self:bind(DataManager.EquipData, "isDirty", function() - self:onRefresh() - end) -end - -function ItemGetUI:onRefresh() - self.txTitle:setText(I18N:getText("item", self.targetId, "name")) - self.txDesc:setText(I18N:getText("item", self.targetId, "desc")) - self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_23)) - self.rewardCell:refreshItemById(self.targetId) - - local itemCfg = ConfigManager:getConfig("item")[self.targetId] - if itemCfg == nil or itemCfg.get_way_type == nil or itemCfg.get_way == nil or #itemCfg.get_way == 0 then - self:closeUI() - return - end - - self.wayType = itemCfg.get_way_type - - local weaponData - if self.wayType == GConst.DungeonConst.TYPE.WEAPON then - weaponData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_WEAPON) - elseif self.wayType == GConst.DungeonConst.TYPE.ARMOR then - weaponData = DataManager.DungeonData:getDungeonDataByType(ModuleManager.MODULE_KEY.DUNGEON_ARMOR) - end - local farm = {} - local unlock = {} - local lock = {} - for index, id in ipairs(itemCfg.get_way) do - if weaponData:canFarmChapter(id) and weaponData:getRemianFarmCount(id) > 0 then - table.insert(farm, id) - elseif weaponData:canFightChapter(id) then - table.insert(unlock, id) - else - table.insert(lock, id) - end - end - unlock = table.addArray(farm, unlock) - self.wayList = table.addArray(unlock, lock) - - self.scrollRectComp:clearCells() - self.scrollRectComp:refillCells(#self.wayList) - - self:checkShowPanelGift() -end - --- 展示礼包界面 -function ItemGetUI:checkShowPanelGift() - self.panelGift:setActive(false) - self.panelMain:setAnchoredPositionY(COMMON_MAIN_POSY) - self.btnClose:setAnchoredPositionY(COMMON_CLOSE_POSY) - - self.giftId = DataManager.EquipData:getCanShowGiftId(self.equipEntity:getHeroId(), self.equipEntity:getPart()) - if self.giftId == nil then - return - end - - self.panelGift:setActive(true) - self.panelMain:setAnchoredPositionY(GIFT_MAIN_POSY) - self.btnClose:setAnchoredPositionY(GIFT_CLOSE_POSY) - - local gift = DataManager.ShopData:getActGiftConfig()[self.giftId] - self.txBuy:setText(GFunc.getFormatPrice(gift.recharge_id)) - self.txGiftTitle:setText(DataManager.EquipData:getGiftTitle(self.giftId)) - for i, cell in ipairs(self.rewardCellList) do - if gift.reward[i] then - cell:setVisible(true, 0.8) - cell:refresh(gift.reward[i].id, gift.reward[i].num, true) - else - cell:setVisible(false, 0.8) - end - end - self.rewardNodeLayout:RefreshLayout() - - -- 倒计时 - if self.giftCountdownSid then - self.txCountdown:unscheduleGlobal(self.giftCountdownSid) - end - self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.EquipData:getGiftRemainTime(self.giftId))) - self.giftCountdownSid = self.txCountdown:scheduleGlobal(function() - self.txCountdown:setText(GFunc.getTimeStrWithHMS2(DataManager.EquipData:getGiftRemainTime(self.giftId))) - end, 1) -end - -return ItemGetUI \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_armor_entity.lua b/lua/app/userdata/dungeon/dungeon_armor_entity.lua deleted file mode 100644 index 476d4933..00000000 --- a/lua/app/userdata/dungeon/dungeon_armor_entity.lua +++ /dev/null @@ -1,541 +0,0 @@ -local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity" -local DungeonArmorEntity = class("DungeonArmorEntity", DungeonBaseEntity) - -local FUND_AD_REWARD_ID = 1 - --- 支线副本数据 -function DungeonArmorEntity:clear() - DataManager:unregisterCrossDayFunc("DungeonArmorEntity") -end - -function DungeonArmorEntity:init(data) - Logger.logHighlight("-----DungeonArmorEntity------") - Logger.printTable(data) - self.maxPassedId = data.max_challenge_id or 0 - self.armorInfo = data.armor_info or {} - self.farmCount = data.farm_count or {} - self.heroes = data.heroes or {} - self.starRewards = data.star_rewards or {} - self.fundRewards = data.fund_rewards - self.totalChallengeCount = data.total_challenge_count - - self:updateGift(data.gift_info, true) - DataManager.FormationData:initDungeonArmor(self.heroes) - - DataManager:registerCrossDayFunc("DungeonArmorEntity", function() - self.fundRewards[FUND_AD_REWARD_ID] = false - self.farmCount = table.clearOrCreate(self.farmCount) - self:setDirty() - end) -end - -function DungeonArmorEntity:refreshInfoOnSettlement(chapterId, result) - if result.max_id > self.maxPassedId then - ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_DUNGEON_ARMOR, result.max_id - self.maxPassedId) - end - self.totalChallengeCount[chapterId] = (self.totalChallengeCount[chapterId] or 0) + 1 - self.maxPassedId = result.max_id - self.armorInfo[chapterId] = result.armor_info - self:updateGift(result.gift_info) - self:setDirty() -end - -function DungeonArmorEntity:refreshInfoOnFarm(chapterId, result) - self.farmCount[chapterId] = (self.farmCount[chapterId] or 0) + 1 - self:updateGift(result.gift_info) - self:setDirty() -end - -function DungeonArmorEntity:refreshFarmCount(chapterId, count) - if not count then - return - end - self.farmCount[chapterId] = count - self:setDirty() -end - --- 更新礼包状态 -function DungeonArmorEntity:updateGift(giftInfo, isInit) - DataManager.ShopData:initGift(PayManager.PURCHARSE_ACT_TYPE.ARMOR_GIFT, giftInfo, isInit) -end - -function DungeonArmorEntity:setStarReward(starId) - self.starRewards[starId] = true - self:setDirty() -end - -function DungeonArmorEntity:setDirty() - self.data.isDirty = not self.data.isDirty -end - -function DungeonArmorEntity:getTotalChallengeCount() - local count = 0 - for _, c in pairs(self.totalChallengeCount) do - count = count + 1 - end -end - -function DungeonArmorEntity:getTodayChallengeCount() - return 0 -end - -function DungeonArmorEntity:getPassedMaxId() - return self.maxPassedId -end - -function DungeonArmorEntity:getIsAllTimeOpen() - return true -end - -function DungeonArmorEntity:getModuleKey() - return ModuleManager.MODULE_KEY.DUNGEON_ARMOR -end - -function DungeonArmorEntity:getConfig(chapterId) - return ConfigManager:getConfig(self:getConfigName())[chapterId] -end - -function DungeonArmorEntity:getConfigName() - return "chapter_dungeon_armor" -end - -function DungeonArmorEntity:getTitleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_ARMOR_DESC_1) -end - -function DungeonArmorEntity:getRuleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_ARMOR_DESC_2) -end - -function DungeonArmorEntity:getOpenWeekString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_ARMOR_DESC_3) -end - -function DungeonArmorEntity:getBanner() - return "assets/arts/textures/background/dungeon/dungeon_bg_4.png" -end - -function DungeonArmorEntity:getOpenTextColor() - return "#FFFFFF" -end - -function DungeonArmorEntity:getChallengeHpCost() - return GFunc.getConstReward("dungeon_armor_limit") -end - -function DungeonArmorEntity:isNoTotalLimit() - return true -end - -function DungeonArmorEntity:isNotShowLimitCount() - return true -end - -function DungeonArmorEntity:onClickFight() - ModuleManager.DungeonArmorManager:showMainUI() -end - -function DungeonArmorEntity:getStagePassEnough(chapterId) - local config = self:getConfig(chapterId) - if not config then - return false - end - - if config.main_chapter and not DataManager.ChapterData:getChapterPassed(config.main_chapter) then - return false, DataManager.ChapterData:getMaxChapterId(), config.main_chapter - end - - return true -end - -function DungeonArmorEntity:canFightChapter(chapterId) - if not chapterId then - return false - end - - if chapterId <= self.maxPassedId + 1 then - if self:getStagePassEnough(chapterId) then - return true - end - end - - return false -end - -function DungeonArmorEntity:canFarmChapter(chapterId) - if not chapterId then - return false - end - - if self.maxPassedId >= chapterId then - if self:getStarNum(chapterId) >= 3 then - return true - end - end - - return false -end - -function DungeonArmorEntity:getDialyFarmLimit(chapterId) - local config = self:getConfig(chapterId) - if not config then - return 0 - end - return config.sweep -end - -function DungeonArmorEntity:getFarmCount(chapterId) - return self.farmCount[chapterId] or 0 -end - -function DungeonArmorEntity:getRemianFarmCount(chapterId) - local count = self:getDialyFarmLimit(chapterId) - self:getFarmCount(chapterId) - if count < 0 then - count = 0 - end - return count -end - -function DungeonArmorEntity:getStarRewardGot(star) - return self.starRewards[star] -end - -function DungeonArmorEntity:getStarNum(chapterId) - if not self.armorInfo[chapterId] then - return 0 - end - return #self.armorInfo[chapterId].stars -end - -function DungeonArmorEntity:getAllStarNum() - if not self.armorInfo then - return 0 - end - local count = 0 - for id, info in pairs(self.armorInfo) do - count = count + #info.stars - end - return count -end - -function DungeonArmorEntity:getMinStarTarget() - local count = ConfigManager:getConfigNum("chapter_dungeon_armor_reward") - local id - local nextTarget - - for i = 1, count do - if not self:getStarRewardGot(i) then - id = i - nextTarget = ConfigManager:getConfig("chapter_dungeon_armor_reward")[id].star - break - end - end - - if not id then -- 全部领完 - id = count - nextTarget = ConfigManager:getConfig("chapter_dungeon_armor_reward")[id].star - return id, nextTarget, nextTarget - end - - local starNum = self:getAllStarNum() - local lastStarNum = 0 - local lastConfig = ConfigManager:getConfig("chapter_dungeon_armor_reward")[id - 1] - if lastConfig then -- 不是第一个 - lastStarNum = lastConfig.star - end - local progress = starNum - lastStarNum - local totalProgress = nextTarget - lastStarNum - return id, progress, totalProgress -end - -function DungeonArmorEntity:getStarDone(chapterId, index) - if not self.armorInfo[chapterId] then - return false - end - - local stars = self.armorInfo[chapterId].stars - if stars then - for _, star in ipairs(stars) do - if star == index then - return true - end - end - end - return false -end - -function DungeonArmorEntity:getStarReward(chapterId, index) - local config = self:getConfig(chapterId) - return config.star_task_reward[index] -end - -function DungeonArmorEntity:getStarStarId(chapterId, index) - local config = self:getConfig(chapterId) - return config.star_task[index - 1] -end - -function DungeonArmorEntity:getStarInfo(chapterId) - return self.armorInfo[chapterId] -end - -function DungeonArmorEntity:setCurFightChapterId(chapterId) - self.curFightchapterId = chapterId or 1 -end - -function DungeonArmorEntity:getCurFightChapterId() - return self.curFightchapterId or 1 -end - -function DungeonArmorEntity:getChapterFightCount(chapterId) - return self.totalChallengeCount[chapterId] or 0 -end - -function DungeonArmorEntity:getTodayRemainLimitCount() -- 这里用作红点显示 - if self:canClaimStarReward() then - return 1 - end - - return 0 -end - -function DungeonArmorEntity:canClaimStarReward() - local id, progress, totalProgress = self:getMinStarTarget() - if self:getStarRewardGot(id) then - return false - end - - return progress >= totalProgress -end - -function DungeonArmorEntity:getMinLowThreeStarId() - for id, _ in ipairs(ConfigManager:getConfig(self:getConfigName())) do - local starNum = self:getStarNum(id) - if starNum < 3 then - return id - end - end - - return self.maxPassedId -end - -function DungeonArmorEntity:formatTaskByController(battleBaseController, chapterId) - local taskProgress = {} - if not battleBaseController then - return taskProgress - end - local pass = self:getPassedMaxId() >= chapterId and 1 or 0 - local hpp = math.floor(battleBaseController.battleData:getAtkTeam():getHpPercent() * 100 + 0.0001) - local bossRoundCount = 0 - local waveIndex = battleBaseController:getWaveIndex() - if waveIndex >= battleBaseController.maxWaveIndex then -- 最后一波 - bossRoundCount = battleBaseController.waveRoundCount[waveIndex] or 0 - end - local totalRound = 0 - for wave, round in pairs(battleBaseController.waveRoundCount) do - totalRound = totalRound + round - end - - local config = ConfigManager:getConfig("task_dungeon_armor") - taskProgress = { - [0] = pass - } - if config then - for id, info in pairs(config) do - if info.type == 1 then - taskProgress[id] = hpp - elseif info.type == 2 then - taskProgress[id] = bossRoundCount - elseif info.type == 3 then - taskProgress[id] = totalRound - end - end - end - - return taskProgress -end - -function DungeonArmorEntity:getTaskDesc(taskId, progress) - local config = ConfigManager:getConfig("task_dungeon_armor")[taskId] - if not config then - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_ARMOR_DESC_7) - end - - local desc = I18N:getConfig("task_dungeon_armor")[taskId].desc - - progress = progress or 0 - local taskNum = config.param - local over = false - if config.type == 1 then -- 特殊处理 - over = progress >= taskNum - progress = progress .. "%" - taskNum = taskNum .. "%" - elseif config.type == 2 then - over = progress <= taskNum - elseif config.type == 3 then - over = progress <= taskNum - end - local color = "#FF4949" - if over then - color = "#49FF49" - end - local progressStr = string.format("(%s/%s)", color, progress, taskNum) - return desc .. progressStr -end - -function DungeonArmorEntity:getTaskDescByIndex(chapterId, index, battleBaseController, taskProgress) - taskProgress = taskProgress or self:formatTaskByController(battleBaseController, chapterId) - - if not self.taskList then - self.taskList = {} - end - if not self.taskList[chapterId] then - self.taskList[chapterId] = GFunc.getTable(self:getConfig(chapterId).star_task) - table.insert(self.taskList[chapterId], 1, 0) -- 首位添加默认任务 - end - - local taskId = self.taskList[chapterId][index] - if not taskId then - return GConst.EMPTY_STRING - end - - local over = self:getStarDone(chapterId, index) - return self:getTaskDesc(taskId, taskProgress[taskId]), over -end - --- 获取当前基金奖励所属阶段 -function DungeonArmorEntity:getCurFundStage() - local cfg = ConfigManager:getConfig("dungeon_armor_fund") - for id, data in ipairs(cfg) do - if id ~= FUND_AD_REWARD_ID and not self:isGotFundReward(id) then - return data.stage - end - end - - return cfg[#cfg].stage -end - --- 基金是否有红点 -function DungeonArmorEntity:isHasFundRedDot() - return self:isCanWatchFundAd() or (self:isBoughtFundStage(self:getCurFundStage()) and self:hasCanGetFundReward()) -end - --- 基金阶段是否已购买 -function DungeonArmorEntity:isBoughtFundStage(stage) - if not stage then - return false - end - - local giftId = self:getFundStageGiftId(stage) - - if not giftId then - return false - end - - local count = DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, giftId) - - if EDITOR_MODE then - Logger.logHighlight("支线基金购买状态:"..giftId.."/"..count) - end - - return count > 0 -end - --- 获取基金阶段标题 -function DungeonArmorEntity:getFundStageTitle() - local stage = self:getCurFundStage() - return I18N:getGlobalText("DUNGEON_ARMOR_FUND_" .. stage) -end - --- 获取基金阶段的礼包id -function DungeonArmorEntity:getFundStageGiftId(stage) - local giftId - for id, data in ipairs(ConfigManager:getConfig("dungeon_armor_fund")) do - if data.stage == stage then - giftId = data.act_gift - break - end - end - return giftId -end - --- 获取基金阶段奖励id列表 -function DungeonArmorEntity:getFundStageRewardIds(stage) - local result = {} - - for id, data in ipairs(ConfigManager:getConfig("dungeon_armor_fund")) do - if data.stage == stage then - table.insert(result, id) - end - end - return result -end - --- 获取当前基金奖励列表(Sort) -function DungeonArmorEntity:getFundRewardIdsSort() - local ids = self:getFundStageRewardIds(self:getCurFundStage()) - - local unreceived = {} - local received = {} - - for index, id in ipairs(ids) do - if self:isGotFundReward(id) then - table.insert(received, id) - else - table.insert(unreceived, id) - end - end - table.sort(unreceived, function(a, b) return a < b end) - table.sort(received, function(a, b) return a < b end) - - if not self:isGotFundReward(FUND_AD_REWARD_ID) then - unreceived = table.addArray(self:getFundStageRewardIds(0), unreceived) - end - - return table.addArray(unreceived, received) -end - --- 是否满足基金奖励条件 -function DungeonArmorEntity:isMeetFundReward(id) - if id == FUND_AD_REWARD_ID then - return not self:isCanWatchFundAd() - end - - local cfg = ConfigManager:getConfig("dungeon_armor_fund")[id] - return cfg and self.maxPassedId >= cfg.dungeon_stage -end - --- 是否有可领取的基金奖励 -function DungeonArmorEntity:hasCanGetFundReward() - for index, id in ipairs(self:getFundRewardIdsSort(self:getCurFundStage())) do - if self:isMeetFundReward(id) and not self:isGotFundReward(id) then - return true - end - end - return false -end - --- 是否已领取基金奖励 -function DungeonArmorEntity:isGotFundReward(id) - return self.fundRewards and self.fundRewards[id] -end - --- 今日是否可以看基金广告 -function DungeonArmorEntity:isCanWatchFundAd() - return not self:isGotFundReward(FUND_AD_REWARD_ID) -end - --- 基金奖励领取成功 -function DungeonArmorEntity:onGetFundRewardSuccess(id) - if not self.fundRewards then - self.fundRewards = {} - end - self.fundRewards[id] = true - self:setDirty() -end - --- 基金购买成功 -function DungeonArmorEntity:onBuyFundSuccess() - self:setDirty() -end - -return DungeonArmorEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_armor_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_armor_entity.lua.meta deleted file mode 100644 index b10cbd42..00000000 --- a/lua/app/userdata/dungeon/dungeon_armor_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: e6bcb1d833ae6564dbd1fcd0827e589e -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_base_entity.lua b/lua/app/userdata/dungeon/dungeon_base_entity.lua deleted file mode 100644 index c6f9d5e5..00000000 --- a/lua/app/userdata/dungeon/dungeon_base_entity.lua +++ /dev/null @@ -1,134 +0,0 @@ -local DungeonBaseEntity = class("DungeonBaseEntity", BaseData) - --- 需要继承重写的部分 *********************************************************** - --- 初始化服务器数据 -function DungeonBaseEntity:init(data) -end - --- 获取副本模块名,对应ModuleManager.MODULE_KEY -function DungeonBaseEntity:getModuleKey() - return nil -end - --- 获取副本开启周期(星期几) -function DungeonBaseEntity:getOpenWeekCycle() - return nil -end - -function DungeonBaseEntity:getIsAllTimeOpen() - return false -end - -function DungeonBaseEntity:getCloseTime() - return nil -end - --- 获取副本配置名称 -function DungeonBaseEntity:getConfigName() - return nil -end - --- 获取副本标题文案 -function DungeonBaseEntity:getTitleString() - return nil -end - --- 获取副本规则描述 -function DungeonBaseEntity:getRuleString() - return nil -end - --- 获取副本boss抗性 -function DungeonBaseEntity:getBossBuff(id) - return nil -end - --- 获取开始时间描述 -function DungeonBaseEntity:getOpenWeekString() - return nil -end - --- 获取副本角标图 -function DungeonBaseEntity:getIcon() - return nil -end - --- 获取副本banner图 -function DungeonBaseEntity:getBanner() - return nil -end - --- 获取开启时间文本颜色 -function DungeonBaseEntity:getOpenTextColor() - return nil -end - --- 获取总挑战次数 -function DungeonBaseEntity:getTotalChallengeCount() - return nil -end - --- 获取今日已挑战次数 -function DungeonBaseEntity:getTodayChallengeCount() - return 0 -end - --- 获取已通关的最大副本id -function DungeonBaseEntity:getPassedMaxId() - return nil -end - --- 获取挑战体力消耗 -function DungeonBaseEntity:getChallengeHpCost() - return nil -end - --- 获取每日最大挑战次数 -function DungeonBaseEntity:getTodayMaxCount() - return 1 -end - --- 获取看板展示的副本奖励(返回id list) -function DungeonBaseEntity:getBoardShowRewardId() - return nil -end - --- 获取首通奖励个数 -function DungeonBaseEntity:getFirstRewardNum() - return 0 -end - --- 获取通关奖励个数 -function DungeonBaseEntity:getPassRewardNum() - return 0 -end - -function DungeonBaseEntity:isNoTotalLimit() - return false -end - -function DungeonBaseEntity:isNotShowLimitCount() - return false -end - -function DungeonBaseEntity:onClickFight() - UIManager:showUI("app/ui/dungeon/dungeon_difficulty_ui", {module = self:getModuleKey()}) -end - --- 常规逻辑 ********************************************************************* - --- 获取今日剩余挑战次数 -function DungeonBaseEntity:getTodayRemainLimitCount() - if self:isNoTotalLimit() then - return 1 - end - return self:getTodayMaxCount() - self:getTodayChallengeCount() -end - --- 获取副本配置 -function DungeonBaseEntity:getConfig() - return ConfigManager:getConfig(self:getConfigName()) -end - -return DungeonBaseEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_base_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_base_entity.lua.meta deleted file mode 100644 index 4f849ef1..00000000 --- a/lua/app/userdata/dungeon/dungeon_base_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: e4b0cc0f74106f04ab07ab30b1b724d8 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_daily_data.lua b/lua/app/userdata/dungeon/dungeon_daily_data.lua new file mode 100644 index 00000000..3240920c --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_daily_data.lua @@ -0,0 +1,94 @@ +local DungeonDailyData = class("DungeonDailyData", BaseData) + +function DungeonDailyData:ctor() + self.data.isDirty = false +end + +function DungeonDailyData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function DungeonDailyData:init(data) + data = data or GConst.EMPTY_TABLE + local dungeons = data.dungeons or GConst.EMPTY_TABLE + self.GoldData = require("app/userdata/dungeon/dungeon_gold_data"):create() + self.GoldData:init(dungeons[GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD]) + self.MaterialData = require("app/userdata/dungeon/dungeon_material_data"):create() + self.MaterialData:init(dungeons[GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL]) + + DataManager:registerCrossDayFunc("DungeonDailyData", function() + self.GoldData:onCrossDay() + self.MaterialData:onCrossDay() + end) +end + +function DungeonDailyData:isOpen(showToast) + return self.GoldData:isOpen(showToast) or self.MaterialData:isOpen(showToast) +end + +function DungeonDailyData:getNotShowModuleKey() + if not self.GoldData:isOpen() then + return self.GoldData:getModuleKey() + end + if not self.MaterialData:isOpen() then + return self.MaterialData:getModuleKey() + end + return nil +end + +function DungeonDailyData:getCurrChallengeChapterId() + return self.currChallengeChapterId +end + +function DungeonDailyData:setCurrChallengeChapterId(id) + self.currChallengeChapterId = id +end + +function DungeonDailyData:getDungeonDailyTypeByChapterId(chapterId) + local cfg = ConfigManager:getConfig("chapter_dungeon")[chapterId] + if cfg then + return cfg.type + else + return 1 + end +end + +function DungeonDailyData:getChapterMaxWave(chapterId) + local cfg = ConfigManager:getConfig("chapter_dungeon")[chapterId] + if cfg then + return #cfg.wave + else + return 1 + end +end + +function DungeonDailyData:getChapterName(chapterId) + return I18N:getConfig("chapter_dungeon")[chapterId].name +end + +function DungeonDailyData:onFightDungeonDailyFinish(chapterId, victory) + if not victory then + return + end + local dungeonDailyType = self:getDungeonDailyTypeByChapterId(chapterId) + if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + self.GoldData:onFightDungeonDailyFinish(chapterId, victory) + elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + self.MaterialData:onFightDungeonDailyFinish(chapterId, victory) + end +end + +function DungeonDailyData:onSweepDungeonDailyFinish(chapterId) + local dungeonDailyType = self:getDungeonDailyTypeByChapterId(chapterId) + if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then + self.GoldData:onSweepDungeonDailyFinish(chapterId) + elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then + self.MaterialData:onSweepDungeonDailyFinish(chapterId) + end +end + +function DungeonDailyData:getIsShowRedPoint() + return self.GoldData:getIsShowRedPoint() or self.MaterialData:getIsShowRedPoint() +end + +return DungeonDailyData \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_daily_data.lua.meta b/lua/app/userdata/dungeon/dungeon_daily_data.lua.meta new file mode 100644 index 00000000..071cc3bf --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_daily_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4b2049bc5bdf34d7ea59e0c0ec37e6b1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_data.lua b/lua/app/userdata/dungeon/dungeon_data.lua index c6d5235e..b487fbb0 100644 --- a/lua/app/userdata/dungeon/dungeon_data.lua +++ b/lua/app/userdata/dungeon/dungeon_data.lua @@ -1,515 +1,242 @@ local DungeonData = class("DungeonData", BaseData) -local SORT_ORDER = { - [ModuleManager.MODULE_KEY.DUNGEON_GOLD] = 1, - [ModuleManager.MODULE_KEY.DUNGEON_SHARDS] = 2, - -- [ModuleManager.MODULE_KEY.DUNGEON_WEAPON] = 3, - -- [ModuleManager.MODULE_KEY.DUNGEON_ARMOR] = 4, - [ModuleManager.MODULE_KEY.RUNES_OPEN] = 5, -} - -- 所有活动副本数据 - function DungeonData:ctor() - self.data.isDirty = false + self.data.isDirty = false +end + +function DungeonData:setDirty() + self.data.isDirty = not self.data.isDirty end function DungeonData:clear() - if self.dataDungeons then - for _, entity in pairs(self.dataDungeons) do - entity:clear() - end - end + DataManager:unregisterCrossDayFunc("DungeonData") end --- 初始化金币副本数据 -function DungeonData:initDungeonGold(data) - if data == nil then - return - end - - if EDITOR_MODE then - Logger.logHighlight("更新金币副本数据") - Logger.printTable(data) - end - - self:initAllDataClass() - self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_GOLD]:init(data) - self.data.gold = data - self:setDirty() -end - --- 初始化碎片副本数据 -function DungeonData:initDungeonShards(data) - if data == nil then - return - end - - if EDITOR_MODE then - Logger.logHighlight("更新碎片副本数据") - Logger.printTable(data) - end - - self:initAllDataClass() - self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_SHARDS]:init(data) - self.data.shards = data - self:setDirty() -end - --- 初始化支线副本数据 --- function DungeonData:initDungeonArmor(data) --- if data == nil then --- return --- end - --- if EDITOR_MODE then --- Logger.logHighlight("更新支线副本数据") --- Logger.printTable(data) --- end - --- self:initAllDataClass() --- self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_ARMOR]:init(data) --- self.data.armor = data --- self:setDirty() --- end - --- 初始化支线副本数据 --- function DungeonData:initDungeonWeapon(data) --- if data == nil then --- return --- end - --- if EDITOR_MODE then --- Logger.logHighlight("更新武器副本数据") --- Logger.printTable(data) --- end - --- self:initAllDataClass() --- self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_WEAPON]:init(data) --- self.data.weapon = data --- self:setDirty() --- end - --- 初始化符文副本数据 -function DungeonData:initDungeonRune(data) - if data == nil then - return - end - - self:initAllDataClass() - self.dataDungeons[ModuleManager.MODULE_KEY.RUNES_OPEN]:init(data) - self.data.rune = data - self:setDirty() -end - - --- 初始化所有副本数据类 -function DungeonData:initAllDataClass() - if self.dataDungeons == nil then - self.dataDungeons = {} - self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_GOLD] = require "app/userdata/dungeon/dungeon_gold_entity":create() - self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_SHARDS] = require "app/userdata/dungeon/dungeon_shards_entity":create() - -- self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_ARMOR] = require "app/userdata/dungeon/dungeon_armor_entity":create() - -- self.dataDungeons[ModuleManager.MODULE_KEY.DUNGEON_WEAPON] = require "app/userdata/dungeon/dungeon_weapon_entity":create() - self.dataDungeons[ModuleManager.MODULE_KEY.RUNES_OPEN] = require "app/userdata/dungeon/dungeon_rune_entity":create() - - if EDITOR_MODE then - Logger.logHighlight("星期".. tostring(Time:getWeekByTimeStamp())) - end - end - - self.initDay = Time:getBeginningOfServerToday() -end - -function DungeonData:getIfCanReset() - return self.initDay < Time:getBeginningOfServerToday() +function DungeonData:init() + DataManager:registerCrossDayFunc("DungeonData", function() + self:onDayChange() + end) end -- 跨天处理 function DungeonData:onDayChange() - self.data.gold.today_challenge_count = 0 - self.data.shards.today_challenge_count = 0 - - if EDITOR_MODE then - Logger.logHighlight("星期".. tostring(Time:getWeekByTimeStamp())) - end - - self:initDungeonGold(self.data.gold) - self:initDungeonShards(self.data.shards) - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DUNGEON_DAY_CHANGE) -end - --- 客户端处理副本次数+1的情况 -function DungeonData:onFightCountReduce(moduleKey) - if moduleKey == ModuleManager.MODULE_KEY.DUNGEON_GOLD then - self.data.gold.today_challenge_count = self.data.gold.today_challenge_count + 1 - self:initDungeonGold(self.data.gold) - elseif moduleKey == ModuleManager.MODULE_KEY.DUNGEON_SHARDS then - self.data.shards.today_challenge_count = self.data.shards.today_challenge_count + 1 - self:initDungeonShards(self.data.shards) - end -end - -function DungeonData:setDirty() - self.data.isDirty = not self.data.isDirty + self:setDirty() end -- 是否开启任意一个副本 -function DungeonData:isOpenAnyone() - for key, value in pairs(self.dataDungeons) do - if self:isOpen(key) then - return true - end - end - return false +function DungeonData:isOpenAnyone(showToast) + local moduleKey = nil + for i, key in pairs(self:getDungeonList(false)) do + if self:isOpen(key) then + return true + end + if moduleKey == nil then + moduleKey = key + end + end + if showToast then + if moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + moduleKey = DataManager.DungeonDailyData:getNotShowModuleKey() + end + if moduleKey then + GFunc.showToast(ModuleManager:getNotOpenStr(moduleKey)) + end + end + return false +end + +function DungeonData:getNotOpenStr(moduleKey) + if moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + moduleKey = DataManager.DungeonDailyData:getNotShowModuleKey() + end + return ModuleManager:getNotOpenStr(moduleKey) end -- 某副本是否已开启 -function DungeonData:isOpen(moduleKey) - if not ModuleManager:getIsOpen(moduleKey, true) then - return false - end - return true +function DungeonData:isOpen(moduleKey, showToast) + if moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY and DataManager.DungeonDailyData:isOpen(showToast) then + return true + end + return false end --- 返回已开启的副本 -function DungeonData:getOpenDungeons() - if self.dungeonStage == nil then - self.dungeonStage = {} - for module, entity in pairs(self.dataDungeons) do - local openStage = ConfigManager:getConfig("func_open")[module].stage - self.dungeonStage[module] = openStage - end - table.sort(self.dungeonStage, function(a, b) - return a < b - end) - end - - local openDungeons = {} - -- 开启且活跃 - table.foreach(self.dungeonStage, function(module, s) - if self:isOpen(module) and self:isActive(module) then - local count = self:getRemainTimes(module) - if count > 0 then - count = 100 - else - count = 200 - end - table.insert(openDungeons, { - sort = SORT_ORDER[module] + 1000 + count, -- 系数 + 开启1000 + 剩余次数 - module = module - }) - end - end) - -- 开启且不活跃 - if not GFunc.isShenhe() then - table.foreach(self.dungeonStage, function(module, s) - if self:isOpen(module) and not self:isActive(module) then - table.insert(openDungeons, { - sort = SORT_ORDER[module] + 2000, -- 系数 + 未开启2000 - module = module - }) - end - end) - end - - table.sort(openDungeons, function(a, b) - return a.sort < b.sort - end) - - if EDITOR_MODE then - Logger.logHighlight("已开启副本:") - Logger.printTable(openDungeons) - end - return openDungeons +function DungeonData:isRankOpen(rankId) + -- if rankId == GConst.DungeonConst.RANK_TYPE.TOWER then + -- return self:isOpen(ModuleManager.MODULE_KEY.TOWER) + -- elseif rankId == GConst.DungeonConst.RANK_TYPE.WORLD_BOSS then + -- return self:isOpen(ModuleManager.MODULE_KEY.WORLD_BOSS) + -- elseif rankId == GConst.DungeonConst.RANK_TYPE.PRISON_PHYSICS or + -- rankId == GConst.DungeonConst.RANK_TYPE.PRISON_WIND or + -- rankId == GConst.DungeonConst.RANK_TYPE.PRISON_LIGHT or + -- rankId == GConst.DungeonConst.RANK_TYPE.PRISON_FIRE or + -- rankId == GConst.DungeonConst.RANK_TYPE.PRISON_ELECTRIC or + -- rankId == GConst.DungeonConst.RANK_TYPE.PRISON_ICE then + -- return self:isOpen(ModuleManager.MODULE_KEY.PRISON) + -- end + return false end --- 是否在活动副本时间内 -function DungeonData:isActive(moduleKey) - if not self:isOpen(moduleKey) then - return false - end - - -- 判断周期 - if self:isActiveCycle(moduleKey, Time:getWeekByTimeStamp()) then - return true - else - return false - end +function DungeonData:getModuleByRankId(id) + for moduleKey, moduleRankId in pairs(GConst.DungeonConst.IDS) do + if moduleRankId == id then + return moduleKey + end + end + return nil end --- 判断是否在活跃周期内 -function DungeonData:isActiveCycle(moduleKey, checkWeek) - if not self.dataDungeons[moduleKey] then - return false - end - - if self:getIsAllTimeOpen(moduleKey) then - return true - end - - local closeTime = self.dataDungeons[moduleKey]:getCloseTime() - if closeTime and closeTime > 0 then - return true - end - - for index, week in ipairs(self.dataDungeons[moduleKey]:getOpenWeekCycle()) do - if week == checkWeek then - return true - end - end - return false +-- 是否有红点 +function DungeonData:hasRedPoint(moduleKey) + if moduleKey == nil then + for moduleKey, id in pairs(GConst.DungeonConst.IDS) do + if self:hasRedPoint(moduleKey) then + return true + end + end + elseif moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + return DataManager.DungeonDailyData:getIsShowRedPoint() + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELITE_CHALLENGE then + -- return DataManager.EliteChallengeData:showRedPoint() + else + if not self:isOpen(moduleKey) then + return false + end + -- 有次数 + if self:getHasTime(moduleKey) > 0 then + return true + end + -- 有奖励 + if self:canGetReward(moduleKey) then + return true + end + if self:hasAdRp(moduleKey) then + return true + end + end + return false end --- 是否任意一个副本可以挑战 -function DungeonData:isCanChallengeAnyone() - for key, value in pairs(self.dataDungeons) do - if self:isCanChallenge(key) then - return true - end - end - return false +function DungeonData:getConfig(id) + if id then + return ConfigManager:getConfig("dungeon")[id] + else + return ConfigManager:getConfig("dungeon") + end end --- 副本是否可以挑战 -function DungeonData:isCanChallenge(moduleKey) - if not self:isActive(moduleKey) then - return false - end - if not (self:getRemainTimes(moduleKey) > 0) then - return false - end - if not self:isEnoughHp(moduleKey) then - return false - end - return true +-- 获取展示奖励 +function DungeonData:getShowRewards(moduleKey) + if moduleKey == GConst.DungeonConst.MODULE_KEY_DUNGEON_DAILY then + return GFunc.getConstCost("dungeon_show_reward", true) + -- elseif moduleKey == ModuleManager.MODULE_KEY.TOWER then + -- return GFunc.getConstCost("tower_show_reward", true) + -- elseif moduleKey == ModuleManager.MODULE_KEY.WORLD_BOSS then + -- return GFunc.getConstCost("worldboss_show_reward", true) + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELITE_CHALLENGE then + -- return GFunc.getConstCost("elite_challenge_reward", true) + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELEMENT_DUNGEON then + -- return GFunc.getConstCost("element_dungeon_show_reward", true) + else + return GFunc.getConstCost("dungeon_show_reward", true) + end end --- 副本是否可以扫荡 -function DungeonData:isCanSweep(moduleKey, id) - if not self:isActive(moduleKey) then - return false - end - if not (self:getRemainTimes(moduleKey) > 0) then - return false - end - if not self:isEnoughHp(moduleKey) then - return false - end - if not self:getPassedMaxId(moduleKey) >= id then - return false - end - return true +-- 返回副本列表,sort +function DungeonData:getDungeonList(checkOpen) + local sortDungeons = {} + for moduleKey, id in pairs(GConst.DungeonConst.IDS) do + if not checkOpen then -- or self:isOpen(moduleKey) + local temp = {module = moduleKey, sort = id} + table.insert(sortDungeons, temp) + end + end + table.sort(sortDungeons, function(a, b) + local isOpenA = self:isOpen(a.module) + local isOpenB = self:isOpen(b.module) + if isOpenA and isOpenB then + return a.sort < b.sort + elseif isOpenA ~= isOpenB then + if isOpenA then + return true + else + return false + end + else + return a.sort < b.sort + end + end) + if EDITOR_MODE then + Logger.logHighlight("开启副本:") + Logger.printTable(sortDungeons) + end + + local moduleNames = {} + for i, info in ipairs(sortDungeons) do + table.insert(moduleNames, info.module) + end + + return moduleNames end --- 获取副本挑战总次数 -function DungeonData:getTotalCount(moduleKey) - return self.dataDungeons[moduleKey]:getTotalChallengeCount() +-- 当前副本次数 +function DungeonData:getHasTime(moduleKey) + -- if moduleKey == ModuleManager.MODULE_KEY.TOWER then + -- return DataManager.TowerData:getRemainChallengeCount() + -- elseif moduleKey == ModuleManager.MODULE_KEY.WORLD_BOSS then + -- return DataManager.WorldBossData:getRemainChallengeCount() + -- elseif moduleKey == ModuleManager.MODULE_KEY.DOOR then + -- return DataManager.DoorData:getRemainChallengeCount() + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELEMENT_DUNGEON then + -- return DataManager.ElementData:getTodayRemainTimes() + -- end + return 0 end --- 获取副本今日剩余次数 -function DungeonData:getRemainTimes(moduleKey) - if not self:isActive(moduleKey) then - return 0 - end - if not self.dataDungeons[moduleKey] then - return 0 - end - - return self.dataDungeons[moduleKey]:getTodayRemainLimitCount() +-- 每日免费次数 +function DungeonData:getFreeTime(moduleKey) + -- if moduleKey == ModuleManager.MODULE_KEY.TOWER then + -- return DataManager.TowerData:getDailyFreeTime() + -- elseif moduleKey == ModuleManager.MODULE_KEY.WORLD_BOSS then + -- return DataManager.WorldBossData:getDailyFreeTime() + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELEMENT_DUNGEON then + -- return DataManager.ElementData:getTodayMaxTimes() + -- end + return 0 end --- 体力是否足够 -function DungeonData:isEnoughHp(moduleKey) - local const = self:getChallengeHpCost(moduleKey) - local constNum = 0 - if const then - constNum = GFunc.getRewardNum(const) - end - return constNum <= DataManager.BagData.ItemData:getVit() +function DungeonData:canGetReward(moduleKey) + -- if moduleKey == ModuleManager.MODULE_KEY.TOWER then + -- return DataManager.TowerData:hasAvailableReward() + -- elseif moduleKey == ModuleManager.MODULE_KEY.WORLD_BOSS then + -- return DataManager.WorldBossData:hasRankRewardRp() + -- elseif moduleKey == ModuleManager.MODULE_KEY.PRISON then + -- return DataManager.PrisonData:hasRedPoint() + -- elseif moduleKey == ModuleManager.MODULE_KEY.ELEMENT_DUNGEON then + -- return DataManager.ElementData:hasRankRewardRp() + -- end + return false end --- 获取挑战体力消耗 -function DungeonData:getChallengeHpCost(moduleKey) - if not self:isActive(moduleKey) then - return 0 - end - if not self.dataDungeons[moduleKey] then - return 0 - end - - return self.dataDungeons[moduleKey]:getChallengeHpCost() -end - --- 获取副本下个状态改变时间 -function DungeonData:geNextTime(moduleKey) - if self:isActive(moduleKey) then - return self:getCloseTime(moduleKey) - else - return self:getOpenTime(moduleKey) - end -end - --- 获取副本开启倒计时 -function DungeonData:getOpenTime(moduleKey) - if not self.dataDungeons[moduleKey] then - return 0 - end - - local isClose = true - local count = 0 - while isClose do - local checkWeek = Time:getWeekByTimeStamp(Time:getServerTime() + ((count + 1) * 86400)) - if self:isActiveCycle(moduleKey, checkWeek) then - isClose = false - else - count = count + 1 - end - end - - return Time:getTodaySurplusTime() + (count * 86400) -end - --- 获取副本关闭倒计时 -function DungeonData:getCloseTime(moduleKey) - if not self.dataDungeons[moduleKey] then - return 0 - end - - if self:getIsAllTimeOpen(moduleKey) then - return 1 - end - - if self.dataDungeons[moduleKey]:getCloseTime() then - return self.dataDungeons[moduleKey]:getCloseTime() - end - - local isActive = true - local count = 0 - while isActive do - local checkWeek = Time:getWeekByTimeStamp(Time:getServerTime() + ((count + 1) * 86400)) - if not self:isActiveCycle(moduleKey, checkWeek) then - isActive = false - else - count = count + 1 - end - end - - return Time:getTodaySurplusTime() + (count * 86400) -end - --- 获取看板展示的副本奖励(返回item id list) -function DungeonData:getBoardShowRewardId(moduleKey) - return self.dataDungeons[moduleKey]:getBoardShowRewardId() -end - --- 获取展示副本首通奖励个数 -function DungeonData:getFirstRewardNum(moduleKey, id) - -- 通关后,不展示首通奖励 - return self.dataDungeons[moduleKey]:getFirstRewardNum(id) -end - --- 获取展示副本通关奖励个数 -function DungeonData:getPassRewardNum(moduleKey, id) - return self.dataDungeons[moduleKey]:getPassRewardNum(id) -end - ---获取副本已解锁最大id -function DungeonData:getUnlockMaxId(moduleKey) - local id = self.dataDungeons[moduleKey]:getPassedMaxId() + 1 - if id > self:getConfigMaxId(moduleKey) then - id = id - 1 - end - return id -end - --- 获取副本配置的最高关卡 -function DungeonData:getConfigMaxId(moduleKey) - return #self.dataDungeons[moduleKey]:getConfig() -end - ---获取副本已通关的最高关卡id -function DungeonData:getPassedMaxId(moduleKey) - return self.dataDungeons[moduleKey]:getPassedMaxId() -end - --- 获取副本标题文案 -function DungeonData:getTitle(moduleKey) - return self.dataDungeons[moduleKey]:getTitleString() -end - --- 获取副本规则描述 -function DungeonData:getRule(moduleKey) - return self.dataDungeons[moduleKey]:getRuleString() -end - --- 获取副本当前关卡buff -function DungeonData:getBossBuff(moduleKey, id) - return self.dataDungeons[moduleKey]:getBossBuff(id) -end - --- 获取副本开启时间描述 -function DungeonData:getOpenTimeDesc(moduleKey) - return self.dataDungeons[moduleKey]:getOpenWeekString() -end - --- 获取副本角标图 -function DungeonData:getIcon(moduleKey) - return self.dataDungeons[moduleKey]:getIcon() -end - --- 获取副本banner图 -function DungeonData:getBanner(moduleKey) - return self.dataDungeons[moduleKey]:getBanner() -end - --- 获取开启时间文本颜色 -function DungeonData:getOpenTextColor(moduleKey) - return self.dataDungeons[moduleKey]:getOpenTextColor() -end - -function DungeonData:setCurFightChapterId(chapterId) - self.curFightchapterId = chapterId or 1 -end - -function DungeonData:getCurFightChapterId() - return self.curFightchapterId or 1 -end - -function DungeonData:getIsAllTimeOpen(moduleKey) - return self.dataDungeons[moduleKey]:getIsAllTimeOpen() -end - -function DungeonData:isNoTotalLimit(moduleKey) - return self.dataDungeons[moduleKey]:isNoTotalLimit() -end - -function DungeonData:isNotShowLimitCount(moduleKey) - return self.dataDungeons[moduleKey]:isNotShowLimitCount() -end - -function DungeonData:onClickFight(moduleKey) - self.dataDungeons[moduleKey]:onClickFight() -end - -function DungeonData:getDungeonDataByType(moduleKey) - return self.dataDungeons[moduleKey] +-- 有广告红点 +function DungeonData:hasAdRp(moduleKey) + return false end function DungeonData:getDungeonBIStr() local str - if not self.dataDungeons then - return GConst.EMPTY_STRING - end - for moduleKey, entity in pairs(self.dataDungeons) do - if str then - str = str .. "|" - else - str = GConst.EMPTY_STRING - end - Logger.logHighlight(moduleKey) - str = str .. string.gsub(moduleKey, "_open", "") .. ":" .. entity:getPassedMaxId() - end + -- if not self.dataDungeons then + -- return GConst.EMPTY_STRING + -- end + -- for moduleKey, entity in pairs(self.dataDungeons) do + -- if str then + -- str = str .. "|" + -- else + -- str = GConst.EMPTY_STRING + -- end + -- Logger.logHighlight(moduleKey) + -- str = str .. string.gsub(moduleKey, "_open", "") .. ":" .. entity:getPassedMaxId() + -- end return str end diff --git a/lua/app/userdata/dungeon/dungeon_gold_data.lua b/lua/app/userdata/dungeon/dungeon_gold_data.lua new file mode 100644 index 00000000..5d03e546 --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_gold_data.lua @@ -0,0 +1,168 @@ +local DungeonGoldData = class("DungeonGoldData", BaseData) + +local FIRST_CHAPTER_ID = 1001 + +function DungeonGoldData:ctor() + self.data.isDirty = false + self.data.maxPassed = 0 + self.data.times = 0 + self.data.challengeId = 0 +end + +function DungeonGoldData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function DungeonGoldData:init(data) + data = data or GConst.EMPTY_TABLE + self.data.maxPassed = data.max_passed or 0 -- 最大通关的副本id + self.data.itemTimes = data.item_times or 0 -- 今日道具挑战次数 + if self.data.maxPassed <= 0 then -- 一关都没打过 + self.data.challengeId = FIRST_CHAPTER_ID + else + local info = self:getConfig()[self.data.maxPassed] + if info then + local nextId = info.next_chapter + if nextId then + self.data.challengeId = nextId + else + self.data.challengeId = self.data.maxPassed + end + else + self.data.maxPassed = 0 + self.data.challengeId = FIRST_CHAPTER_ID + end + end + self.data.times = data.times or 0 -- 今日剩余挑战次数 +end + +function DungeonGoldData:isOpen(showToast) + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.DUNGEON_GOLD, not showToast) then + return false + end + return true +end + +function DungeonGoldData:getModuleKey() + return ModuleManager.MODULE_KEY.DUNGEON_GOLD +end + +function DungeonGoldData:getConfig() + if self._chapterCungeonCfg == nil then + self._chapterCungeonCfg = ConfigManager:getConfig("chapter_dungeon") + end + return self._chapterCungeonCfg +end + +function DungeonGoldData:getAllChaptersInfo() + if self._allChaptersInfo == nil then + self._allChaptersInfo = {} + local cfg = ConfigManager:getConfig("chapter_dungeon") + for k, v in pairs(cfg) do + if v.type == 1 then + table.insert(self._allChaptersInfo, { + id = k, + cfg = v + }) + end + end + table.sort(self._allChaptersInfo, function (a, b) + return a.id < b.id + end) + end + return self._allChaptersInfo +end + +--只显示已通关 + 目前通关往后的十个 +function DungeonGoldData:getLimitChaptersInfo() + local list = self:getAllChaptersInfo() + local limitList = {} + for i,v in ipairs(list) do + if self.data.maxPassed + 10 >= v.id or i <= 10 then + table.insert(limitList, v) + end + end + return limitList +end + +function DungeonGoldData:getChapterInfo(index) + return self:getAllChaptersInfo()[index] +end + +function DungeonGoldData:getMaxPassedId() + return self.data.maxPassed +end + +function DungeonGoldData:getChallengeId() + return self.data.challengeId +end + +function DungeonGoldData:getTodayMaxTimes() + if self._dungeonGoldTimes == nil then + self._dungeonGoldTimes = GFunc.getConstIntValue("dungeon_gold_times") + end + if DataManager.PrivilegeCardData:getIsChallegeCardActive() then + return self._dungeonGoldTimes + self:getPrivilegeCardAddTimes() + else + return self._dungeonGoldTimes + end +end + +function DungeonGoldData:getPrivilegeCardAddTimes() + if self._privilegeCardAddTimes == nil then + self._privilegeCardAddTimes = GFunc.getConstIntValue("card_fight_gold") + end + return self._privilegeCardAddTimes +end + +function DungeonGoldData:getTodayRemainTimes() + local maxTimes = self:getTodayMaxTimes() + local times = maxTimes - self.data.times + if times < 0 then + times = 0 + end + return times +end + +function DungeonGoldData:getChapterName(chapterId) + return I18N:getConfig("chapter_dungeon")[chapterId].name +end + +function DungeonGoldData:onFightDungeonDailyFinish(chapterId, victory) + if not victory then + return + end + if self.data.maxPassed < chapterId then + local info = self:getConfig()[chapterId] + if info then + self.data.maxPassed = chapterId + local nextId = info.next_chapter + if nextId then + self.data.challengeId = nextId + else + self.data.challengeId = self.data.maxPassed + end + end + end + self.data.times = self.data.times + 1 + self:setDirty() +end + +function DungeonGoldData:onSweepDungeonDailyFinish() + self.data.times = self.data.times + 1 + self:setDirty() +end + +function DungeonGoldData:getIsShowRedPoint() + if not self:isOpen() then + return false + end + return self:getTodayRemainTimes() > 0 +end + +function DungeonGoldData:onCrossDay() + self.data.times = 0 + self:setDirty() +end + +return DungeonGoldData \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_gold_data.lua.meta b/lua/app/userdata/dungeon/dungeon_gold_data.lua.meta new file mode 100644 index 00000000..6d34385a --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_gold_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 744f2c7dc8ba749268195a0ea91428a1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_gold_entity.lua b/lua/app/userdata/dungeon/dungeon_gold_entity.lua deleted file mode 100644 index 861db60a..00000000 --- a/lua/app/userdata/dungeon/dungeon_gold_entity.lua +++ /dev/null @@ -1,93 +0,0 @@ -local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity" -local DungeonGoldEntity = class("DungeonGoldEntity", DungeonBaseEntity) - --- 金币副本数据 - -function DungeonGoldEntity:init(data) - if self.maxPassedId then - ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_DUNGEON_GOLD, data.max_chapter_gold_id - self.maxPassedId) - end - self.totalChallengeCount = data.total_challenge_count - self.todayChallengeCount = data.today_challenge_count - self.maxPassedId = data.max_chapter_gold_id -end - -function DungeonGoldEntity:getTotalChallengeCount() - return self.totalChallengeCount -end - -function DungeonGoldEntity:getTodayChallengeCount() - return self.todayChallengeCount -end - -function DungeonGoldEntity:getPassedMaxId() - return self.maxPassedId -end - -function DungeonGoldEntity:getModuleKey() - return ModuleManager.MODULE_KEY.DUNGEON_GOLD -end - -function DungeonGoldEntity:getOpenWeekCycle() - if self.openWeek == nil then - self.openWeek = {2,4,6,7} - end - return self.openWeek -end - -function DungeonGoldEntity:getConfigName() - return "chapter_dungeon_gold" -end - -function DungeonGoldEntity:getTitleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_GOLD_TITLE) -end - -function DungeonGoldEntity:getRuleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_GOLD_HELP) -end - -function DungeonGoldEntity:getOpenWeekString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_GOLD_OPEN) -end - -function DungeonGoldEntity:getBossBuff(id) - return self:getConfig()[id].effect[1] -end - -function DungeonGoldEntity:getIcon() - if self.dungeonIcon == nil then - self.dungeonIcon = {GConst.ATLAS_PATH.DUNGEON,"dungeon_dec_1"} - end - return self.dungeonIcon -end - -function DungeonGoldEntity:getBanner() - return "assets/arts/textures/background/dungeon/dungeon_bg_1.png" -end - -function DungeonGoldEntity:getOpenTextColor() - return "#FFEDC5" -end - -function DungeonGoldEntity:getChallengeHpCost() - return GFunc.getConstReward("dungeon_gold_cost") -end - -function DungeonGoldEntity:getTodayMaxCount() - return GFunc.getConstIntValue("dungeon_gold_limit") -end - -function DungeonGoldEntity:getBoardShowRewardId() - return 1 -end - -function DungeonGoldEntity:getFirstRewardNum(id) - return GFunc.getRewardNum(ConfigManager:getConfig("chapter_dungeon_gold")[id].first_pass_reward) -end - -function DungeonGoldEntity:getPassRewardNum(id) - return GFunc.getRewardNum(ConfigManager:getConfig("chapter_dungeon_gold")[id].percent_reward) -end - -return DungeonGoldEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_gold_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_gold_entity.lua.meta deleted file mode 100644 index e259d755..00000000 --- a/lua/app/userdata/dungeon/dungeon_gold_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 792ac3a45b52c5d4c895737413faf6db -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_material_data.lua b/lua/app/userdata/dungeon/dungeon_material_data.lua new file mode 100644 index 00000000..69d12737 --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_material_data.lua @@ -0,0 +1,168 @@ +local DungeonMaterialData = class("DungeonMaterialData", BaseData) + +local FIRST_CHAPTER_ID = 2001 + +function DungeonMaterialData:ctor() + self.data.isDirty = false + self.data.maxPassed = 0 + self.data.times = 0 + self.data.challengeId = 0 +end + +function DungeonMaterialData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function DungeonMaterialData:init(data) + data = data or GConst.EMPTY_TABLE + self.data.maxPassed = data.max_passed or 0 -- 最大通关的副本id + self.data.itemTimes = data.item_times or 0 -- 今日道具挑战次数 + if self.data.maxPassed <= 0 then -- 一关都没打过 + self.data.challengeId = FIRST_CHAPTER_ID + else + local info = self:getConfig()[self.data.maxPassed] + if info then + local nextId = info.next_chapter + if nextId then + self.data.challengeId = nextId + else + self.data.challengeId = self.data.maxPassed + end + else + self.data.maxPassed = 0 + self.data.challengeId = FIRST_CHAPTER_ID + end + end + self.data.times = data.times or 0 -- 今日剩余挑战次数 +end + +function DungeonMaterialData:isOpen(showToast) + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.DUNGEON_RES, not showToast) then + return false + end + return true +end + +function DungeonMaterialData:getModuleKey() + return ModuleManager.MODULE_KEY.DUNGEON_RES +end + +function DungeonMaterialData:getConfig() + if self._chapterCungeonCfg == nil then + self._chapterCungeonCfg = ConfigManager:getConfig("chapter_dungeon") + end + return self._chapterCungeonCfg +end + +function DungeonMaterialData:getAllChaptersInfo() + if self._allChaptersInfo == nil then + self._allChaptersInfo = {} + local cfg = ConfigManager:getConfig("chapter_dungeon") + for k, v in pairs(cfg) do + if v.type == 2 then + table.insert(self._allChaptersInfo, { + id = k, + cfg = v + }) + end + end + table.sort(self._allChaptersInfo, function (a, b) + return a.id < b.id + end) + end + return self._allChaptersInfo +end + +--只显示已通关 + 目前通关往后的十个 +function DungeonMaterialData:getLimitChaptersInfo() + local list = self:getAllChaptersInfo() + local limitList = {} + for i,v in ipairs(list) do + if self.data.maxPassed + 10 >= v.id or i <= 10 then + table.insert(limitList, v) + end + end + return limitList +end + +function DungeonMaterialData:getChapterInfo(index) + return self:getAllChaptersInfo()[index] +end + +function DungeonMaterialData:getMaxPassedId() + return self.data.maxPassed +end + +function DungeonMaterialData:getChallengeId() + return self.data.challengeId +end + +function DungeonMaterialData:getTodayMaxTimes() + if self._dungeonMaterialTimes == nil then + self._dungeonMaterialTimes = GFunc.getConstIntValue("dungeon_res_times") + end + if DataManager.PrivilegeCardData:getIsChallegeCardActive() then + return self._dungeonMaterialTimes + self:getPrivilegeCardAddTimes() + else + return self._dungeonMaterialTimes + end +end + +function DungeonMaterialData:getPrivilegeCardAddTimes() + if self._privilegeCardAddTimes == nil then + self._privilegeCardAddTimes = GFunc.getConstIntValue("card_fight_res") + end + return self._privilegeCardAddTimes +end + +function DungeonMaterialData:getTodayRemainTimes() + local maxTimes = self:getTodayMaxTimes() + local times = maxTimes - self.data.times + if times < 0 then + times = 0 + end + return times +end + +function DungeonMaterialData:getChapterName(chapterId) + return I18N:getConfig("chapter_dungeon")[chapterId].name +end + +function DungeonMaterialData:onFightDungeonDailyFinish(chapterId, victory) + if not victory then + return + end + if self.data.maxPassed < chapterId then + local info = self:getConfig()[chapterId] + if info then + self.data.maxPassed = chapterId + local nextId = info.next_chapter + if nextId then + self.data.challengeId = nextId + else + self.data.challengeId = self.data.maxPassed + end + end + end + self.data.times = self.data.times + 1 + self:setDirty() +end + +function DungeonMaterialData:onSweepDungeonDailyFinish() + self.data.times = self.data.times + 1 + self:setDirty() +end + +function DungeonMaterialData:getIsShowRedPoint() + if not self:isOpen() then + return false + end + return self:getTodayRemainTimes() > 0 +end + +function DungeonMaterialData:onCrossDay() + self.data.times = 0 + self:setDirty() +end + +return DungeonMaterialData \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_material_data.lua.meta b/lua/app/userdata/dungeon/dungeon_material_data.lua.meta new file mode 100644 index 00000000..f5b00cf1 --- /dev/null +++ b/lua/app/userdata/dungeon/dungeon_material_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1b43f2b5248224a3282f6d61f142a3aa +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_rune_entity.lua b/lua/app/userdata/dungeon/dungeon_rune_entity.lua deleted file mode 100644 index d513e56f..00000000 --- a/lua/app/userdata/dungeon/dungeon_rune_entity.lua +++ /dev/null @@ -1,308 +0,0 @@ -local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity" -local DungeonRuneEntity = class("DungeonRuneEntity", DungeonBaseEntity) - -local TASK_TYPE = GConst.DungeonRuneConst.TASK_TYPE - -function DungeonRuneEntity:ctor() - self.data.isDirty = false - self.maxPassedId = 0 - self.runeInfo = {} -end - -function DungeonRuneEntity:clear() - self.data.isDirty = false - DataManager:unregisterCrossDayFunc("DungeonRuneEntity") -end - -function DungeonRuneEntity:init(data) - if EDITOR_MODE then - Logger.logHighlight("-----DungeonRuneEntity------") - Logger.printTable(data) - end - - self.totalChallengeCount = data.total_challenge_count or 0 - self.fightCountMap = data.stat_counts or {} - self.maxPassedId = data.max_challenge_id and (data.max_challenge_id - 1) or 0 - self.runeInfo = data.turns or {} - self.heroes = data.heroes or {} - self.buySilverCount = data.buy_silver_count or 0 - - DataManager.FormationData:initFormationByType(GConst.BattleConst.FORMATION_TYPE.DUNGEON_RUNE, self.heroes) - DataManager:registerCrossDayFunc("DungeonRuneEntity", function() - self.buySilverCount = 0 - self:setDirty() - end) -end - -function DungeonRuneEntity:setDirty() - self.data.isDirty = not self.data.isDirty -end - -function DungeonRuneEntity:getModuleKey() - return ModuleManager.MODULE_KEY.RUNES_OPEN -end - -function DungeonRuneEntity:getConfig(chapterId) - return ConfigManager:getConfig(self:getConfigName())[chapterId] -end - -function DungeonRuneEntity:getConfigName() - return "chapter_dungeon_rune" -end - -function DungeonRuneEntity:getTitleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_TITLE) -end - -function DungeonRuneEntity:getRuleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_HELP) -end - -function DungeonRuneEntity:getOpenWeekString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_DESC) -end - -function DungeonRuneEntity:getBanner() - return "assets/arts/textures/background/dungeon/dungeon_bg_5.png" -end - -function DungeonRuneEntity:getOpenTextColor() - return "#FFFFFF" -end - -function DungeonRuneEntity:isNoTotalLimit() - return true -end - -function DungeonRuneEntity:isNotShowLimitCount() - return true -end - -function DungeonRuneEntity:getIsAllTimeOpen() - return true -end - -function DungeonRuneEntity:onClickFight() - ModuleManager.DungeonRuneManager:showMainUI() -end - -function DungeonRuneEntity:getTodayRemainLimitCount() - return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_GLOD_WING) -end - -function DungeonRuneEntity:getRebirthAddRoundCount() - if not self.rebirthAddRoundCount then - self.rebirthAddRoundCount = GFunc.getConstIntValue("dungeon_rune_revival") - end - return self.rebirthAddRoundCount -end - -function DungeonRuneEntity:getBattleMaxlv() - if not self.battleMaxLv then - self.battleMaxLv = GFunc.getConstIntValue("dungeon_rune_lvlimit") - end - return self.battleMaxLv -end - -function DungeonRuneEntity:getBuySliverWingCost() - if not self.buySliverWingCost then - self.buySliverWingCost = GFunc.getConstReward("dungeon_rune_cost") - end - return self.buySliverWingCost -end - -function DungeonRuneEntity:getPassedMaxId() - return self.maxPassedId -end - -function DungeonRuneEntity:updatePassedMaxId(maxId) - if not maxId then - return - end - self.maxPassedId = math.max(maxId - 1, 1) -end - -function DungeonRuneEntity:canSweep(id) - if id > self.maxPassedId then - return false - end - if not self:isBossChapter(id) then - return false - end - return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_SLIVER_WING) > 0 -end - -function DungeonRuneEntity:canFight(id) - if self.maxPassedId + 1 >= id then - return true - end - return false -end - -function DungeonRuneEntity:passedChapter(id) - return self.maxPassedId >= id -end - -function DungeonRuneEntity:curFight(id) - return id == self.maxPassedId + 1 -end - -function DungeonRuneEntity:getChapterPassRound(id) - if not self.runeInfo[id] then - return 0 - end - return self.runeInfo[id] or 0 -end - -function DungeonRuneEntity:updatePassRound(id, round) - local cur = self.runeInfo[id] - if not cur or cur > round then - self.runeInfo[id] = round - self:tagRoundNew() - end -end - -function DungeonRuneEntity:tagRoundNew() - self.tagNew = true -end - -function DungeonRuneEntity:getTagRoundNew() - return self.tagNew -end - -function DungeonRuneEntity:getChapterRewards(id) - return self:getConfig(id).first_reward -end - -function DungeonRuneEntity:getChapterSweepRewards(id) - return self:getConfig(id).sweep_reward -end - -function DungeonRuneEntity:isBossChapter(id) - local cfg = self:getConfig(id) - return not cfg.monster[2] -- 只有一个怪物的就是boss关卡 -end - -function DungeonRuneEntity:getChapterCondition(id) - local cfg = self:getConfig(id) - if not self.cacheChaperCondition then - self.cacheChaperCondition = {} - end - - if not self.cacheChaperCondition[id] then - self.cacheChaperCondition[id] = {} - table.insert(self.cacheChaperCondition[id], {0, cfg.round, 0}) - if cfg.requirement then - for _, condition in ipairs(cfg.requirement) do - table.insert(self.cacheChaperCondition[id], GFunc.getTable(condition)) - end - end - end - - return self.cacheChaperCondition[id] -end - -function DungeonRuneEntity:getConditionIcon(taskInfo) - local iconSprite - local iconConst = GConst.DungeonRuneConst.TASK_ICON[taskInfo[1]] - if type(iconConst) == "table" then - iconSprite = iconConst[taskInfo[2]] - else - iconSprite = iconConst - end - - return GConst.ATLAS_PATH.UI_DUNGEON_RUNE, iconSprite -end - -function DungeonRuneEntity:getConditionDesc(taskInfo, taskNum) - local taskType = taskInfo[1] - local taskParams1 = taskInfo[2] - local taskParams2 = taskInfo[3] - if taskType == TASK_TYPE.PASS_ROUND then - if taskNum and taskNum > 0 then - taskParams1 = taskNum - end - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_QUEST_1, taskParams1) - elseif taskType == TASK_TYPE.ELIMINATION_ELEMENT then - if taskNum and taskNum > 0 then - local num = taskParams2 - taskNum - if num > 0 then - taskParams2 = num - end - end - local desc = ModuleManager.HeroManager:getMatchTypeName(taskParams1, true) - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_QUEST_2, taskParams2, desc) - elseif taskType == TASK_TYPE.BREAK_GRID_TYPE then - if taskNum and taskNum > 0 then - local num = taskParams2 - taskNum - if num > 0 then - taskParams2 = num - end - end - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_QUEST_3, taskParams2) - elseif taskType == TASK_TYPE.KILL_MONSTER then - if taskNum and taskNum > 0 then - local num = taskParams2 - taskNum - if num > 0 then - taskParams2 = num - end - end - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_RUNE_QUEST_4, taskParams2) - end -end - -function DungeonRuneEntity:getChapterMonsterSpine(id) - local cfg = self:getConfig(id) - local monsterId = cfg.monster[1] - local info = ConfigManager:getConfig("monster")[monsterId] - return info.model_id, info.model_ui -end - -function DungeonRuneEntity:getChapterMonsterI18N(id) - local cfg = self:getConfig(id) - local monsterId = cfg.monster[1] - local info = ConfigManager:getConfig("monster")[monsterId] - local monsterBase = info.monster_base - return I18N:getConfig("monster_base")[monsterBase] -end - -function DungeonRuneEntity:getCurFightChapterId() - return self.curFightChapterId or 1 -end - -function DungeonRuneEntity:setCurFightChapterId(chapterId) - self.curFightChapterId = chapterId -end - -function DungeonRuneEntity:getChapterFightCount(id) - return self.fightCountMap[id] or 0 -end - -function DungeonRuneEntity:getSliverWingBuyCount() - return self.buySilverCount or 0 -end - -function DungeonRuneEntity:addSliverWingBuyCount(count) - self.buySilverCount = self.buySilverCount + count -end - -function DungeonRuneEntity:getRemainSliverWingCount() - if not self.todayLimitSliverCount then - self.todayLimitSliverCount = GFunc.getConstIntValue("dungeon_rune_buylimit") - end - local count = self.todayLimitSliverCount - self:getSliverWingBuyCount() - if count <= 0 then - count = 0 - end - return count -end - -function DungeonRuneEntity:getBuySliverCost() - if not self.todayBuySliverCost then - self.todayBuySliverCost = GFunc.getConstReward("dungeon_rune_cost") - end - - return self.todayBuySliverCost -end - -return DungeonRuneEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_rune_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_rune_entity.lua.meta deleted file mode 100644 index 4c1bbac3..00000000 --- a/lua/app/userdata/dungeon/dungeon_rune_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: b4d7cf896fcc1cd4dbe9ac46426cc9f8 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_shards_entity.lua b/lua/app/userdata/dungeon/dungeon_shards_entity.lua deleted file mode 100644 index 0e7eae8f..00000000 --- a/lua/app/userdata/dungeon/dungeon_shards_entity.lua +++ /dev/null @@ -1,97 +0,0 @@ -local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity" -local DungeonShardsEntity = class("DungeonShardsEntity", DungeonBaseEntity) - --- 碎片副本数据 - -function DungeonShardsEntity:init(data) - if self.maxPassedId then - ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_DUNGEON_SHARDS, data.max_chapter_shards_id - self.maxPassedId) - end - self.totalChallengeCount = data.total_challenge_count - self.todayChallengeCount = data.today_challenge_count - self.maxPassedId = data.max_chapter_shards_id -end - -function DungeonShardsEntity:getTotalChallengeCount() - return self.totalChallengeCount -end - -function DungeonShardsEntity:getTodayChallengeCount() - return self.todayChallengeCount -end - -function DungeonShardsEntity:getPassedMaxId() - return self.maxPassedId -end - -function DungeonShardsEntity:getModuleKey() - return ModuleManager.MODULE_KEY.DUNGEON_SHARDS -end - -function DungeonShardsEntity:getOpenWeekCycle() - if self.openWeek == nil then - self.openWeek = {1,3,5,7} - end - return self.openWeek -end - -function DungeonShardsEntity:getConfigName() - return "chapter_dungeon_shards" -end - -function DungeonShardsEntity:getTitleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_SHARDS_TITLE) -end - -function DungeonShardsEntity:getRuleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_SHARDS_HELP) -end - -function DungeonShardsEntity:getOpenWeekString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_SHARDS_OPEN) -end - -function DungeonShardsEntity:getBossBuff(id) - return self:getConfig()[id].effect[1] -end - -function DungeonShardsEntity:getIcon() - if self.dungeonIcon == nil then - self.dungeonIcon = {GConst.ATLAS_PATH.DUNGEON,"dungeon_dec_2"} - end - return self.dungeonIcon -end - -function DungeonShardsEntity:getBanner() - return "assets/arts/textures/background/dungeon/dungeon_bg_2.png" -end - -function DungeonShardsEntity:getOpenTextColor() - return "#E4F5FE" -end - -function DungeonShardsEntity:getChallengeHpCost() - return GFunc.getConstReward("dungeon_shards_cost") -end - -function DungeonShardsEntity:getTodayMaxCount() - return GFunc.getConstIntValue("dungeon_shards_limit") -end - -function DungeonShardsEntity:getBoardShowRewardId() - return 20 -end - -function DungeonShardsEntity:getFirstRewardNum(id) - local cfg = ConfigManager:getConfig("chapter_dungeon_shards")[id] - return cfg.times_a + cfg.times_b -end - -function DungeonShardsEntity:getPassRewardNum(id) - local cfg = ConfigManager:getConfig("chapter_dungeon_shards")[id] - local pass = cfg.times_d - local wave = cfg.times_c * #cfg.monster - return pass + wave -end - -return DungeonShardsEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_shards_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_shards_entity.lua.meta deleted file mode 100644 index f6e34ec0..00000000 --- a/lua/app/userdata/dungeon/dungeon_shards_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 915b7ed44e1bfb24fa12a24eeb2813d3 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/dungeon/dungeon_weapon_entity.lua b/lua/app/userdata/dungeon/dungeon_weapon_entity.lua deleted file mode 100644 index 9e77c742..00000000 --- a/lua/app/userdata/dungeon/dungeon_weapon_entity.lua +++ /dev/null @@ -1,217 +0,0 @@ -local DungeonBaseEntity = require "app/userdata/dungeon/dungeon_base_entity" -local DungeonWeaponEntity = class("DungeonWeaponEntity", DungeonBaseEntity) - -local GET_PASS_INFO_INTERVAL = 600 --- 支线副本数据 - -function DungeonWeaponEntity:clear() - DataManager:unregisterCrossDayFunc("DungeonWeaponEntity") -end - -function DungeonWeaponEntity:init(data) - self.maxPassedId = data.max_challenge_id or 0 - self.farmCount = data.farm_count or 0 - self.heroes = data.heroes or {} - self.totalChallengeCount = data.total_challenge_count or {} - self.data.isDirty = not self.data.isDirty - - self:updateGift(data.gift_info, true) - DataManager.FormationData:initDungeonWeapon(self.heroes) - - DataManager:registerCrossDayFunc("DungeonWeaponEntity", function() - self.farmCount = 0 - self:setDirty() - end) -end - -function DungeonWeaponEntity:refreshInfoOnSettlement(chapterId, result) - if result.max_id > self.maxPassedId then - ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_DUNGEON_WEAPON, result.max_id - self.maxPassedId) - end - self.totalChallengeCount[chapterId] = (self.totalChallengeCount[chapterId] or 0) + 1 - self.maxPassedId = result.max_id - self:updateGift(result.gift_info) - self:setDirty() -end - -function DungeonWeaponEntity:refreshInfoOnFarm(result) - self.farmCount = self.farmCount + 1 - self:updateGift(result.gift_info) - self:setDirty() -end - --- 更新礼包状态 -function DungeonWeaponEntity:updateGift(giftInfo, isInit) - DataManager.ShopData:initGift(PayManager.PURCHARSE_ACT_TYPE.WEAPON_GIFT, giftInfo, isInit) -end - -function DungeonWeaponEntity:setDirty() - self.data.isDirty = not self.data.isDirty -end - -function DungeonWeaponEntity:getTotalChallengeCount() - local count = 0 - for _, c in pairs(self.totalChallengeCount) do - count = count + 1 - end - return count -end - -function DungeonWeaponEntity:getTodayChallengeCount() - return 0 -end - -function DungeonWeaponEntity:getPassedMaxId() - return self.maxPassedId -end - -function DungeonWeaponEntity:getIsAllTimeOpen() - return true -end - -function DungeonWeaponEntity:getModuleKey() - return ModuleManager.MODULE_KEY.DUNGEON_WEAPON -end - -function DungeonWeaponEntity:getConfigName() - return "chapter_dungeon_equip" -end - -function DungeonWeaponEntity:getTitleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_1) -end - -function DungeonWeaponEntity:getRuleString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_2) -end - -function DungeonWeaponEntity:getOpenWeekString() - return I18N:getGlobalText(I18N.GlobalConst.DUNGEON_WEAPON_DESC_3) -end - -function DungeonWeaponEntity:getBanner() - return "assets/arts/textures/background/dungeon/dungeon_bg_3.png" -end - -function DungeonWeaponEntity:getOpenTextColor() - return "#FFEDC5" -end - -function DungeonWeaponEntity:getChallengeHpCost() - return GFunc.getConstReward("dungeon_armor_limit") -end - -function DungeonWeaponEntity:isNoTotalLimit() - return true -end - -function DungeonWeaponEntity:onClickFight() - ModuleManager.DungeonWeaponManager:showMainUI() -end - -function DungeonWeaponEntity:getDialyFarmLimit() - return GFunc.getConstIntValue("dungeon_equip_limit") -end - -function DungeonWeaponEntity:getFarmCount() - return self.farmCount -end - -function DungeonWeaponEntity:getRemianFarmCount() - local count = self:getDialyFarmLimit() - self:getFarmCount() - if count < 0 then - count = 0 - end - return count -end - -function DungeonWeaponEntity:getTodayRemainLimitCount() - return self:getRemianFarmCount() -end - -function DungeonWeaponEntity:getLevelEnough(chapterId) - local config = ConfigManager:getConfig(self:getConfigName())[chapterId] - if not config then - return false - end - if config.level > DataManager.PlayerData:getLv() then - return false - end - - return true -end - -function DungeonWeaponEntity:canFightChapter(chapterId) - if not chapterId then - return false - end - - if chapterId <= self.maxPassedId + 1 then - if self:getLevelEnough(chapterId) then - return true - end - end - - return false -end - -function DungeonWeaponEntity:canFarmChapter(chapterId) - if not chapterId then - return false - end - - return self.maxPassedId >= chapterId -end - -function DungeonWeaponEntity:doCachePassInfo(chapterId, info) - if not self.cachePassInfo then - self.cachePassInfo = {} - end - if not info then - return - end - if not self.cachePassInfo[chapterId] then - self.cachePassInfo[chapterId] = { - info = info, - getTime = Time:getServerTime() - } - else - self.cachePassInfo[chapterId].info = info - self.cachePassInfo[chapterId].getTime = Time:getServerTime() - end - self:setDirty() -end - -function DungeonWeaponEntity:getCachePassInfo(chapterId) - if not self.cachePassInfo then - self.cachePassInfo = {} - end - - if not self.cachePassInfo[chapterId] then - return - end - - if self.cachePassInfo[chapterId].getTime + GET_PASS_INFO_INTERVAL < Time:getServerTime() then -- 过期 - return - end - - return self.cachePassInfo[chapterId].info -end - -function DungeonWeaponEntity:setCurFightChapterId(chapterId) - self.curFightchapterId = chapterId or 1 -end - -function DungeonWeaponEntity:getCurFightChapterId() - return self.curFightchapterId or 1 -end - -function DungeonWeaponEntity:getChapterFightCount(chapterId) - return self.totalChallengeCount[chapterId] or 0 -end - -function DungeonWeaponEntity:getChallengeHpCost() - return GFunc.getConstReward("dungeon_equip_cost") -end - -return DungeonWeaponEntity \ No newline at end of file diff --git a/lua/app/userdata/dungeon/dungeon_weapon_entity.lua.meta b/lua/app/userdata/dungeon/dungeon_weapon_entity.lua.meta deleted file mode 100644 index 7e238b75..00000000 --- a/lua/app/userdata/dungeon/dungeon_weapon_entity.lua.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 9514a9828a718a24a9ca66021a56545d -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}