c1_lua/lua/app/ui/gm/gm_tool_ui.lua
2023-08-16 17:35:17 +08:00

233 lines
7.4 KiB
Lua

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"]
local skipTutorialTx = self.uiMap["gm_tool_ui.skip_tutoria.text"]
local skipTutorialBtn = self.uiMap["gm_tool_ui.skip_tutoria"]
local skipTutorialCheck = self.uiMap["gm_tool_ui.skip_tutoria.check"]
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 = "确定"
skipTutorialTx: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)
skipTutorialCheck:setVisible(ModuleManager.DevToolManager:getSkip() == true)
skipTutorialBtn:addClickListener(function()
ModuleManager.DevToolManager:setSkip(not ModuleManager.DevToolManager:getSkip())
skipTutorialCheck:setVisible(ModuleManager.DevToolManager:getSkip() == true)
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] == "add_monster_skill" then -- 特殊处理
if not ModuleManager.BattleManager:isInBattle() then
Logger.logHighlight("不在战斗中")
return
end
self:addMonsterSkill(args.args)
elseif args.args[1] == "set_board_info" then -- 特殊处理
ModuleManager.DevToolManager.set_board_info = {
config = args.args[2],
idx = tonumber(args.args[3]) or 0,
isMystery = args.args[4] ~= nil
}
self:closeUI()
elseif args.args[1] == "add_skill" then -- 特殊处理
if not ModuleManager.BattleManager:isInBattle() then
Logger.logHighlight("不在战斗中")
return
end
local posId = tonumber(args.args[2])
local skillElement = tonumber(args.args[3])
local side = GConst.BattleConst.SIDE_ATK
if args.args[4] then
side = tonumber(args.args[4])
end
local controller = ModuleManager.BattleManager.battleController
local battleData = controller.battleData
local entity = battleData:getSkillEntityByElement(skillElement, side)
if entity then
battleData:getGridEnties()[posId]:setSkilId(entity:getSkillId(), false, side)
end
self:closeUI()
elseif args.args[1] == "check_skill_sound" then
self:checkSkillSoundExist()
self:closeUI()
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)
elseif args.args[1] == "set_cur_chapter" then
DataManager.ChapterData:setChapterId(tonumber(args.args[2]))
DataManager.ChapterData:setDirty()
self:closeUI()
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
function GMToolUI:addMonsterSkill(args)
local battleController = ModuleManager.BattleManager.battleController
battleController.defTeam:getMainUnit():addSkill(tonumber(args[2]))
self:closeUI()
end
function GMToolUI:checkSkillSoundExist()
local skillCfg = ConfigManager:getConfig("skill")
local errorMap = {}
for skillId, info in pairs(skillCfg) do
if info.sound_hit then
for _, id in ipairs(info.sound_hit) do
if id > 0 and not io.open(string.format("assets/arts/sounds/sfx/battle/%s.wav", id), 'r') then
if not errorMap[skillId] then
errorMap[skillId] = {}
end
table.insert(errorMap[skillId], id)
end
end
end
end
Logger.logHighlight("音效遍历完成")
Logger.printTable(errorMap)
end
return GMToolUI