| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- local UITitleListView = require("UITitle/UITitleListView_Generate")
- local TitleListItemCtr = require("Common/TitleListItemCtr")
- local TitleTypeList,TitleDataList
- local SortRuleList = {4,2,1,3}
- local currToggle = 0
- local lastToggle = -1
- function UITitleListView:OnAwake(data)
- self.controller = require("UITitle/UITitleListCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UITitleListView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_TITLE_CHANGE, self, self.OnTitleDataChange)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TITLE_ACTIVE_REDPOINT_NOTICE, self, self.ToggleRedPointNotice)
- end
- function UITitleListView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UITitleListView:GetShowItemByIdx(idx)
- local item = self.toggleList.loopGridView:GetShownItemByItemIndex(idx)
- if item then
- local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "ToggleItem", item.gameObject)
- return itemlua
- end
- end
- function UITitleListView:RefreshTitleEndTime()
- self.titleList.loopGridView:RefreshListByIndex(TitleDataList and #TitleDataList or 0)
- end
- function UITitleListView:OnTitleDataChange(changeData)
- for i = 1, #TitleDataList do
- local id = TitleDataList[i].titleId
- if changeData[id] then
- TitleDataList[i] = changeData[id]
- end
- end
- self.titleList.loopGridView:RefreshListByIndex(TitleDataList and #TitleDataList or 0)
- if self.timer and self.timer.running then
- self.timer:Stop()
- end
- if not self.timer then
- self.timer = Timer.New(slot(self.RefreshTitleEndTime, self), 3600,-1)
- end
- if not self.timer.running then
- self.timer:Start()
- end
- end
- function UITitleListView:ToggleRedPointNotice()
- local redPointList = ManagerContainer.DataMgr.TitleData:GetTitleRedPointList()
- for i = 0, self.toggleContent.transform.childCount - 1 do
- local item = self.toggleContent.transform:GetChild(i)
- local parent = item
- local redPoint = parent:Find("redPoint")
- if redPoint then
- redPoint.gameObject:SetActive(redPointList[i])
- else
- if redPointList[i] then
- self:CreateRP(parent, redPoint, "redPoint", "Common/UIRedPointRP")
- end
- end
- end
- if redPointList and #redPointList > 0 then
- for i = 1, #redPointList do
- local itemLua = self:GetShowItemByIdx(i - 1)
- if not itemLua then
- return
- end
- local parent = itemLua.transform
- local redPoint = parent:Find("redPoint")
- if redPoint then
- redPoint.gameObject:SetActive(redPointList[i])
- else
- if redPointList[i] then
- self:CreateRP(parent, redPoint, "redPoint", "Common/UIRedPointRP")
- end
- end
- end
- end
- end
- function UITitleListView:CreateRP(parent, redPoint, name, path)
- local go = ManagerContainer.ResMgr:GetGoFromPool(Constants.UIPath, path)
- if go then
- redPoint = go.transform
- redPoint:SetParent(parent)
- redPoint.localRotation = Quaternion.identity
- redPoint.localScale = Vector3.one
- local rectTransform = redPoint:GetComponent(Enum.TypeInfo.RectTransform)
- rectTransform.anchoredPosition3D = Vector3(90, 35, 0)
- go.name = name
- end
- end
- function UITitleListView:Init()
- local time = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
- TitleTypeList = ManagerContainer.DataMgr.TitleData:GetTitleTypeList()
- local idx = self.controller:GetData()
- currToggle = idx and idx - 1 or 0
- lastToggle = -1
- local TitleDic = ManagerContainer.DataMgr.TitleData:GetTitleDataByType(currToggle + 1)
- TitleDataList = self:SortTitleData(TitleDic)
- self.titleList.scrollRect.enabled = false
- self.toggleList.scrollRect.enabled = false
- self.titleList.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
- return self:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
- end, nil)
- self.toggleList.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
- return self:GetToggleItemByRowColumn(gridView, itemIndex, row, column)
- end, nil)
- self.titleList.loopGridView:RefreshListByIndex(TitleDataList and #TitleDataList or 0,0)
- self.toggleList.loopGridView:RefreshListByIndex(TitleTypeList and #TitleTypeList or 0,0)
- self:ToggleRedPointNotice()
- if self.timer and self.timer.running then
- self.timer:Stop()
- end
- if not self.timer then
- self.timer = Timer.New(slot(self.RefreshTitleEndTime, self), 3600,-1)
- end
- if not self.timer.running then
- self.timer:Start()
- end
- end
- function UITitleListView:OnPageInEnd()
- self.super.OnPageInEnd(self)
- self.titleList.scrollRect.enabled = true
- self.toggleList.scrollRect.enabled = true
- end
- function UITitleListView:GetToggleItemByRowColumn(gridView, itemIndex, row, column)
- local item = nil
- item = gridView:NewListViewItem('ToggleItem')
- local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'ToggleItem', item.gameObject)
- self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnChangeToggleBtnClick, itemIndex)
- itemLua.on:SetActive(currToggle == itemIndex)
- itemLua.label.text.text = I18N.SetLanguageValue('TitleType_'..TitleTypeList[itemIndex + 1])
- local redPointList = ManagerContainer.DataMgr.TitleData:GetTitleRedPointList()
- local parent = itemLua.transform
- local redPoint = parent:Find("redPoint")
- if redPoint then
- redPoint.gameObject:SetActive(redPointList[itemIndex + 1])
- else
- if redPointList[itemIndex + 1] then
- self:CreateRP(parent, redPoint, "redPoint", "Common/UIRedPointRP")
- end
- end
- return item
- end
- function UITitleListView:OnChangeToggleBtnClick(button, params)
- local idx = params[0]
- if button then
- lastToggle = currToggle
- currToggle = idx
- self:Refresh(idx)
- end
- end
- function UITitleListView:Refresh(idx)
- if idx == lastToggle then
- return
- end
- local itemLua = self:GetShowItemByIdx(lastToggle)
- if itemLua then
- itemLua.on:SetActive(false)
- end
- local CurritemLua = self:GetShowItemByIdx(idx)
- if CurritemLua then
- CurritemLua.on:SetActive(true)
- end
- local TitleDic = ManagerContainer.DataMgr.TitleData:GetTitleDataByType(idx + 1)
- TitleDataList = self:SortTitleData(TitleDic)
- self.titleList.loopGridView:RefreshListByIndex(TitleDataList and #TitleDataList or 0,0)
- end
- function UITitleListView:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
- local item = nil
- item = gridView:NewListViewItem('TitleListItem')
- local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'TitleListItem', item.gameObject)
- TitleListItemCtr:SetData(self,itemLua,TitleDataList[itemIndex + 1])
- return item
- end
- function UITitleListView:OnPageInEnd()
- self.super.OnPageInEnd(self)
- self.titleList.scrollRect.enabled = true
- self.toggleList.scrollRect.enabled = true
- end
- function UITitleListView:OnBtnEquipClick(button,params)
- local param = params[0]
- self.controller:SendTitleOperateReq(2,param.titleId)
- end
- function UITitleListView:OnBtnActiveClick(button,params)
- local param = params[0]
- self.controller:SendTitleOperateReq(1,param.titleId)
- end
- function UITitleListView:OnBtnRemoveClick(button,params)
- local param = params[0]
- self.controller:SendTitleOperateReq(3,param.titleId)
- end
- function UITitleListView:SortTitleData(data)
- local titleList = {}
- for k, v in pairs(data) do
- table.insert(titleList,v)
- end
- table.sort(titleList,function(a,b)
- local titleDataA = ManagerContainer.CfgMgr:GetDesignationCfgById(a.titleId)
- local titleDataB = ManagerContainer.CfgMgr:GetDesignationCfgById(b.titleId)
- if SortRuleList[a.state] == SortRuleList[b.state] then
- if titleDataA.Sort == titleDataB.Sort then
- return a.titleId < b.titleId
- else
- return titleDataA.Sort > titleDataB.Sort
- end
- else
- return SortRuleList[a.state] < SortRuleList[b.state]
- end
- end)
- return titleList
- end
- function UITitleListView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UITitleListView:AddUIEventListener()
- self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
- self.uiBase:AddButtonUniqueEventListener(self.allAtrBtn.button, self, self.OnClickTotalAttrBtn)
- end
- function UITitleListView:OnClickTotalAttrBtn()
- local baseAttrs = {}
- local val = GlobalConfig.Instance:GetConfigStrValue(333)
- if val ~= "" and val ~= nil then
- local attrsTable = CommonUtil.DeserializeGlobalStrToNumberTable(val)
- for i = 1, #attrsTable do
- table.insert(baseAttrs,{attrsTable[i],0})
- end
- end
- local activeTitleList = ManagerContainer.DataMgr.TitleData:GetAllActiveTitleListAttrs()
- for i = 1, #baseAttrs do
- if activeTitleList[baseAttrs[i][1]] then
- baseAttrs[i][2] = activeTitleList[baseAttrs[i][1]]
- end
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIFashionTotal,{title="TitleTotalProperty", attrs=baseAttrs})
- end
- function UITitleListView:OnClickCloseBtn()
- self:UIClose()
- end
- function UITitleListView:OnHide()
- end
- function UITitleListView:OnShow(data)
- self.controller:SetData(data)
- end
- function UITitleListView:OnClose()
- if self.timer and self.timer.running then
- self.timer:Stop()
- end
- end
- function UITitleListView:OnDispose()
- self.toggleList.loopGridView:Dispose()
- self.titleList.loopGridView:Dispose()
- self.controller:OnDispose()
- end
- return UITitleListView
|