forked from endernon/PGRData
191 lines
No EOL
9.1 KiB
Lua
191 lines
No EOL
9.1 KiB
Lua
XUiPanelDeviceUpgradeInfo = XClass(nil, "XUiPanelDeviceUpgradeInfo")
|
|
local table_insert = table.insert
|
|
|
|
function XUiPanelDeviceUpgradeInfo:Ctor(rootUi, ui, type, funcBackUpgarding)
|
|
self.RootUi = rootUi
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
self:InitAutoScript()
|
|
self.CurFuncType = type
|
|
self.FuncBackUpgarding = funcBackUpgarding
|
|
self.UiContentList = {}
|
|
self:SetActive(false)
|
|
self.GridFuncUpgradeInfoItem.gameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo:SetActive(value)
|
|
self.GameObject:SetActive(value)
|
|
end
|
|
-- auto
|
|
-- Automatic generation of code, forbid to edit
|
|
function XUiPanelDeviceUpgradeInfo:InitAutoScript()
|
|
self:AutoInitUi()
|
|
self.SpecialSoundMap = {}
|
|
self:AutoAddListener()
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo:AutoInitUi()
|
|
self.Panel = self.Transform:Find("Panel")
|
|
self.TxtDeviceName = self.Transform:Find("Panel/TxtDeviceName"):GetComponent("Text")
|
|
self.TxtCurLevel = self.Transform:Find("Panel/TxtCurLevel"):GetComponent("Text")
|
|
self.TxtNextLevel = self.Transform:Find("Panel/TxtNextLevel"):GetComponent("Text")
|
|
self.PanelContent = self.Transform:Find("Panel/PanelContent")
|
|
self.GridFuncUpgradeInfoItem = self.Transform:Find("Panel/PanelContent/GridFuncUpgradeInfoItem")
|
|
self.ImgUpgradeCost = self.Transform:Find("GrpUpInfo/ImgUpgradeCost"):GetComponent("Image")
|
|
self.TxtUpgradeCostCount = self.Transform:Find("GrpUpInfo/TxtUpgradeCostCount"):GetComponent("Text")
|
|
self.TxtUpgradeCostTime = self.Transform:Find("GrpUpInfo/TxtUpgradeCostTime"):GetComponent("Text")
|
|
self.BtnUpgrade = self.Transform:Find("GrpUpInfo/BtnUpgrade"):GetComponent("Button")
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo:GetAutoKey(uiNode, eventName)
|
|
if not uiNode then return end
|
|
return eventName .. uiNode:GetHashCode()
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo: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("XUiPanelDeviceUpgradeInfo: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 XUiPanelDeviceUpgradeInfo:AutoAddListener()
|
|
self.AutoCreateListeners = {}
|
|
XUiHelper.RegisterClickEvent(self, self.BtnUpgrade, self.OnBtnUpgradeClick)
|
|
end
|
|
-- auto
|
|
function XUiPanelDeviceUpgradeInfo:OnBtnUpgradeClick()
|
|
local deveice = XDataCenter.HostelManager.GetFunctionDeviceData(self.CurFuncType)
|
|
if not deveice then return end
|
|
local nextConfig = XDataCenter.HostelManager.GetHostelFunctionDeviceLevelTemplate(self.CurFuncType, deveice.Level + 1)
|
|
if not nextConfig then return end
|
|
if nextConfig.CostId > 0 then
|
|
local isItemEnough = XDataCenter.ItemManager.CheckItemCountById(nextConfig.CostId, nextConfig.CostCount)
|
|
if not isItemEnough then
|
|
local itemName = XDataCenter.ItemManager.GetItemName(nextConfig.CostId)
|
|
local text = CS.XTextManager.GetText("HostelDeviceNeedEle", nextConfig.CostCount, itemName)
|
|
XUiManager.TipMsg(text, XUiManager.UiTipType.Tip)
|
|
return
|
|
end
|
|
end
|
|
if nextConfig.ConditionId > 0 then
|
|
local ret, desc = XConditionManager.CheckCondition(nextConfig.ConditionId)
|
|
if not ret then
|
|
XUiManager.TipError(desc)
|
|
return
|
|
end
|
|
end
|
|
XDataCenter.HostelManager.ReqFuncDeviceUpgrade(self.CurFuncType, function()
|
|
--CS.XUiManager.DialogManager:Push("UiHostelDeviceUpgrading", false, false,self.CurFuncType,self.FuncBackUpgarding)
|
|
CS.XUiManager.ViewManager:Pop()
|
|
self.FuncBackUpgarding()
|
|
end)
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo:UpdateView()
|
|
self:SetActive(true)
|
|
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
|
|
self.TxtDeviceName.text = config.Name
|
|
self.TxtCurLevel.text = deveice.Level
|
|
self.TxtNextLevel.text = deveice.Level + 1
|
|
local nextConfig = XDataCenter.HostelManager.GetHostelFunctionDeviceLevelTemplate(self.CurFuncType, deveice.Level + 1)
|
|
if nextConfig then
|
|
self:UpdateFuncDeviceContent(deveice, config, nextConfig)
|
|
if nextConfig.CostId > 0 then
|
|
self.RootUi:SetUiSprite(self.ImgUpgradeCost, XDataCenter.ItemManager.GetItemIcon(nextConfig.CostId))
|
|
self.TxtUpgradeCostCount.text = nextConfig.CostCount
|
|
self.ImgUpgradeCost.gameObject:SetActive(true)
|
|
self.TxtUpgradeCostCount.gameObject:SetActive(true)
|
|
else
|
|
self.ImgUpgradeCost.gameObject:SetActive(false)
|
|
self.TxtUpgradeCostCount.gameObject:SetActive(false)
|
|
end
|
|
local dataTime = XUiHelper.GetTime(nextConfig.CostTime, XUiHelper.TimeFormatType.HOSTEL)
|
|
self.TxtUpgradeCostTime.text = dataTime
|
|
end
|
|
end
|
|
|
|
function XUiPanelDeviceUpgradeInfo:UpdateFuncDeviceContent(deveice, config, nextConfig)
|
|
local datas = {}
|
|
if config.Type == XDataCenter.HostelManager.FunctionDeviceType.PowerStation then
|
|
self:GetPowerStationContent(datas, deveice, config, nextConfig)
|
|
elseif config.Type == XDataCenter.HostelManager.FunctionDeviceType.Factory then
|
|
self:GetFactoryContent(datas, deveice, config, nextConfig)
|
|
end
|
|
|
|
local onCreate = function(item, data)
|
|
item:SetData(data[1], data[2], data[3])
|
|
end
|
|
XUiHelper.CreateTemplates(self.RootUi, self.UiContentList, datas, XUiGridFuncUpgradeInfoItem.New, self.GridFuncUpgradeInfoItem.gameObject, self.PanelContent, onCreate)
|
|
end
|
|
|
|
---发电站内容
|
|
function XUiPanelDeviceUpgradeInfo:GetPowerStationContent(datas, deveice, config, nextConfig)
|
|
local nextsLotData = XDataCenter.HostelManager.CalcDeviceSlotLevel(XDataCenter.HostelManager.FunctionDeviceType.PowerStation, deveice.Level + 1)
|
|
local curSlotData = XDataCenter.HostelManager.GetCurDeviceWorkSlot(XDataCenter.HostelManager.FunctionDeviceType.PowerStation)
|
|
table_insert(datas, { CS.XTextManager.GetText("HostelMaxElectric"), config.FunctionParam[3], nextConfig.FunctionParam[3] })
|
|
table_insert(datas, { CS.XTextManager.GetText("HostelPerElectric"), config.FunctionParam[2] .. "/" .. XUiHelper.GetTimeDesc(config.FunctionParam[1], 1), nextConfig.FunctionParam[2] .. "/" .. XUiHelper.GetTimeDesc(nextConfig.FunctionParam[1], 1) })
|
|
local curWorkEle = 0
|
|
for _, v in ipairs(curSlotData) do
|
|
local slotConfig = XDataCenter.HostelManager.GetFuncDeviceSlotTemplate(v)
|
|
curWorkEle = curWorkEle + slotConfig.FunctionParam[1] * (slotConfig.FunctionParam[4] + config.FunctionParam[4])
|
|
break
|
|
end
|
|
local nextWorkEle = 0
|
|
for _, v in ipairs(nextsLotData) do
|
|
local slotConfig = XDataCenter.HostelManager.GetFuncDeviceSlotTemplate(v)
|
|
nextWorkEle = nextWorkEle + slotConfig.FunctionParam[1] * (slotConfig.FunctionParam[4] + nextConfig.FunctionParam[4])
|
|
break
|
|
end
|
|
|
|
table_insert(datas, { CS.XTextManager.GetText("HostelWorkElectric"), CS.XTextManager.GetText("HostelPerSlot", curWorkEle), CS.XTextManager.GetText("HostelPerSlot", nextWorkEle) })
|
|
table_insert(datas, { CS.XTextManager.GetText("HostelWorkSlot"), #curSlotData, #nextsLotData })
|
|
end
|
|
--发电站内容
|
|
--工厂内容
|
|
function XUiPanelDeviceUpgradeInfo:GetFactoryContent(datas, deveice, config, nextConfig)
|
|
local nextsLotData = XDataCenter.HostelManager.CalcDeviceSlotLevel(XDataCenter.HostelManager.FunctionDeviceType.Factory, deveice.Level + 1)
|
|
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
|
|
|
|
local nextWorkProduct = {}
|
|
for _, v in ipairs(nextsLotData) do
|
|
local slotConfig = XDataCenter.HostelManager.GetFuncDeviceSlotTemplate(v)
|
|
local Id = slotConfig.FunctionParam[3]
|
|
if not nextWorkProduct[Id] then
|
|
nextWorkProduct[Id] = slotConfig.FunctionParam[4] + nextConfig.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), CS.XTextManager.GetText("HostelPerSlot", nextWorkProduct[Id] or 0) })
|
|
end
|
|
|
|
table_insert(datas, { CS.XTextManager.GetText("HostelWorkSlot"), #curSlotData, #nextsLotData })
|
|
end |