local XUiDrawRule = XLuaUiManager.Register(XLuaUi, "UiDrawRule") local prob = require("XUi/XUiDraw/XUiPanelProbability") function XUiDrawRule:OnAwake() self:InitAutoScript() end function XUiDrawRule:OnStart(drawId, closeCb) self.PanelProbability.gameObject:SetActive(false) self.CloseCb = closeCb self:SetData(drawId) end function XUiDrawRule:SetData(drawId) local groupId = XDataCenter.DrawManager.GetDrawInfo(drawId).GroupId local rules = XDataCenter.DrawManager.GetDrawGroupRule(groupId).BaseRules local rule = rules[1] for i = 2, #rules do rule = rule .. "\n" .. rules[i] end self.TxtRule.text = rule if not self.Probs then self.Probs = {} end local list = XDataCenter.DrawManager.GetDrawProb(drawId) if not list then return end for i = 1, #list do if not self.Probs[i] then local go = CS.UnityEngine.Object.Instantiate(self.PanelProbability, self.PanelDetailContent) local item = prob.New(go, self) table.insert(self.Probs, item) end self.Probs[i]:SetData(list[i]) self.Probs[i]:SetActive(true) end if #list < #self.Probs then for i = #list + 1, #self.Probs do self.Probs[i]:SetActive(false) end end end function XUiDrawRule:SetActive(bool) self.GameObject:SetActive(bool) end -- auto -- Automatic generation of code, forbid to edit function XUiDrawRule:InitAutoScript() self:AutoInitUi() self.SpecialSoundMap = {} self:AutoAddListener() end function XUiDrawRule:AutoInitUi() -- self.BtnClose = self.Transform:Find("SafeAreaContentPane/BtnClose"):GetComponent("Button") -- self.PanelRule = self.Transform:Find("SafeAreaContentPane/PanelRule") -- self.PanelDetailContent = self.Transform:Find("SafeAreaContentPane/PanelRule/PnlScrollView/PnlViewport/PanelDetailContent") -- self.TxtRule = self.Transform:Find("SafeAreaContentPane/PanelRule/PnlScrollView/PnlViewport/PanelDetailContent/TxtRule"):GetComponent("Text") -- self.PanelProbability = self.Transform:Find("SafeAreaContentPane/PanelRule/PnlScrollView/PnlViewport/PanelDetailContent/PanelProbability") end function XUiDrawRule:GetAutoKey(uiNode, eventName) if not uiNode then return end return eventName .. uiNode:GetHashCode() end function XUiDrawRule: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("XUiDrawRule: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 XUiDrawRule:AutoAddListener() self.AutoCreateListeners = {} self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick) end -- auto function XUiDrawRule:OnBtnCloseClick() if self.Closed then return end self.Closed = true end