local GMConst = require "app/module/gm/gm_const" local GMToolUI = class("GMToolUI",BaseUI) function GMToolUI:ctor() end function GMToolUI:getPrefabPath() return "assets/prefabs/ui/gm/gm_tool_ui.prefab" end function GMToolUI:onLoadRootComplete() self.sid = self:scheduleGlobal(function() self:updateTime() end, 1) self:updateTime() end function GMToolUI:onRefresh() self.uiMap = self.root:genAllChildren() local titleTx = self.uiMap['gm_tool_ui.title'] local okBtn = self.uiMap['gm_tool_ui.ok_btn'] local okBtnText = self.uiMap['gm_tool_ui.ok_btn.text'] local inputField = self.uiMap['gm_tool_ui.InputField'] local scrollView = self.uiMap['gm_tool_ui.ScrollView'] local textTip = self.uiMap['gm_tool_ui.text_tip'] local speedUpBtn = self.uiMap["gm_tool_ui.speed_up_btn"] self.uiMap['gm_tool_ui.close_btn']:addClickListener(function() self:closeUI() end) self.scrollRect = scrollView:getLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.scrollRect:clearCells() self.scrollRect:setFadeArgs(0, 0.3) self.scrollRect:addInitCallback(function() return "app/ui/gm/cell/dev_tool_cell" end) self.scrollRect:addRefreshCallback(function(index, cell) self:initScrollRectCell(index, cell) end) self.scrollRect:refillCells(#GMConst.GM_INFO) self.textTip = textTip self.inputField = inputField titleTx:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT).text = "GM面板" okBtnText:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT).text = "确定" okBtn:addClickListener(function() local gmCommand = self.inputField:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_INPUT_FIELD).text self:sendMsg(gmCommand) self.inputField:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_INPUT_FIELD).text = "" end) speedUpBtn:addClickListener(function() local timeScale = CS.UnityEngine.Time.timeScale if timeScale == 1 then timeScale = 2 elseif timeScale == 2 then timeScale = 5 elseif timeScale == 5 then timeScale = 10 else timeScale = 1 end CS.UnityEngine.Time.timeScale = timeScale end) self.uiMap["gm_tool_ui.fps_btn"]:addClickListener(function() local comp = UIManager.uiRoot:getComponent(typeof(CS.BF.ShowFPS)) if comp == nil then comp = UIManager.uiRoot:addComponent(typeof(CS.BF.ShowFPS)) else comp.enabled = not comp.enabled end end) end function GMToolUI:initScrollRectCell(index, cell) local data = GMConst.GM_INFO[index] cell:addClickListener(function () self.textTip:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT).text = data.desc self.inputField:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_INPUT_FIELD).text = string.format("%s ", data.type) end) cell:refresh(data) end function GMToolUI:sendMsg(gmCommand) if gmCommand == "" then GFunc.showToast("GM命令不能为空") else local args = {} args.args = string.split(gmCommand, " ") if args.args[1] == "add_buff" then -- 特殊处理 if not ModuleManager.BattleManager:isInBattle() then Logger.logHighlight("不在战斗中") return end self:dealAddBuffGm(args) elseif args.args[1] == "set_seal_element" then -- 特殊处理 if not ModuleManager.BattleManager:isInBattle() then Logger.logHighlight("不在战斗中") return end self:dealSetSealElementGm(args.args) elseif args.args[1] == "time" then -- 特殊处理 local args1 = {} args1.args = {} args1.args[1] = args.args[1] args1.args[2] = args.args[2] .. " " .. args.args[3] ModuleManager.DevToolManager:dealGM(args1) else ModuleManager.DevToolManager:dealGM(args) end end end function GMToolUI:updateTime() local uiMap = self.root:genAllChildren() uiMap["gm_tool_ui.time"]:setText(Time:formatTimeYMDHMS(Time:getServerTime())) end function GMToolUI:dealAddBuffGm(args) local battleController = ModuleManager.BattleManager.battleController local effect = { ["type"]=args.args[2], ["num"]=tonumber(args.args[3]), ["ratio"]=10000, ["round"]=tonumber(args.args[4]) } local targetUnit = battleController.atkTeam:getMainUnit() if tonumber(args.args[5]) == GConst.BattleConst.SIDE_DEF then targetUnit = battleController.defTeam:getMainUnit() end local BattleBuffEntity = require "app/userdata/battle/skill/battle_buff_entity" local buffEntity = BattleBuffEntity:create() buffEntity:init(effect, targetUnit.unitEntity) buffEntity:setTargetSide(targetUnit) targetUnit:takeEffect(buffEntity, targetUnit) self:closeUI() end function GMToolUI:dealSetSealElementGm(args) local battleController = ModuleManager.BattleManager.battleController battleController.sealElementType = {} local index = 2 while true do if not args[index] then break end local elementType = tonumber(args[index]) if not elementType then break end battleController.sealElementType[elementType] = true index = index + 1 end self:closeUI() end return GMToolUI