| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- local UIPetAdvenceView = require("UIPet/UIPetAdvenceView_Generate")
- local PetMatsGridView = require("UIPet/PetMatsGridView")
- local petMatsGridView
- local zenyLack = false
- function UIPetAdvenceView:OnAwake(data)
- self.controller = require("UIPet/UIPetAdvenceCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIPetAdvenceView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PET_ADVENCE_REFRESH_NTF, self, self.OnAdvenceCallBackNtf)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
- end
- function UIPetAdvenceView: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 UIPetAdvenceView:Init()
- if not petMatsGridView then
- petMatsGridView = PetMatsGridView:new()
- petMatsGridView:Init(Enum.ItemIEnterType.PetMats, self, self.mats.loopGridView)
- end
- self:RefreshConditionDsc()
- self:Refresh()
- end
- function UIPetAdvenceView:Refresh(resetPos)
- if petMatsGridView then
- petMatsGridView:Refresh(resetPos)
- end
- self:RefreshSelections()
- self:RefreshAttrs()
- self:RefreshCost()
- end
- function UIPetAdvenceView:RefreshSelections()
- local selections = self.controller:GetSelections()
- for i = 1, 3 do
- local selection = selections[i]
- local item = self["item"..i]
- item.owned:SetActive(selection ~= nil)
- item.unowned:SetActive(selection == nil)
- if selection then
- local petData = self.controller:GetSelectionPetData(selection)
- CommonUtil.UpdateItemPrefab(self, item.iconPetItem, petData, Enum.ItemIEnterType.Pet, self, self.OnRemoveMatClick)
- end
- end
- local petData = clone(self.controller:GetSelectionPetData(selections[1]))
- petData.advanceLevel = petData.advanceLevel + 1
- petData.selected = 0
- CommonUtil.UpdateItemPrefab(self, self.item4.iconPetItem, petData, Enum.ItemIEnterType.Pet)
- end
- function UIPetAdvenceView:OnRemoveMatClick(button, params)
- local petData = params[0]
- if petData.id == self.controller:GetData() then
- return
- end
- self:RemoveMat(petData)
- self:RefreshSelections()
- end
- function UIPetAdvenceView:RemoveMat(data, itemlua)
- self.controller:RemoveSelection(data.selected)
- if itemlua then
- itemlua.selected:SetActive(false)
- else
- local data1 = self.controller:GetPetDataById(data.id)
- if data1 then
- local itemlua = petMatsGridView:GetShowItemByIdx(data1.idx)
- if itemlua then
- itemlua.selected:SetActive(false)
- end
- end
- end
- end
- function UIPetAdvenceView:RefreshConditionDsc()
- local id = self.controller:GetData()
- local curPetData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
- local curPetCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(curPetData.cfgId)
- local nextAdvenceLv = curPetData.advanceLevel + 1
- local condition = curPetCfgData["Condition"..nextAdvenceLv.."1"]
- if condition then
- local typeDsc, advenceDsc, natureDsc
- local typeNum, advenceNum, natureNum
- for k,v in pairs(condition) do
- local type = v[1]
- local num = v[2]
- if type == Enum.PetRelationConditionType.Type then
- typeDsc = type
- typeNum = num
- elseif type == Enum.PetRelationConditionType.Advence then
- advenceDsc = type
- advenceNum = num
- elseif type == Enum.PetRelationConditionType.Nature then
- natureDsc = type
- natureNum = num
- end
- end
- local content = ""
- if typeDsc then
- if typeNum == 1 then
- content = content .. "Normal"
- elseif typeNum == 2 then
- content = content.. "Mini"
- elseif typeNum == 3 then
- content = content .. "Mvp"
- end
- end
- if advenceDsc then
- content = content .. I18N.SetLanguageValue("Petadfetter_002", advenceNum)
- end
- if natureDsc then
- content = content .. I18N.SetLanguageValue("Petadfetter_003", I18N.T("RoleFilter"..natureNum))
- end
- if curPetData.advanceLevel >= 5 then
- self.dsc.uILocalizeScript:SetContent("Petadvance_007")
- else
- self.dsc.uILocalizeScript:SetContentAndValues("Petadvance_004", {content})
- end
- end
- end
- function UIPetAdvenceView:RefreshAttrs()
- local id = self.controller:GetData()
- local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
- local petProgressCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(petData.cfgId)
- local nextAdvenceLv = petData.advanceLevel + 1
- local data = petProgressCfgData["Attribute"..(nextAdvenceLv)]
- if data == nil then
- LogError(logicData.configId.." 宠物进阶 "..nextAdvenceLv.." 进阶属性错误")
- return
- end
- local curMaxLv, nextMaxLv = self.controller:GetCurAdvenceMaxLv()
- --self.attrs.lVLimit.text.text.text = I18N.T("LVLimit")
- self.attrs.lVLimit.number1.text.text = curMaxLv
- self.attrs.lVLimit.number2.text.text = nextMaxLv
- self.attrs.lVLimit:SetActive(true)
- local idx = 0
- for i = 1, 5 do
- local v = data[i]
- idx = idx + 1
- local attr = self.attrs["attr"..idx]
- attr:SetActive(v ~= nil)
- if attr and v then
- local key = v[1]
- local val = self.controller:GetCurPetAttr(key)
- if val then
- val = SDataUtil.InvConvert(val)
- attr.text.text.text = I18N.T("Attr_" .. v[1])
- val = key > 21 and CommonUtil.GetPreciseDecimal(val, 3) or math.floor(val)
- local val1 = key > 21 and CommonUtil.GetPreciseDecimal(v[2]*0.0001, 3) or math.floor(v[2])
- attr.number1.text.text = CommonUtil.HeroAttrFormatValue(key, val, true)
- attr.number2.text.text = CommonUtil.HeroAttrFormatValue(key, val + val1, true)
- end
- end
- end
- end
- function UIPetAdvenceView:RefreshCost()
- if self.controller:IsAdvenceFree() then
- zenyLack = false
- CommonUtil.IsConditionOutColor(self.cost1.num.text, false, string.formatbykey('Free'))
- return
- end
- local id = self.controller:GetData()
- local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
- local petProgressCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(petData.cfgId)
- local nextAdvenceLv = petData.advanceLevel + 1
- local zenyCost = petProgressCfgData.CostMoney[nextAdvenceLv]
- local zenyOwned = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Coin)
- zenyLack = zenyCost > zenyOwned
- CommonUtil.IsConditionOutColor(self.cost1.num.text, zenyCost > zenyOwned, CommonUtil.FormatNumber(zenyCost))
- end
- function UIPetAdvenceView:OnItemClick(button, params)
- local data = params[0]
- local itemlua = params[1]
- if data.isBattle then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petcompound_007")
- return
- end
- if data.id == self.controller:GetData() then
- return
- end
- if self.controller:IsInSelections(data.id) then
- self:RemoveMat(data, itemlua)
- else
- self.clickPetId = data.id
- self.curSelectedData = data
- self.curSelectedItemlua = itemlua
- if data.isRelevant then
- local data = {"PetCostNotify8", nil, nil, self, self.PetClickSure}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- return
- end
- if data.level > 1 or self.controller:WasSkillUp(data) then
- local data = {"PetCostNotify4", nil, nil, self, self.PetClickSure}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- return
- end
- if data.quality > 2 then
- local data = {"PetCostNotify9", nil, nil, self, self.PetClickSure}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- return
- end
- self:PetClickSure()
- end
- self:RefreshSelections()
- end
- function UIPetAdvenceView:PetClickSure()
- if self.clickPetId then
- local lastSelectedId = self.controller:AddSelection(self.clickPetId)
- if self.curSelectedItemlua then
- self.curSelectedItemlua.selected:SetActive(true)
- end
- self.clickPetId = nil
- self.curSelectedData = nil
- self.curSelectedItemlua = nil
- local data1 = self.controller:GetPetDataById(lastSelectedId)
- if data1 then
- local itemlua = petMatsGridView:GetShowItemByIdx(data1.idx)
- if itemlua then
- itemlua.selected:SetActive(false)
- end
- end
- self:RefreshSelections()
- end
- end
- function UIPetAdvenceView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIPetAdvenceView:AddUIEventListener()
- self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnCloseClick)
- self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnCloseClick)
- self.uiBase:AddButtonEventListener(self.btnSure.button, self, self.OnSureClick)
- end
- function UIPetAdvenceView:OnCloseClick()
- self:UIClose()
- end
- function UIPetAdvenceView:OnSureClick()
- if zenyLack then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petadvance_001")
- return
- end
- local selections = self.controller:GetSelections()
- if #selections < 3 then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petadvance_005")
- return
- end
- self.controller:SendPetAdvence()
- end
- function UIPetAdvenceView:OnAdvenceCallBackNtf()
- self:OnCloseClick()
- end
- function UIPetAdvenceView:OnVipLvChanged()
- self:RefreshCost()
- end
- function UIPetAdvenceView:OnHide()
- if petMatsGridView then
- petMatsGridView:OnHide()
- end
- end
- function UIPetAdvenceView:OnShow(data)
- self.controller:SetData(data)
- end
- function UIPetAdvenceView:OnClose()
- end
- function UIPetAdvenceView:OnDispose()
- self.curSelectedData = nil
- self.curSelectedItemlua = nil
- if petMatsGridView then
- petMatsGridView:OnDispose()
- petMatsGridView = nil
- end
- self.controller:OnDispose()
- end
- return UIPetAdvenceView
|