| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- local UIForge1View = require("UIForge/UIForge1View_Generate")
- local itemType, jobType
- local isFirst = true
- local equipDatas
- local pageToggleData = {}
- local frameTimer
- local vec = Vector2(-710,0)
- function UIForge1View:OnAwake(data)
- self.controller = require("UIForge/UIForge1Ctr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIForge1View:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EQUIP_FORGE_SUCCESS, function(type)
- --if type == 1 then
- -- self:Refresh(true)
- --else
- -- self:UIClose()
- --end
- self:Refresh(true)
- end)
- end
- function UIForge1View: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 UIForge1View:Init()
- self:InitGridView()
- --self:InitToggles()
- --self:InitEquips()
- end
- function UIForge1View:InitGridView()
- local loopGridViewInitParam = SuperScrollView.LoopGridViewInitParam.CopyDefaultInitParam()
- loopGridViewInitParam.mSnapVecThreshold = 9999
- self.scrollView.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
- return self:LoopGridUpdate(gridView, itemIndex, row, column)
- end, nil, nil, loopGridViewInitParam)
- local data = self.controller:GetData()
- local idx = data and data[1] or 1
- for k, v in pairs(Enum.EquipForgeType) do
- local item
- if self.toggleGroup.transform.childCount >= k then
- item = self.toggleGroup.transform:GetChild(k - 1)
- else
- local toggle = UnityEngine.GameObject.Instantiate(self.toggle)
- item = toggle.transform
- item:SetParent(self.toggleGroup.transform)
- item.localPosition = Vector3.zero
- end
- local txt = item:Find("Txt"):GetComponent(Enum.TypeInfo.UILocalizeScript)
- txt:SetContent(v[2])
- item.localScale = Vector3.one
- item.gameObject:SetActive(true)
- local toggle = item:GetComponent(Enum.TypeInfo.Toggle)
- if k == idx then
- toggle.isOn = true
- end
- self.uiBase:AddToggleEventListener(toggle, self, self.ChangeViewPage, k)
- end
- local groupRect =self.toggleGroup:GetComponent(Enum.TypeInfo.RectTransform)
- groupRect.anchoredPosition = data[1] < 6 and Vector2.zero or vec
- self:ChangeViewPage(nil, data[1])
- --CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.ChangeViewPage)
- end
- function UIForge1View:InitToggles()
- local data = self.controller:GetData()
- if data ~= nil then
- self.toggleScrollView.loopGridView:MovePanelToItemByIndex(data[1] - 1)
- else
- self.toggleScrollView.loopGridView:MovePanelToItemByIndex(0)
- end
- --self.toggleScrollView.loopGridView:RefreshAllShownItem()
- end
- function UIForge1View:LoopToggleGridUpdate(gridView, itemIndex, row, column)
- local data = self.controller:GetData()
- local item = gridView:NewListViewItem(self.toggle.name)
- local txt = item.transform:Find("Txt"):GetComponent(Enum.TypeInfo.UILocalizeScript)
- txt:SetContent(Enum.EquipForgeType[itemIndex + 1][2])
- local toggle = item:GetComponent(Enum.TypeInfo.Toggle)
- if pageToggleData.toggleDefaultIndex ~= itemIndex + 1 then
- toggle.isOn = false
- end
- return item
- end
- function UIForge1View:ChangeType(toggle, data, result)
- CommonUtil.CloseUIClearAsyncSeqIds(self)
- if result then
- self.controller:SetData(data)
- if isFirst then
- isFirst = false
- self:InitEquips()
- else
- self.scrollView.loopGridView:RecycleAllItem()
- CommonUtil.ClearGridViewItem(self, Enum.PrefabNames.EquipComposeItem)
- self:Refresh()
- end
- end
- end
- function UIForge1View:ChangeViewPage(toggle, idx)
- local data = Enum.EquipForgeType[idx]
- self.controller:SetData(data)
- if isFirst then
- isFirst = false
- self:InitEquips()
- else
- self.scrollView.loopGridView:RecycleAllItem()
- CommonUtil.ClearGridViewItem(self, Enum.PrefabNames.EquipComposeItem)
- self:Refresh()
- end
- end
- function UIForge1View:InitEquips()
- local data = self.controller:GetData()
- itemType = data[3]
- if itemType == Enum.SlotEquipType.Weapon then
- jobType = data[1]
- else
- jobType = nil
- end
- local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
- equipDatas = ManagerContainer.CfgMgr:GetAllEquipDatasByTypeAndJob1(itemType, jobType)
- local minIdx = 0
- for i = 1,#equipDatas do
- local equipCfgData1 = ManagerContainer.CfgMgr:GetEquipById(equipDatas[i].Id)
- local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[i].Id)
- local count = 0
- if logicData ~= nil then
- count = logicData.num
- end
- local canCompose = ownedCoin >= equipCfgData1.CostMoney and count >= 3
- if i < #equipDatas then
- if canCompose and minIdx == 0 then
- minIdx = i - 1
- end
- end
- end
- self.scrollView.loopGridView:SetListItemCount(#equipDatas, true)
- if minIdx > -1 then
- self.scrollView.loopGridView:MovePanelToItemByIndex(minIdx)
- end
- end
- function UIForge1View:Refresh(needRefresh)
- local data = self.controller:GetData()
- itemType = data[3]
- if itemType == Enum.SlotEquipType.Weapon then
- jobType = data[1]
- else
- jobType = nil
- end
- local ownedCoin = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.Coin)
- equipDatas = ManagerContainer.CfgMgr:GetAllEquipDatasByTypeAndJob1(itemType, jobType)
- local minIdx = 0
- for i = 1,#equipDatas do
- local equipCfgData1 = ManagerContainer.CfgMgr:GetEquipById(equipDatas[i].Id)
- local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[i].Id)
- local count = 0
- if logicData ~= nil then
- count = logicData.num
- end
- local canCompose = ownedCoin >= equipCfgData1.CostMoney and count >= 3
- if i < #equipDatas then
- if canCompose and minIdx == 0 then
- minIdx = i - 1
- end
- end
- end
- self.scrollView.loopGridView:SetListItemCount(#equipDatas)
- self.scrollView.loopGridView:FinishSnapImmediately()
- if minIdx > -1 then
- self.scrollView.loopGridView:MovePanelToItemByIndex(minIdx)
- end
- if needRefresh then
- self.scrollView.loopGridView:RefreshAllShownItem()
- end
- end
- function UIForge1View:LoopGridUpdate(gridView, itemIndex, row, column)
- local item = gridView:NewListViewItem(Enum.PrefabNames.EquipComposeItem)
- item.gameObject.name = itemIndex
- local itemLua = CommonUtil.BindGridViewItem2Lua(self, Enum.PrefabNames.EquipComposeItem, item.gameObject)
- local logicData = ManagerContainer.DataMgr.EquipData:GetEquipDataMapById(equipDatas[itemIndex + 1].Id)
- local count = 0
- if logicData ~= nil then
- count = logicData.num
- end
- local data = {cfgId = equipDatas[itemIndex + 1].Id, num = count}
- CommonUtil.UpdateItemPrefab(self, itemLua, data, Enum.ItemIEnterType.EquipForge, self, self.OnEquipCompose)
- return item
- end
- function UIForge1View:OnEquipCompose(button, params)
- local logicData = params[0]
- self.controller:SendEquipForge(logicData.cfgId, logicData.curForgeCount)
- end
- function UIForge1View:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIForge1View:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- --CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.ChangeViewPage)
- self.uiBase:AddButtonEventListener(self.btnClose.button, function()
- self:UIClose()
- end)
- self.uiBase:AddButtonEventListener(self.AnyBtn.button, function()
- self:UIHide()
- end)
- self.uiBase:AddButtonEventListener(self.btnOneKey.button, function()
- local list, totalCost, noMate, coinLack = ManagerContainer.DataMgr.EquipData:GetAllCanForgeEquipIds(itemType, jobType)
- if coinLack or coinLack == nil then
- CommonUtil.ItemNotEnoughHandle(Enum.ItemType.Coin)
- return
- end
- if noMate or noMate == nil then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(Enum.ActionNotiveType.MetaLack)
- return
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIForgePop, {list, CommonUtil.FormatNumber(totalCost), itemType, jobType})
- end)
- end
- function UIForge1View:OnHide()
- end
- function UIForge1View:OnShow(data)
- --self.controller:SetData(data)
- --self:Init()
- end
- function UIForge1View:OnClose()
- end
- function UIForge1View:OnDispose()
- self.scrollView.loopGridView:Dispose()
- end
- return UIForge1View
|