From 5e50f54e74f4f997cba57fa41019967cb7c1d32c Mon Sep 17 00:00:00 2001 From: chenxi Date: Fri, 5 May 2023 20:13:25 +0800 Subject: [PATCH 1/5] =?UTF-8?q?log=E4=BD=BF=E7=94=A8=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/login/login_manager.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/app/module/login/login_manager.lua b/lua/app/module/login/login_manager.lua index 5ca67d2a..00203704 100644 --- a/lua/app/module/login/login_manager.lua +++ b/lua/app/module/login/login_manager.lua @@ -77,7 +77,7 @@ end function LoginManager:initSocket() local isConnected = NetManager:isConnected(NetManager.MAIN_SOCKET_NAME) if EDITOR_MODE then - Logger.logError("LoginMgr:initSocket:%s", isConnected) + Logger.logHighlight("LoginMgr:initSocket:%s", isConnected) end if not isConnected then NetManager:init( @@ -85,7 +85,7 @@ function LoginManager:initSocket() self:connectByChannel( function() if EDITOR_MODE then - Logger.logError("主链接链接成功") + Logger.logHighlight("主链接链接成功") end self:_login() end From 606ec1e5c04bda50d366de435cf69c7e2a481e91 Mon Sep 17 00:00:00 2001 From: chenxi Date: Fri, 5 May 2023 21:06:27 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/ui/main_city/main_city_ui.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 231e8ec0..18d1804d 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -23,7 +23,7 @@ function MainCityUI:getBGMId() return AudioManager.BGM_ID.MAINCITY end - function MainCityUI:getCurrencyParams() +function MainCityUI:getCurrencyParams() if self.currencyParams == nil then self.currencyParams = { itemIds = {} From 5e2644ee6e307803ee011234f39d79597d589837 Mon Sep 17 00:00:00 2001 From: chenxi Date: Fri, 5 May 2023 22:03:42 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=BB=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/common/data_manager.lua | 3 + lua/app/global/global_const.lua | 1 + lua/app/module/maincity/maincity_const.lua | 4 +- .../ui/main_city/cell/side_bar_gm_cell.lua | 16 + .../main_city/cell/side_bar_gm_cell.lua.meta | 10 + lua/app/ui/main_city/component/main_comp.lua | 37 +- lua/app/ui/main_city/main_city_ui.lua | 24 +- lua/app/userdata/bounty.meta | 8 + lua/app/userdata/bounty/bounty_data.lua | 445 ++++++++++++++++++ lua/app/userdata/bounty/bounty_data.lua.meta | 10 + lua/app/userdata/player/player_data.lua | 5 + 11 files changed, 545 insertions(+), 18 deletions(-) create mode 100644 lua/app/ui/main_city/cell/side_bar_gm_cell.lua create mode 100644 lua/app/ui/main_city/cell/side_bar_gm_cell.lua.meta create mode 100644 lua/app/userdata/bounty.meta create mode 100644 lua/app/userdata/bounty/bounty_data.lua create mode 100644 lua/app/userdata/bounty/bounty_data.lua.meta diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index fc3d7c5c..fa57aab5 100644 --- a/lua/app/common/data_manager.lua +++ b/lua/app/common/data_manager.lua @@ -15,6 +15,7 @@ function DataManager:init() self:initManager("TutorialData", "app/userdata/tutorial/tutorial_data") self:initManager("ActivityData", "app/userdata/activity/activity_data") self:initManager("GodPigData", "app/userdata/activity/god_pig/god_pig_data") + self:initManager("BountyData", "app/userdata/bounty/bounty_data") -- self:initManager("IdleData", "app/userdata/idle/idle_data") -- self:initManager("SevenDayData", "app/userdata/activity/seven_day/seven_day_data") end @@ -77,6 +78,7 @@ function DataManager:clear() self.FormationData:clear() self.ActivityData:clear() self.GodPigData:clear() + self.BountyData:clear() -- self.IdleData:clear() -- self.SevenDayData:clear() @@ -100,6 +102,7 @@ function DataManager:initWithServerData(data) self.TutorialData:init(data.TutorialData) self.ActivityData:init() self.GodPigData:init() + self.BountyData:init() -- self.IdleData:clear(data.IdleData) -- self.SevenDayData:init(data.SevenDayData) diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 11bc6055..4fa44c2b 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -177,6 +177,7 @@ GConst.ATLAS_PATH = { ICON_HERO = "assets/arts/atlas/icon/hero.asset", ICON_SKILL_ROGUE = "assets/arts/atlas/icon/skill_rogue.asset", ICON_BUFF = "assets/arts/atlas/icon/buff.asset", + BOUNTY = "assets/arts/atlas/ui/bounty.asset", } GConst.TOUCH_EVENT = { diff --git a/lua/app/module/maincity/maincity_const.lua b/lua/app/module/maincity/maincity_const.lua index 8d58d98b..526909c7 100644 --- a/lua/app/module/maincity/maincity_const.lua +++ b/lua/app/module/maincity/maincity_const.lua @@ -19,7 +19,9 @@ MainCityConst.BOTTOM_COUNT = 2 MainCityConst.LEFT_SIDE_BARS = { "app/ui/main_city/cell/side_bar_setting_cell", "app/ui/main_city/cell/side_bar_idle_cell", - "app/ui/main_city/cell/side_bar_seven_days_cell" + "app/ui/main_city/cell/side_bar_seven_days_cell", + -- gm放最后一个 + "app/ui/main_city/cell/side_bar_gm_cell" } MainCityConst.RIGHT_SIDE_BARS = { diff --git a/lua/app/ui/main_city/cell/side_bar_gm_cell.lua b/lua/app/ui/main_city/cell/side_bar_gm_cell.lua new file mode 100644 index 00000000..51b7ece1 --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_gm_cell.lua @@ -0,0 +1,16 @@ +local SideBarBaseCellComp = require "app/ui/main_city/cell/side_bar_base_cell" +local SideBarGMCell = class("SideBarGMCell", SideBarBaseCellComp) + +function SideBarGMCell:getIsOpen() + return Platform:getIsDevChannel() +end + +function SideBarGMCell:getIconRes() + return "maincity_gm" +end + +function SideBarGMCell:onClick() + ModuleManager.DevToolManager:showOrHideDevListUI() +end + +return SideBarGMCell \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_gm_cell.lua.meta b/lua/app/ui/main_city/cell/side_bar_gm_cell.lua.meta new file mode 100644 index 00000000..87e0373d --- /dev/null +++ b/lua/app/ui/main_city/cell/side_bar_gm_cell.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: dd053010d0d30b9409b0f34246c925b4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/main_city/component/main_comp.lua b/lua/app/ui/main_city/component/main_comp.lua index 8383c3a1..5ef6e927 100644 --- a/lua/app/ui/main_city/component/main_comp.lua +++ b/lua/app/ui/main_city/component/main_comp.lua @@ -10,7 +10,9 @@ function MainComp:init() self.uiMap = self:getBaseObject():genAllChildren() self:initChapter() self:initStageFormation() - self:initGM() + self:initTask() + self:initBounty() + self:initSetting() end function MainComp:initChapter() @@ -49,17 +51,29 @@ function MainComp:initStageFormation() } end -function MainComp:initGM() - self.btnGM = self.uiMap["main_comp.gm_btn"] - self.btnGM:setVisible(Platform:getIsDevChannel(), 2) - self.btnGM:addClickListener(function() - ModuleManager.DevToolManager:showOrHideDevListUI() +function MainComp:initTask() + self.taskBtn = self.uiMap["main_comp.task_btn"] + self.taskBtn:addClickListener(function() + + end) +end + +function MainComp:initBounty() + self.bountyNode = self.uiMap["main_comp.bounty_node"] + self.bountyBanner = self.uiMap["main_comp.bounty_node.banner"] +end + +function MainComp:initSetting() + self.settingbtn = self.uiMap["main_comp.setting_btn"] + self.settingbtn:addClickListener(function() + end) end function MainComp:refresh() self:refreshChapter() self:refreshStageFormaion() + self:refreshBounty() end function MainComp:onFightBtnClick() @@ -197,4 +211,15 @@ function MainComp:refreshStageFormaion() end end +function MainComp:refreshBounty() + local isOpen = DataManager.BountyData:getIsOpen() + if not isOpen then + self.bountyNode:setVisible(false) + return + end + self.bountyNode:setVisible(true) + local bannerName = DataManager.BountyData:getBannerName() + self.bountyBanner:setSprite(GConst.ATLAS_PATH.BOUNTY, bannerName) +end + return MainComp \ No newline at end of file diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 18d1804d..ae935c89 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -95,6 +95,7 @@ function MainCityUI:_display() self:initBottomUI() self:initComp() self:initLeftRightBtns() + self:initPlayerInfo() self:refreshBottom() end @@ -111,7 +112,7 @@ function MainCityUI:_bind() end end, true) self:bind(DataManager.PlayerData, "dirty", function(binder, value) - self:refreshRoleInfo() + self:refreshPlayerInfo() end, true) self:bind(DataManager.PlayerData, "lvUpDirty", function(binder, value) self:checkMainPop() @@ -328,6 +329,17 @@ function MainCityUI:setSideBarVisible(visible) self.rightSideBar:setVisible(visible) end +function MainCityUI:initPlayerInfo() + self.playerSlider = self.uiMap["main_ui.player_node.slider"] + self.playerLvTx = self.uiMap["main_ui.player_node.lv"] +end + +function MainCityUI:refreshPlayerInfo() + local lv = DataManager.PlayerData:getLv() + self.playerLvTx:setText(GConst.INT_TO_STRING[lv] or tostring(lv)) + self.playerSlider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = DataManager.PlayerData:getExpPercent() +end + function MainCityUI:switchComp(index) index = index or self.selectedIndex for i, comp in pairs(self.subComps) do @@ -349,16 +361,6 @@ end function MainCityUI:updateTime() end -function MainCityUI:refreshRoleInfo() - local uiMap = self.root:genAllChildren() - local v, _, _2 = DataManager.PlayerData:getExpPer() - uiMap["main_ui.role_node.role_cell.setting.lv"]:setText(DataManager.PlayerData:getLv()) - uiMap["main_ui.role_node.role_cell.slider"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = v - uiMap["main_ui.role_node.role_cell.setting"]:addClickListener(function() - ModuleManager.GameSettingManager:showSettingUI() - end) -end - function MainCityUI:refreshBottomRp() local uiMap = self.root:genAllChildren() local heroRpObj = uiMap["main_ui.bottom_node.icons.ui_spine_obj_r.rp_node"] diff --git a/lua/app/userdata/bounty.meta b/lua/app/userdata/bounty.meta new file mode 100644 index 00000000..28fd08b8 --- /dev/null +++ b/lua/app/userdata/bounty.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 272533192ecd8bf428c0e17dcdcfe6b6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/lua/app/userdata/bounty/bounty_data.lua b/lua/app/userdata/bounty/bounty_data.lua new file mode 100644 index 00000000..274fd0a5 --- /dev/null +++ b/lua/app/userdata/bounty/bounty_data.lua @@ -0,0 +1,445 @@ +local BountyData = class("BountyData", BaseData) + +-- local ACT_BATTLE_PASS = ConfigManager:getConfig("act_battle_pass") +-- local ACT_BATTLE_PASS_TASK = ConfigManager:getConfig("act_battle_pass_task") +-- local MALL_ACT = ConfigManager:getConfig("mall_act") +local BOUNTY_TYPE = 8 + +function BountyData:getTimeStr() + local endTime = self:getEndTime() + local remainTime = endTime - Time:getServerTime() + if remainTime < 0 then + remainTime = 0 + end + return Time:formatNumTimeStr(remainTime) +end + +function BountyData:getRp() + return self:getTaskRp() or self:getLevelRp() +end + +function BountyData:gotoBtnFunc() + ModuleManager.BountyManager:showUI() +end + +function BountyData:getIsOpen() + if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.BATTLE_PASS, true) then + return false + end + if self.endTime and self.endTime > 0 and self.endTime > Time:getServerTime() then + return true + end + return false +end + +function BountyData:ctor() + self:clear() +end + +function BountyData:clear() + self.season = 1 + self.level = 1 + self.exp = 0 + self.bought = false + self.highCount = 0 + self.count = 0 + self.tasks = {} + self.weekRefreshTime = 0 + self.maxLevel = nil + self.data.isDirty = false + DataManager:unregisterCrossDayFunc("BountyData") +end + +function BountyData:setDirty() + self.data.isDirty = not self.data.isDirty +end + +function BountyData:init(data, isInit) + -- data = data or {} + + -- self.season = data.season or 1 + -- self.level = data.level or 1 + -- self.exp = data.exp or 0 + -- self.bought = data.bought or false + -- self.tasks = data.tasks or {} + -- self.highCount = data.pro_claimed or 0 + -- self.count = data.claimed or 0 + -- self.maxLevel = nil + + -- self.weekRefreshTime = Time:getWeekOverTimeStamp() + + -- self:initFuncTime() + + -- if isInit then + -- self:initTaskListener() + -- DataManager:registerCrossDayFunc("BountyData", function() + -- local needRefreshWeek = self.weekRefreshTime < Time:getServerTime() + -- self.weekRefreshTime = Time:getWeekOverTimeStamp() + -- local list = self:getTaskList() + -- for _, id in ipairs(list) do + -- if self:getTaskIsDailyRefresh(id) or needRefreshWeek then + -- self:getTaskInfo(id).progress = 0 + -- self:getTaskInfo(id).claimed = false + -- end + -- end + -- self:initFuncTime() + -- self:setDirty() + -- end) + -- end +end + +function BountyData:getBannerName() + return "bounty_btn_main_1" +end + +function BountyData:refreshTask(task) + if not task then + return + end + self.tasks[task.id] = task +end + +function BountyData:refreshLevelRewardInfo(data) + if not data then + return + end + self.highCount = data.pro_claimed or 0 + self.count = data.claimed or 0 +end + +function BountyData:refreshLevelInfo(data) + if not data then + return + end + self.level = data.level or 0 + self.exp = data.exp or 0 +end + +function BountyData:setBoughtStatus(data) + if not data then + return + end + self.bought = data.bought or false +end + +function BountyData:initFuncTime() + if not self.seasonList then + self.seasonList = {} + for id, info in pairs(MALL_ACT) do + if info.type == BOUNTY_TYPE then + table.insert(self.seasonList, id) + end + end + + table.sort(self.seasonList, function(a, b) + return a < b + end) + end + + local nowTime = Time:getServerTime() + if self.endTime and self.endTime > 0 and self.endTime > nowTime then + return + end + + if (not self.endTime or self.endTime <= nowTime) and self.season then + local cfg = MALL_ACT[self.season] + if cfg then + self.startTime = Time:getCertainTimeByStr2(cfg.start_time) + self.endTime = Time:getCertainTimeByStr2(cfg.end_time) + end + end + + if not self.endTime or self.endTime <= nowTime then + for _, id in ipairs(self.seasonList) do + local cfg = MALL_ACT[id] + local startTime = Time:getCertainTimeByStr2(cfg.start_time) + local endTime = Time:getCertainTimeByStr2(cfg.end_time) + if startTime <= nowTime and endTime > nowTime then + self.startTime = startTime + self.endTime = endTime + self.season = id + self.bought = false + self.level = 1 + self.exp = 0 + self.highCount = 0 + self.count = 0 + self.maxLevel = nil + BIReport:postBattlePassOpen() + break + end + end + end +end + +function BountyData:getEndTime() + return self.endTime or 0 +end + +function BountyData:getSeasonRewardList() + if not self.seasonRewardList then + self.seasonRewardList = {} + for id, info in pairs(ACT_BATTLE_PASS) do + local season = info.mall_id + if not self.seasonRewardList[season] then + self.seasonRewardList[season] = {} + end + table.insert(self.seasonRewardList[season], id) + end + + for season, list in pairs(self.seasonRewardList) do + table.sort(self.seasonRewardList[season], function(a, b) + return a < b + end) + end + end + + return self.seasonRewardList[self.season] or {} +end + +function BountyData:getSeason() + return self.season +end + +function BountyData:getSeasonTx() + local cfg = I18N:getConfig("mall_act")[self.season] + if cfg and cfg.name then + return cfg.name + end + return GConst.EMPTY_STRING +end + +function BountyData:getRechargeId() + local cfg = ConfigManager:getConfig("mall_act")[self.season] + if cfg then + return cfg.recharge_id + end + return nil +end + +function BountyData:getLevel() + return self.level +end + +function BountyData:getMaxLevel() + if not self.maxLevel then + self.maxLevel = #self:getSeasonRewardList() + end + return self.maxLevel +end + +function BountyData:getIsMaxLevel() + return self.level >= self:getMaxLevel() +end + +function BountyData:getExp() + return self.exp +end + +function BountyData:getBought() + return self.bought +end + +function BountyData:getCurNeedExp(lv) + lv = lv or self.level + 1 + local id = self:getSeasonRewardList()[lv] + if not id then + id = self:getSeasonRewardList()[self:getMaxLevel()] + end + + if not id then + return 1 + end + + return ACT_BATTLE_PASS[id].exp +end + +function BountyData:getRewardById(id) + return ACT_BATTLE_PASS[id].reward +end + +function BountyData:getProRewardById(id) + return ACT_BATTLE_PASS[id].reward_pro +end + +function BountyData:getClaimed(index) + return self.count >= index +end + +function BountyData:getHighClaimed(index) + return self.highCount >= index +end + +function BountyData:getCount() + return self.count +end + +function BountyData:getHighCount() + return self.highCount +end + +function BountyData:getTaskList() + if not self.taskList then + self.taskList = {} + for id, info in pairs(ACT_BATTLE_PASS_TASK) do + local season = info.mall_id + if not self.taskList[season] then + self.taskList[season] = {} + end + + table.insert(self.taskList[season], id) + end + end + + return self.taskList[self.season] or {} +end + +function BountyData:getTaskListByType(taskType) + if not self.taskTypeMap then + self.taskTypeMap = {} + for id, info in pairs(ACT_BATTLE_PASS_TASK) do + if not self.taskTypeMap[info.type] then + self.taskTypeMap[info.type] = {} + end + table.insert(self.taskTypeMap[info.type], id) + end + end + + return self.taskTypeMap[taskType] or {} +end + +function BountyData:getTaskType(id) + return ACT_BATTLE_PASS_TASK[id].type +end + +function BountyData:getTaskParamater(id) + return ACT_BATTLE_PASS_TASK[id].parameter +end + +function BountyData:getTaskExp(id) + return ACT_BATTLE_PASS_TASK[id].exp_reward +end + +function BountyData:getTaskIsDailyRefresh(id) + return ACT_BATTLE_PASS_TASK[id].refresh_type == 1 +end + +function BountyData:getTaskInfo(id) + if not self.tasks[id] then + self.tasks[id] = { + id = id, + progress = 0, + claimed = false + } + end + + return self.tasks[id] +end + +function BountyData:addTaskProgress(id, count) + if not count or count <= 0 then + return + end + self:getTaskInfo(id).progress = self:getTaskInfo(id).progress + count + self:setDirty() +end + +function BountyData:getTaskCount(id) + return self:getTaskInfo(id).progress +end + +function BountyData:getTaskCaimed(id) + return self:getTaskInfo(id).claimed +end + +function BountyData:getTaskCanCaimed(id) + if self:getTaskCaimed(id) then + return false + end + if not self:getTaskIsDailyRefresh(id) and not self:getBought() then + return false + end + return self:getTaskInfo(id).progress >= self:getTaskParamater(id) +end + +function BountyData:initTaskListener() + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_SUMMON, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_SUMMON) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_HOE_USE, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_HOE_USE) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) + + ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY, function(count) + local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY) + for _, id in ipairs(list) do + self:addTaskProgress(id, count) + end + end) +end + +function BountyData:getTaskRp() + local taskList = self:getTaskList() + for _, id in ipairs(taskList) do + if self:getTaskCanCaimed(id) then + return true + end + end + + return false +end + +function BountyData:getLevelRp() + if self.level > self.count then + return true + end + + if self.bought and self.level > self.highCount then + return true + end + + return false +end + +return BountyData \ No newline at end of file diff --git a/lua/app/userdata/bounty/bounty_data.lua.meta b/lua/app/userdata/bounty/bounty_data.lua.meta new file mode 100644 index 00000000..659c01d3 --- /dev/null +++ b/lua/app/userdata/bounty/bounty_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d566564ac5ce938488f779c6d9466503 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/player/player_data.lua b/lua/app/userdata/player/player_data.lua index 893abfd9..8474fce1 100644 --- a/lua/app/userdata/player/player_data.lua +++ b/lua/app/userdata/player/player_data.lua @@ -3,6 +3,7 @@ local PlayerData = class("PlayerData", BaseData) function PlayerData:init(data) data = data or {} self.data.level = data.level or 1 + self.data.dirty = false self.loginDay = data.loginDay or 1 self.lastLoginTime = data.lastLoginTime or Time:getBeginningOfServerToday() end @@ -26,6 +27,10 @@ function PlayerData:getLv() return self.data.level end +function PlayerData:getExpPercent() + return 0 +end + function PlayerData:getLoginDay() return self.loginDay end From 5ee674bc60e7270e6c53244f16c6203370e9fb42 Mon Sep 17 00:00:00 2001 From: xiekaidong Date: Sat, 6 May 2023 10:04:32 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=AE=9D=E7=AE=B1?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/ui/main_city/component/main_comp.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/app/ui/main_city/component/main_comp.lua b/lua/app/ui/main_city/component/main_comp.lua index 5ef6e927..9ec49949 100644 --- a/lua/app/ui/main_city/component/main_comp.lua +++ b/lua/app/ui/main_city/component/main_comp.lua @@ -119,6 +119,10 @@ function MainComp:refreshChapter(force) end local rewardChapterId = DataManager.ChapterData:getIsHaveRewardsMinId() + if rewardChapterId > chapterId then + rewardChapterId = chapterId + end + local curMaxWave = DataManager.ChapterData:getChapterMaxWave(rewardChapterId) local boxCount = DataManager.ChapterData:getChapterBoxCount(rewardChapterId) local unitValue = 1 / boxCount From 04e6bdcfdaf4eda583765f84996f1669f45f8aec Mon Sep 17 00:00:00 2001 From: chenxi Date: Sat, 6 May 2023 11:34:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=B8=BB=E5=9F=8E=E4=BE=A7=E8=BE=B9?= =?UTF-8?q?=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/bf/unity/uiprefab_object.lua | 20 +++ lua/app/module/maincity/maincity_manager.lua | 16 +++ .../ui/main_city/cell/side_bar_base_cell.lua | 4 + .../main_city/cell/side_bar_god_pig_cell.lua | 2 +- .../ui/main_city/cell/side_bar_idle_cell.lua | 2 +- lua/app/ui/main_city/component/main_comp.lua | 34 ----- lua/app/ui/main_city/main_city_ui.lua | 132 ++++++++++++++++-- 7 files changed, 160 insertions(+), 50 deletions(-) diff --git a/lua/app/bf/unity/uiprefab_object.lua b/lua/app/bf/unity/uiprefab_object.lua index 1f594714..79f190a5 100644 --- a/lua/app/bf/unity/uiprefab_object.lua +++ b/lua/app/bf/unity/uiprefab_object.lua @@ -197,6 +197,26 @@ function UIPrefabObject:fastGetAnchoredPosition() end end +function UIPrefabObject:fastGetAnchoredPositionX() + if self.prefabHelper then + self.prefabHelper:CacheAnchoredPosition(self.objectIndex) + return self.prefabHelper.PositionX + else + local anchoredPosition = self:getTransform().anchoredPosition + return anchoredPosition.x + end +end + +function UIPrefabObject:fastGetAnchoredPositionY() + if self.prefabHelper then + self.prefabHelper:CacheAnchoredPosition(self.objectIndex) + return self.prefabHelper.PositionY + else + local anchoredPosition = self:getTransform().anchoredPosition + return anchoredPosition.y + end +end + function UIPrefabObject:getAnchoredPosition() if self.prefabHelper then return self.prefabHelper:GetAnchoredPosition(self.objectIndex) diff --git a/lua/app/module/maincity/maincity_manager.lua b/lua/app/module/maincity/maincity_manager.lua index b041a7e2..4a39833b 100644 --- a/lua/app/module/maincity/maincity_manager.lua +++ b/lua/app/module/maincity/maincity_manager.lua @@ -16,4 +16,20 @@ function MaincityManager:firstEnterMainCity() end end +function MaincityManager:changeMainCityLeftSideBarOpenOrClose() + self.isLeftSideBarClose = not self.isLeftSideBarClose +end + +function MaincityManager:getIsMainCityLeftSideBarClose() + return self.isLeftSideBarClose +end + +function MaincityManager:changeMainCityRightSideBarOpenOrClose() + self.isRightSideBarClose = not self.isRightSideBarClose +end + +function MaincityManager:getIsMainCityRightSideBarClose() + return self.isRightSideBarClose +end + return MaincityManager \ No newline at end of file diff --git a/lua/app/ui/main_city/cell/side_bar_base_cell.lua b/lua/app/ui/main_city/cell/side_bar_base_cell.lua index 66871c48..aeb9a587 100644 --- a/lua/app/ui/main_city/cell/side_bar_base_cell.lua +++ b/lua/app/ui/main_city/cell/side_bar_base_cell.lua @@ -94,6 +94,10 @@ function SideBarBaseCellComp:setAnchoredPositionY(y) self.baseObject:setAnchoredPositionY(y) end +function SideBarBaseCellComp:setVisible(visible) + self.baseObject:setVisible(visible) +end + function SideBarBaseCellComp:getCellPath() return self.cellPath end diff --git a/lua/app/ui/main_city/cell/side_bar_god_pig_cell.lua b/lua/app/ui/main_city/cell/side_bar_god_pig_cell.lua index 09846f0f..6c5c7b42 100644 --- a/lua/app/ui/main_city/cell/side_bar_god_pig_cell.lua +++ b/lua/app/ui/main_city/cell/side_bar_god_pig_cell.lua @@ -6,7 +6,7 @@ function SideBarGodPigCell:getIsOpen() end function SideBarGodPigCell:getIconRes() - return "main_btn_godpig" + return "main_btn_pig" end function SideBarGodPigCell:onClick() diff --git a/lua/app/ui/main_city/cell/side_bar_idle_cell.lua b/lua/app/ui/main_city/cell/side_bar_idle_cell.lua index 96a2c1a7..ebcb9bb0 100644 --- a/lua/app/ui/main_city/cell/side_bar_idle_cell.lua +++ b/lua/app/ui/main_city/cell/side_bar_idle_cell.lua @@ -6,7 +6,7 @@ function SideBarIdleCell:getIsOpen() end function SideBarIdleCell:getIconRes() - return "main_btn_idle" + return "main_btn_hang" end function SideBarIdleCell:onClick() diff --git a/lua/app/ui/main_city/component/main_comp.lua b/lua/app/ui/main_city/component/main_comp.lua index 5ef6e927..097015a0 100644 --- a/lua/app/ui/main_city/component/main_comp.lua +++ b/lua/app/ui/main_city/component/main_comp.lua @@ -10,9 +10,6 @@ function MainComp:init() self.uiMap = self:getBaseObject():genAllChildren() self:initChapter() self:initStageFormation() - self:initTask() - self:initBounty() - self:initSetting() end function MainComp:initChapter() @@ -51,29 +48,9 @@ function MainComp:initStageFormation() } end -function MainComp:initTask() - self.taskBtn = self.uiMap["main_comp.task_btn"] - self.taskBtn:addClickListener(function() - - end) -end - -function MainComp:initBounty() - self.bountyNode = self.uiMap["main_comp.bounty_node"] - self.bountyBanner = self.uiMap["main_comp.bounty_node.banner"] -end - -function MainComp:initSetting() - self.settingbtn = self.uiMap["main_comp.setting_btn"] - self.settingbtn:addClickListener(function() - - end) -end - function MainComp:refresh() self:refreshChapter() self:refreshStageFormaion() - self:refreshBounty() end function MainComp:onFightBtnClick() @@ -211,15 +188,4 @@ function MainComp:refreshStageFormaion() end end -function MainComp:refreshBounty() - local isOpen = DataManager.BountyData:getIsOpen() - if not isOpen then - self.bountyNode:setVisible(false) - return - end - self.bountyNode:setVisible(true) - local bannerName = DataManager.BountyData:getBannerName() - self.bountyBanner:setSprite(GConst.ATLAS_PATH.BOUNTY, bannerName) -end - return MainComp \ No newline at end of file diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index ae935c89..dd7a6982 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -96,6 +96,7 @@ function MainCityUI:_display() self:initComp() self:initLeftRightBtns() self:initPlayerInfo() + self:initTopNode() self:refreshBottom() end @@ -230,9 +231,23 @@ function MainCityUI:refreshBottomCell(showAni) end function MainCityUI:initLeftRightBtns() + self.leftNode = self.uiMap["main_ui.left_node"] self.leftSideBar = self.uiMap["main_ui.left_node.side_bar"] + self.leftArrowNode = self.uiMap["main_ui.left_node.arrow_node"] + self.leftArrowBtn = self.uiMap["main_ui.left_node.arrow_node.arrow"] + self.leftArrowBtn:addClickListener(function() + self:openOrCloseLeftSideBar() + end) + self.rightNode = self.uiMap["main_ui.right_node"] self.rightSideBar = self.uiMap["main_ui.right_node.side_bar"] + self.rightArrowNode = self.uiMap["main_ui.right_node.arrow_node"] + self.rightArrowBtn = self.uiMap["main_ui.right_node.arrow_node.arrow"] + self.rightArrowBtn:addClickListener(function() + self:openOrCloseRightSideBar() + end) self.sideBarCellObject = self.uiMap["main_ui.cache_node.side_bar_cell"] + local w, h = self.sideBarCellObject:fastGetSizeDelta() + self.sideBarHeight = h if self.leftBarList == nil then self.leftBarList = {} end @@ -256,12 +271,18 @@ function MainCityUI:addSideBarCellComp(cellClassPath) return prefabObject:addLuaComponent(cellClassPath) end +function MainCityUI:openOrCloseLeftSideBar() + ModuleManager.MaincityManager:changeMainCityLeftSideBarOpenOrClose() + self:refreshLeftBtns() +end + function MainCityUI:refreshLeftBtns() + self:clearSideBarList(self.leftBarList) local list = GConst.MainCityConst.LEFT_SIDE_BARS if #list <= 0 then - self:clearSideBarList(self.leftBarList) return end + local isClose = ModuleManager.MaincityManager:getIsMainCityLeftSideBarClose() for k, v in ipairs(list) do local CellClass = self.sideBarClassMap[v] if CellClass == nil then @@ -278,20 +299,42 @@ function MainCityUI:refreshLeftBtns() table.insert(self.leftBarList, cell) end end - local y = 0 - for k, v in ipairs(self.leftBarList) do - v:setAnchoredPositionY(y) - v:refresh() - y = y - 80 + local y = - 2 - self.sideBarHeight/2 + if isClose then -- 只显示一个 + local first = self.leftBarList[1] + first:setAnchoredPositionY(y) + first:setVisible(true) + first:refresh() + y = y - self.sideBarHeight - 2 + for i = 2, #self.leftBarList do + self.leftBarList[i]:setVisible(false) + self.leftBarList[i]:refresh() + end + else + for k, v in ipairs(self.leftBarList) do + v:setAnchoredPositionY(y) + v:setVisible(true) + v:refresh() + y = y - self.sideBarHeight - 2 + end end + self.leftSideBar:setSizeDeltaY(-y) + self.leftArrowNode:setLocalScale(1, isClose and -1 or 1, 1) + self.leftArrowNode:setAnchoredPositionY(self.leftSideBar:fastGetAnchoredPositionY() + y + 20) +end + +function MainCityUI:openOrCloseRightSideBar() + ModuleManager.MaincityManager:changeMainCityRightSideBarOpenOrClose() + self:refreshRightBtns() end function MainCityUI:refreshRightBtns() + self:clearSideBarList(self.rightBarList) local list = GConst.MainCityConst.RIGHT_SIDE_BARS if #list <= 0 then - self:clearSideBarList(self.rightBarList) return end + local isClose = ModuleManager.MaincityManager:getIsMainCityRightSideBarClose() for k, v in ipairs(list) do local CellClass = self.sideBarClassMap[v] if CellClass == nil then @@ -308,12 +351,27 @@ function MainCityUI:refreshRightBtns() table.insert(self.rightBarList, cell) end end - local y = 0 - for k, v in ipairs(self.rightBarList) do - v:setAnchoredPositionY(y) - v:refresh() - y = y - 80 + local y = -2 - self.sideBarHeight/2 + if isClose then -- 只显示一个 + local first = self.rightBarList[1] + first:setAnchoredPositionY(y) + first:setVisible(true) + first:refresh() + y = y - self.sideBarHeight - 2 + for i = 2, #self.rightBarList do + self.rightBarList[i]:setVisible(false) + self.rightBarList[i]:refresh() + end + else + for k, v in ipairs(self.rightBarList) do + v:setAnchoredPositionY(y) + v:refresh() + y = y - self.sideBarHeight - 2 + end end + self.rightSideBar:setSizeDeltaY(-y) + self.rightArrowNode:setLocalScale(1, isClose and -1 or 1, 1) + self.rightArrowNode:setAnchoredPositionY(self.rightSideBar:fastGetAnchoredPositionY() + y + 20) end function MainCityUI:clearSideBarList(sideBarList) @@ -325,8 +383,8 @@ function MainCityUI:clearSideBarList(sideBarList) end function MainCityUI:setSideBarVisible(visible) - self.leftSideBar:setVisible(visible) - self.rightSideBar:setVisible(visible) + self.leftNode:setVisible(visible) + self.rightNode:setVisible(visible) end function MainCityUI:initPlayerInfo() @@ -340,6 +398,49 @@ function MainCityUI:refreshPlayerInfo() self.playerSlider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = DataManager.PlayerData:getExpPercent() end +function MainCityUI:initTopNode() + self.topNode = self.uiMap["main_ui.top_node"] + self:initTask() + self:initBounty() + self:initSetting() +end + +function MainCityUI:initTask() + self.taskBtn = self.uiMap["main_ui.top_node.task_btn"] + self.taskBtn:addClickListener(function() + end) +end + +function MainCityUI:initBounty() + self.bountyNode = self.uiMap["main_ui.top_node.bounty_node"] + self.bountyBanner = self.uiMap["main_ui.top_node.bounty_node.banner"] +end + +function MainCityUI:initSetting() + self.settingbtn = self.uiMap["main_ui.top_node.setting_btn"] + self.settingbtn:addClickListener(function() + end) +end + +function MainCityUI:setTopNodeVisible(visible) + self.topNode:setVisible(visible) +end + +function MainCityUI:refreshTopNode() + self:refreshBounty() +end + +function MainCityUI:refreshBounty() + local isOpen = DataManager.BountyData:getIsOpen() + if not isOpen then + self.bountyNode:setVisible(false) + return + end + self.bountyNode:setVisible(true) + local bannerName = DataManager.BountyData:getBannerName() + self.bountyBanner:setSprite(GConst.ATLAS_PATH.BOUNTY, bannerName) +end + function MainCityUI:switchComp(index) index = index or self.selectedIndex for i, comp in pairs(self.subComps) do @@ -352,8 +453,11 @@ function MainCityUI:switchComp(index) self:updateCurrencyBar() if self.selectedIndex == MAIN_COMP_INDEX then self:checkMainPop() + self:setTopNodeVisible(true) + self:refreshTopNode() self:setSideBarVisible(true) else + self:setTopNodeVisible(false) self:setSideBarVisible(false) end end