local UIViewAssets = UIViewClass() local Category = { [1] = "英雄模型", [2] = "其他模型", [3] = "Buff特效", [4] = "技能特效", [5] = "子弹", [6] = "钩子子弹", [7] = "追踪弹", [8] = "场景", } local EnumCategory = { HeroModel = 1, OtherModel = 2, BuffFX = 3, SkillFX = 4, MissileFX = 5, HookFX = 6, TrackerFX = 7, Scene = 8, } local AnimKey = { [1] = "idle_loop", [2] = "run_loop", [3] = "run_stop", [4] = "walk_right_loop", [5] = "walk_left_loop", [6] = "walk_back_loop", [7] = "walk_front_loop", [8] = "win", } local CameraMode = { [1] = "主城相机", [2] = "PVP相机", [3] = "展示相机", } local tonumberV1 = FP.tonumberV1 function UIViewAssets:OnOpened(context) CTL.ViewAssets.Init() UIUtils.SetLabel(self.txt_Show, "显示隐藏UI") UIUtils.SetLabel(self.txt_UIModel, "UI展示模型") UIUtils.SetLabel(self.txt_Exit, "退出") self.showUI = true self.curCameraMode = 1 self.curEntity = BattleDataGetter.GetCurEntity() self.minSpeed = tonumberV1(self.curEntity.components.attr:GetAttrBaseValue(LuaConst.AttrType.spd)) self.maxSpeed = 100 UIUtils.SetLabel(self.txt_Speed, self.minSpeed) --英雄模型 self.heroList = {} for _, v in DataSheetManager.HeroNum:GetEnumerator() do table.insert(self.heroList, v) end --模型 local uniqueMap = {} self.modelCategoryMap = {} self.modelCategoryList = {} for i, v in DataSheetManager.MonsterModelData:GetEnumerator() do if not string.isNilOrEmpty(v.Path) and not uniqueMap[v.Path] then local pathList = string.split(v.Path, "/") if pathList[1] == "Assets" and pathList[2] == "Actor" and pathList[3] ~= "Hero" then uniqueMap[v.Path] = true if not self.modelCategoryMap[pathList[3]] then self.modelCategoryMap[pathList[3]] = {} table.insert(self.modelCategoryList, pathList[3]) end table.insert(self.modelCategoryMap[pathList[3]], {name = pathList[4], cfg = v}) end end end --Buff local uniqueMap = {} self.buffDataMap = {} self.buffDataList = {} for i, v in DataSheetManager.BuffData:GetEnumerator() do if not string.isNilOrEmpty(v.BuffResource) and not uniqueMap[v.BuffResource] then uniqueMap[v.BuffResource] = true local prefix, suffix = string.match(v.BuffResource, "(.+)/([^/]+)$") if not self.buffDataMap[prefix] then self.buffDataMap[prefix] = {} table.insert(self.buffDataList, prefix) end table.insert(self.buffDataMap[prefix], {name = suffix, buffResource = v.BuffResource}) end end --Skill local uniqueMap = {} self.skillDataMap = {} self.skillDataList = {} for i, v in DataSheetManager.SkillData:GetEnumerator() do if not string.isNilOrEmpty(v.SkillResource) and not uniqueMap[v.SkillResource] then uniqueMap[v.SkillResource] = true local prefix, suffix = string.match(v.SkillResource, "(.+)/([^/]+)$") if not self.skillDataMap[prefix] then self.skillDataMap[prefix] = {} table.insert(self.skillDataList, prefix) end table.insert(self.skillDataMap[prefix], {name = suffix, skillResource = v.SkillResource}) end end --Missile local uniqueMap = {} self.missileDataMap = {} self.missileDataList = {} self.hookDataMap = {} self.hookDataList = {} for k, v in DataSheetManager.MissileData:GetEnumerator() do if not string.isNilOrEmpty(v.PSMissileResource) and not uniqueMap[v.PSMissileResource] then local prefix, suffix = string.match(v.PSMissileResource, "(.+)/([^/]+)$") if v.IsHook then if not self.hookDataMap[prefix] then self.hookDataMap[prefix] = {} table.insert(self.hookDataList, prefix) end table.insert(self.hookDataMap[prefix], {name = suffix, psMissileResource = v.PSMissileResource}) else if not self.missileDataMap[prefix] then self.missileDataMap[prefix] = {} table.insert(self.missileDataList, prefix) end table.insert(self.missileDataMap[prefix], {name = suffix, psMissileResource = v.PSMissileResource}) end end end local uniqueMap = {} self.trackerDataMap = {} self.trackerDataList = {} for k, v in DataSheetManager.TrackerData:GetEnumerator() do if not string.isNilOrEmpty(v.PSMissileResource) and not uniqueMap[v.PSMissileResource] then local prefix, suffix = string.match(v.PSMissileResource, "(.+)/([^/]+)$") if not self.trackerDataMap[prefix] then self.trackerDataMap[prefix] = {} table.insert(self.trackerDataList, prefix) end table.insert(self.trackerDataMap[prefix], {name = suffix, psMissileResource = v.PSMissileResource}) end end self.curTab = 1 self.curTab2 = 1 self.curTab3 = 1 for i, v in pairs(Category) do self.scroll_Tab1:AddData(v, 0) end self.scroll_Tab1:SelectIndex(0) for i, v in ipairs(CameraMode) do self.scroll_Camera:AddData(v, 0) end end function UIViewAssets:OnButtonClicked(comp) if comp == self.btn_Show then self.showUI = not self.showUI UIUtils.SetActive(self.group_buttons, self.showUI) elseif comp == self.btn_UIModel then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIViewUIModels) elseif comp == self.btn_Exit then CTL.HomeMain.CloseViewBackHomeMain() end end function UIViewAssets:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.scroll_Camera then UIUtils.SetLabel(cellTable.txt_Name, data) end if scrollRect == self.scroll_Tab1 then UIUtils.SetLabel(cellTable.txt_Name, data) end self:HeroModelCellInit(scrollRect, index, cellTable, data) self:OtherModelCellInit(scrollRect, index, cellTable, data) self:BuffFXCellInit(scrollRect, index, cellTable, data) self:SkillFXCellInit(scrollRect, index, cellTable, data) self:MissileFXCellInit(scrollRect, index, cellTable, data) self:HookFXCellInit(scrollRect, index, cellTable, data) self:TrackerFXCellInit(scrollRect, index, cellTable, data) self:SceneCellInit(scrollRect, index, cellTable, data) end function UIViewAssets:OnCellClicked(scrollRect, index, cellTable, target, data) index = index + 1 if scrollRect == self.scroll_Tab1 then self.curTab = index elseif scrollRect == self.scroll_Tab2 then self.curTab2 = index elseif scrollRect == self.scroll_Tab3 then self.curTab3 = index elseif scrollRect == self.scroll_Tab4 then self.curTab4 = index end CTL.ViewAssets.DestroyHook() if scrollRect == self.scroll_Camera then if self.curCameraMode == index then return end self.curCameraMode = index CTL.ViewAssets.SetCameraMode(self.curCameraMode) end if self.lastPsResource then SystemManager.StopPSEffect(LogicUpdateManager._curEntity, self.lastPsResource) self.lastPsResource = nil end self:HeroModelCellClicked(scrollRect, index, cellTable, target, data) self:OtherModelCellClicked(scrollRect, index, cellTable, target, data) self:BuffFXCellClicked(scrollRect, index, cellTable, target, data) self:SkillFXCellClicked(scrollRect, index, cellTable, target, data) self:MissileFXCellClicked(scrollRect, index, cellTable, target, data) self:HookFXCellClicked(scrollRect, index, cellTable, target, data) self:TrackerFXCellClicked(scrollRect, index, cellTable, target, data) self:SceneCellClicked(scrollRect, index, cellTable, target, data) end ---英雄模型 function UIViewAssets:HeroModelCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.HeroModel then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.NameIDS]) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) elseif scrollRect == self.scroll_Tab4 then UIUtils.SetLabel(cellTable.txt_Name, data) end end end function UIViewAssets:HeroModelCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.HeroModel then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, true) self.scroll_Tab2:ReloadAll(self.heroList) self.scroll_Tab4:ReloadAll(AnimKey) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then --英雄名字 local heroModelList = CTL.ViewAssets.GetHeroModelListByHeroID(data.ID) self.scroll_Tab3:ReloadAll(heroModelList) self.scroll_Tab3:SelectIndex(0) elseif scrollRect == self.scroll_Tab3 then --模型 CTL.ViewAssets.SetModel(data.modelID, data.isPVP) elseif scrollRect == self.scroll_Tab4 then --动作 CTL.ViewAssets.PlayAnimation(data) end end end ---其他模型 function UIViewAssets:OtherModelCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.OtherModel then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:OtherModelCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.OtherModel then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.modelCategoryList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.modelCategoryMap[self.modelCategoryList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then --模型 CTL.ViewAssets.SetModel(data.cfg.ID) end end end ---Buff特效 function UIViewAssets:BuffFXCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.BuffFX then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:BuffFXCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.BuffFX then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.buffDataList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.buffDataMap[self.buffDataList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then self.lastPsResource = data.buffResource SystemManager.ShowPSEffect(LogicUpdateManager._curEntity, data.buffResource) end end end ---Skill特效 function UIViewAssets:SkillFXCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.SkillFX then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:SkillFXCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.SkillFX then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.skillDataList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.skillDataMap[self.skillDataList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then self.lastPsResource = data.skillResource SystemManager.ShowPSEffect(LogicUpdateManager._curEntity, data.skillResource) end end end ---子弹特效 function UIViewAssets:MissileFXCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.MissileFX then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:MissileFXCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.MissileFX then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.missileDataList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.missileDataMap[self.missileDataList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then CTL.ViewAssets.PlayMissileEffect(data.psMissileResource, false) end end end ---钩子子弹特效 function UIViewAssets:HookFXCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.HookFX then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:HookFXCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.HookFX then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.hookDataList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.hookDataMap[self.hookDataList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then CTL.ViewAssets.PlayMissileEffect(data.psMissileResource, true) end end end ---追踪弹特效 function UIViewAssets:TrackerFXCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.TrackerFX then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data) elseif scrollRect == self.scroll_Tab3 then UIUtils.SetLabel(cellTable.txt_Name, data.name) end end end function UIViewAssets:TrackerFXCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.TrackerFX then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, true) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ReloadAll(self.trackerDataList) self.scroll_Tab2:SelectIndex(0) elseif scrollRect == self.scroll_Tab2 then self.scroll_Tab3:ReloadAll(self.trackerDataMap[self.trackerDataList[self.curTab2]]) elseif scrollRect == self.scroll_Tab3 then CTL.ViewAssets.PlayMissileEffect(data.psMissileResource, false) end end end ---场景 function UIViewAssets:SceneCellInit(scrollRect, index, cellTable, data) if self.curTab == EnumCategory.Scene then if scrollRect == self.scroll_Tab2 then UIUtils.SetLabel(cellTable.txt_Name, data.ScenePath) end end end function UIViewAssets:SceneCellClicked(scrollRect, index, cellTable, target, data) if self.curTab == EnumCategory.Scene then if scrollRect == self.scroll_Tab1 then UIUtils.SetActive(self.scroll_Tab2, true) UIUtils.SetActive(self.scroll_Tab3, false) UIUtils.SetActive(self.scroll_Tab4, false) self.scroll_Tab2:ClearCells() for k, v in DataSheetManager.LevelInfoData:GetEnumerator() do self.scroll_Tab2:AddData(v, 0) end elseif scrollRect == self.scroll_Tab2 then CTL.ViewAssets.LoadScene(data.LevelID) end end end function UIViewAssets:OnValueChanged(comp, state) if comp == self.slider_Speed then local speed = math.floor((self.maxSpeed - self.minSpeed) * state + self.minSpeed) self.curEntity.components.attr:SetAttrBaseValue(LuaConst.AttrType.spd, speed) UIUtils.SetLabel(self.txt_Speed, speed) end end function UIViewAssets:OnClosed() CTL.ViewAssets.Exit() end return UIViewAssets