PGRData/Script/matrix/xui/xuihosteldevicedetail/XUiHostelDeviceDetail.lua

204 lines
No EOL
10 KiB
Lua

local XUiHostelDeviceDetail = XLuaUiManager.Register(XLuaUi, "UiHostelDeviceDetail")
local table_insert = table.insert
-- auto
-- Automatic generation of code, forbid to edit
function XUiHostelDeviceDetail:InitAutoScript()
self:AutoInitUi()
self.SpecialSoundMap = {}
self:AutoAddListener()
end
function XUiHostelDeviceDetail:AutoInitUi()
self.PanelCharTopButton = self.Transform:Find("SafeAreaContentPane/PanelCharTopButton")
self.BtnBack = self.Transform:Find("SafeAreaContentPane/PanelCharTopButton/BtnBack"):GetComponent("Button")
self.BtnMainUi = self.Transform:Find("SafeAreaContentPane/PanelCharTopButton/BtnMainUi"):GetComponent("Button")
self.PanelDeviceUpgradeInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeInfo")
self.PanelDeviceUpgradeMain = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain")
self.PanelBtnInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelBtnInfo")
self.BtnShowInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelBtnInfo/BtnShowInfo"):GetComponent("Button")
self.PanelSysInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysInfo")
self.PanelFixInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysInfo/PanelFixInfo")
self.TxtFunctionDeviceName = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysInfo/PanelFixInfo/TxtFunctionDeviceName"):GetComponent("Text")
self.PanelFunctionContent = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysInfo/PanelFunctionContent")
self.GridFunctionContenItem = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysInfo/PanelFunctionContent/GridFunctionContenItem")
self.PanelSysDes = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysDes")
self.TxtSysDes = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/ContentInfo/PanelSysDes/TxtSysDes"):GetComponent("Text")
self.PanelUpInfo = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelUpInfo")
self.ImgCost = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelUpInfo/ImgCost"):GetComponent("Image")
self.TxtCostCount = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelUpInfo/TxtCostCount"):GetComponent("Text")
self.TxtCostTime = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/PanelUpInfo/TxtCostTime"):GetComponent("Text")
self.BtnIntoUpgrade = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/BtnIntoUpgrade"):GetComponent("Button")
self.BtnQuest = self.Transform:Find("SafeAreaContentPane/PanelDeviceUpgradeMain/BtnQuest"):GetComponent("Button")
self.PanelAsset = self.Transform:Find("SafeAreaContentPane/PanelAsset")
self.PanelTool1 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool1")
self.ImgTool1 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool1/ImgTool1"):GetComponent("Image")
self.TxtTool1 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool1/TxtTool1"):GetComponent("Text")
self.PanelTool2 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool2")
self.ImgTool2 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool2/ImgTool2"):GetComponent("Image")
self.TxtTool2 = self.Transform:Find("SafeAreaContentPane/PanelAsset/PanelTool2/TxtTool2"):GetComponent("Text")
self.ImgBg = self.Transform:Find("FullScreenBackground/ImgBg"):GetComponent("Image")
end
function XUiHostelDeviceDetail:GetAutoKey(uiNode, eventName)
if not uiNode then return end
return eventName .. uiNode:GetHashCode()
end
function XUiHostelDeviceDetail:RegisterListener(uiNode, eventName, func)
local key = self:GetAutoKey(uiNode, eventName)
if not key then return end
local listener = self.AutoCreateListeners[key]
if listener ~= nil then
uiNode[eventName]:RemoveListener(listener)
end
if func ~= nil then
if type(func) ~= "function" then
XLog.Error("XUiHostelDeviceDetail:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
listener = function(...)
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key], eventName)
func(self, ...)
end
uiNode[eventName]:AddListener(listener)
self.AutoCreateListeners[key] = listener
end
end
function XUiHostelDeviceDetail:AutoAddListener()
self.AutoCreateListeners = {}
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
self:RegisterClickEvent(self.BtnShowInfo, self.OnBtnShowInfoClick)
self:RegisterClickEvent(self.BtnIntoUpgrade, self.OnBtnIntoUpgradeClick)
self:RegisterClickEvent(self.BtnQuest, self.OnBtnQuestClick)
end
-- auto
function XUiHostelDeviceDetail:OnOpen(type, deveiceObj, fCloseCallBack)
self:InitAutoScript()
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.HostelElectric, XDataCenter.ItemManager.ItemId.HostelMat)
self.GridFunctionContenItem.gameObject:SetActive(false)
self.UiContentList = {}
self.CurFuncType = type
self.FCloseCallBack = fCloseCallBack
local funcBackUpgarding = function()
XHomeSceneManager.ChangeBackToOverView()
XHomeInfrastructureManager.ChangeCameraToScene()
end
self.PanelUpgardeInfo = XUiPanelDeviceUpgradeInfo.New(self, self.PanelDeviceUpgradeInfo, type, funcBackUpgarding)
self.PanelUpgardeInfo:SetActive(false)
self.ImgBg.gameObject:SetActive(false)
self:UpdateView()
end
function XUiHostelDeviceDetail:OnBtnBackClick()
if self.PanelUpgardeInfo.GameObject.activeSelf then
self.PanelUpgardeInfo:SetActive(false)
self.ImgBg.gameObject:SetActive(false)
self.PanelDeviceUpgradeMain.gameObject:SetActive(true)
else
self.FCloseCallBack()
CS.XUiManager.ViewManager:Pop()
end
end
function XUiHostelDeviceDetail:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiHostelDeviceDetail:UpdateView()
local deveice = XDataCenter.HostelManager.GetFunctionDeviceData(self.CurFuncType)
if not deveice then return end
local config = XDataCenter.HostelManager.GetHostelFunctionDeviceLevelTemplate(self.CurFuncType, deveice.Level)
if not config then return end
if config.Type == XDataCenter.HostelManager.FunctionDeviceType.MainComputer then
self.BtnQuest.gameObject:SetActive(false)
else
self.BtnQuest.gameObject:SetActive(true)
end
self:UpdateFuncDeviceContent(deveice, config)
local rectTf = self.PanelBtnInfo.gameObject:GetComponent("RectTransform")
local width = rectTf.sizeDelta.x
rectTf.sizeDelta = CS.UnityEngine.Vector2(width, 110 + #self.UiContentList * 65)
self.TxtFunctionDeviceName.text = config.Name
self.TxtSysDes.text = config.Des
local nextConfig = XDataCenter.HostelManager.GetHostelFunctionDeviceLevelTemplate(self.CurFuncType, deveice.Level + 1)
if not nextConfig then
self.PanelUpInfo.gameObject:SetActive(false)
self.BtnIntoUpgrade.gameObject:SetActive(false)
else
self.PanelUpInfo.gameObject:SetActive(true)
self.BtnIntoUpgrade.gameObject:SetActive(true)
if nextConfig.CostId > 0 then
self:SetUiSprite(self.ImgCost, XDataCenter.ItemManager.GetItemIcon(nextConfig.CostId))
self.TxtCostCount.text = nextConfig.CostCount
self.ImgCost.gameObject:SetActive(true)
self.TxtCostCount.gameObject:SetActive(true)
else
self.ImgCost.gameObject:SetActive(false)
self.TxtCostCount.gameObject:SetActive(false)
end
local dataTime = XUiHelper.GetTime(nextConfig.CostTime, XUiHelper.TimeFormatType.HOSTEL)
self.TxtCostTime.text = dataTime
end
end
function XUiHostelDeviceDetail:UpdateFuncDeviceContent(deveice, config)
local datas = {}
table_insert(datas, { CS.XTextManager.GetText("HostelDeviceLevel"), deveice.Level })
if config.Type == XDataCenter.HostelManager.FunctionDeviceType.PowerStation then
self:GetPowerStationContent(datas, config)
elseif config.Type == XDataCenter.HostelManager.FunctionDeviceType.Factory then
self:GetFactoryContent(datas, config)
end
local onCreate = function(item, data)
item:SetData(data[1], data[2])
end
XUiHelper.CreateTemplates(self, self.UiContentList, datas, XUiGridFunctionContenItem.New, self.GridFunctionContenItem.gameObject, self.PanelFunctionContent, onCreate)
end
--发电站
function XUiHostelDeviceDetail:GetPowerStationContent(datas, config)
table_insert(datas, { CS.XTextManager.GetText("HostelMaxElectric"), config.FunctionParam[3] })
table_insert(datas, { CS.XTextManager.GetText("HostelPerElectric"), config.FunctionParam[2] .. "/" .. XUiHelper.GetTimeDesc(config.FunctionParam[1], 1) })
end
--发电站
--工厂
function XUiHostelDeviceDetail:GetFactoryContent(datas, config)
local curSlotData = XDataCenter.HostelManager.GetCurDeviceWorkSlot(XDataCenter.HostelManager.FunctionDeviceType.Factory)
local curWorkProduct = {}
for _, v in ipairs(curSlotData) do
local slotConfig = XDataCenter.HostelManager.GetFuncDeviceSlotTemplate(v)
local Id = slotConfig.FunctionParam[3]
if not curWorkProduct[Id] then
curWorkProduct[Id] = slotConfig.FunctionParam[4] + config.FunctionParam[1]
end
end
for Id, count in pairs(curWorkProduct) do
table_insert(datas, { CS.XTextManager.GetText("HostelSlotProduct", XDataCenter.ItemManager.GetItemName(Id)), CS.XTextManager.GetText("HostelPerSlot", count) })
end
end
function XUiHostelDeviceDetail:OnBtnShowInfoClick()
local active = self.PanelSysDes.gameObject.activeSelf
self.PanelSysDes.gameObject:SetActive(not active)
end
function XUiHostelDeviceDetail:OnBtnIntoUpgradeClick()
self.PanelUpgardeInfo:SetActive(true)
self.ImgBg.gameObject:SetActive(true)
self.PanelUpgardeInfo:UpdateView()
self.PanelDeviceUpgradeMain.gameObject:SetActive(false)
end
function XUiHostelDeviceDetail:OnBtnQuestClick()
end