| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- local UIPetMatsCtr = class("UIPetMatsCtr", require("UICtrBase"))
- local commonSkillMatId = 819
- function UIPetMatsCtr:Init(view)
- self.view = view
- end
- function UIPetMatsCtr:SetData(data)
- self.asyncIdx = 0
- if data == nil then return end
- self.data = data
- commonSkillMatId = GlobalConfig.Instance:GetConfigIntValue(313)
- end
- function UIPetMatsCtr:GetAsyncIdx()
- self.asyncIdx = self.asyncIdx + 1
- return self.asyncIdx
- end
- function UIPetMatsCtr:GetData()
- return self.data
- end
- function UIPetMatsCtr:SetChildController(ctr)
- self.childCtr = ctr
- end
- function UIPetMatsCtr:GetFromUIId()
- return self.data.fromUIId
- end
- function UIPetMatsCtr:GetRelationCfgId()
- return self.data.relationCfgId
- end
- function UIPetMatsCtr:GetSupportIdx()
- return self.data.supportIdx
- end
- function UIPetMatsCtr:GetEnterType()
- return self.data.enterType or Enum.ItemIEnterType.PetMats
- end
- function UIPetMatsCtr:SetSelectedData(idx)
- if self.data.selectedIdx == idx then
- self.data.selectedIdx = nil
- else
- self.data.selectedIdx = idx
- end
- end
- function UIPetMatsCtr:RefreshPetDatas()
- local fromUIId = self:GetFromUIId()
- if fromUIId == Enum.UIPageName.UIPetLvUp then
- return self:RefreshSkillMatsData()
- elseif fromUIId == Enum.UIPageName.UIPetRelations then
- return self:RefreshRelationsData()
- elseif fromUIId == Enum.UIPageName.UIPetMySupport then
- return self:RefreshSupportData()
- end
- end
- function UIPetMatsCtr:RefreshSkillMatsData()
- local selfId = self.data.selfId
- local selectedId = self.data.selectedId
- local petDatasSource = ManagerContainer.DataMgr.PetDataMgr:GetPetDatas()
- local petDatas = petDatasSource
- local selfDatas
- if selfId then
- local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(selfId)
- selfDatas = CommonUtil.ArrayFilterSelections(petDatas, Enum.FilterType.AND, {"cfgId", "qiyueHeroId"}, {petData.cfgId, 0})
- local commonDatas = CommonUtil.ArrayFilterSelections(petDatas, Enum.FilterType.AND, {"cfgId", "qiyueHeroId"}, {commonSkillMatId, 0})
- for j = #selfDatas, 1, -1 do
- if selfDatas[j].id == selfId then
- table.remove(selfDatas, j)
- break
- end
- end
- if selfDatas ~= nil or commonDatas ~= nil then
- CommonUtil.ArraySortSelections(selfDatas, Enum.TableSortRule.Up, "isBattle", "quality", "isSupport", "isRelevant", "advanceLevel", "level", "cfgId")
- CommonUtil.ArraySortSelections(commonDatas, Enum.TableSortRule.Up, "isBattle", "quality", "isSupport", "isRelevant", "advanceLevel", "level", "cfgId")
- if petData.cfgId ~= commonSkillMatId then
- for i = 1, #commonDatas do
- selfDatas[#selfDatas + 1] = commonDatas[i]
- end
- end
- for k,v in pairs(selfDatas) do
- v.idx = k
- end
- if selectedId then
- for j = #selfDatas, 1, -1 do
- if selfDatas[j].id == selectedId then
- selfDatas[j].selected = 1
- self.data.curSelectedData = selfDatas[j]
- self.data.selectedIdx = selfDatas[j].idx
- break
- end
- end
- end
- end
- if selfDatas == nil then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NoCardTips3")
- end
- -- LogHRWarning(Inspect(selfDatas))
- end
- return selfDatas
- end
- function UIPetMatsCtr:RefreshRelationsData()
- local relationCfgId = self.data.relationCfgId
- local relationIdx = self.data.curRelationIdx
- local relationCfgData = ManagerContainer.CfgMgr:GetPetPartnerDataById(relationCfgId)
- local petDatas
- if not relationCfgData then
- return petDatas
- end
- local function ParseToPetData(uid, nickname, petData)
- local data = {}
- data.uid = uid
- data.nickname = nickname
- data.id = petData.id
- data.cfgId = petData.cfgId
- data.quality = petData.quality
- data.level = petData.level
- data.advanceLevel = petData.advanceLevel
- data.natureType = petData.natureType
- data.isBattle = petData.isBattle
- data.isSupport = petData.isSupport
- data.isRelevant = petData.isRelevant
- return data
- end
- local selectedPetId, selectedUid
- local relationData = ManagerContainer.DataMgr.PetDataMgr:GetPetRelationDataByCfgId(relationCfgId)
- if relationData and relationData.relationPets then
- for k,v in pairs(relationData.relationPets) do
- if k == relationIdx then
- selectedPetId, selectedUid = v.petId, v.uid
- break
- end
- end
- end
- local function IsUsed(uid, id)
- if relationData and relationData.relationPets then
- for k,v in pairs(relationData.relationPets) do
- if v.uid == uid and v.petId == id then
- return true
- end
- end
- end
- return false
- end
- local cfgIds, advenceNum = {},{}
- local condition = relationCfgData['Condition1']
- if condition and condition[relationIdx] then
- local cfgId = condition[relationIdx][1]
- local num = condition[relationIdx][2]
- cfgIds[#cfgIds + 1] = cfgId
- advenceNum[#advenceNum + 1] = num
- end
- local val = GlobalConfig.Instance:GetConfigStrValue(208)
- local advanceLimit = 5
- if val ~= "" and val ~= nil then
- local advenceLvStage = CommonUtil.DeserializeGlobalStrToTable(val)
- advanceLimit = #advenceLvStage
- end
- if #advenceNum > 0 then
- for i = 1, advanceLimit do
- if i > advenceNum[1] and not CommonUtil.EleInTable(i, advenceNum) then
- advenceNum[#advenceNum + 1] = i
- end
- end
- end
- local petDatasSource = ManagerContainer.DataMgr.PetDataMgr:GetPetDatas()
- petDatas = petDatasSource
- local friendDatas = ManagerContainer.DataMgr.PetDataMgr:GetCurFriendSupportDatas()
- local list = {}
- local uid = 0
- local nickname = ManagerContainer.DataMgr.UserData:GetUserNickname()
- for _,v in pairs(petDatas) do
- if selectedUid ~= uid or v.id ~= selectedPetId then
- local data = ParseToPetData(uid, nickname, v)
- data.canUse = not IsUsed(uid, v.id)
- list[#list + 1] = data
- end
- end
- for _,v in pairs(friendDatas) do
- local uid = v.uid
- local nickname = v.nickname
- for _,v1 in pairs(v.supportPets) do
- if selectedUid ~= uid or selectedPetId ~= v1.id then
- local data = ParseToPetData(uid, nickname, v1)
- data.canUse = not IsUsed(uid, v1.id)
- list[#list + 1] = data
- end
- end
- end
- if list ~= nil then
- list = CommonUtil.ArrayFilterSelections(list, Enum.FilterType.AND, {"cfgId", "advanceLevel"}, {cfgIds, advenceNum})
- CommonUtil.ArraySortListSelections(list, {Enum.TableSortRule.Down,Enum.TableSortRule.Up,Enum.TableSortRule.Up, Enum.TableSortRule.Up, Enum.TableSortRule.Down},
- {"canUse", "isBattle", "isRelevant", "isSupport", "advanceLevel"})
- for k,v in pairs(list) do
- v.idx = k
- end
- end
- if list == nil then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NoCardTips3")
- end
- return list
- end
- function UIPetMatsCtr:RefreshSupportData()
- local mySupportPets = ManagerContainer.DataMgr.PetDataMgr:GetMySupportPets()
- local function IsUsed(id)
- if mySupportPets then
- for _,v in pairs(mySupportPets) do
- if v.id == id then
- return true
- end
- end
- end
- return false
- end
- local petDatasSource = ManagerContainer.DataMgr.PetDataMgr:GetPetDatas()
- local petDatas = petDatasSource
- if petDatas == nil then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NoCardTips3")
- end
- if petDatas then
- for k,v in pairs(petDatas) do
- v.isUsed = IsUsed(v.id)
- end
- CommonUtil.ArraySortSelections(petDatas, Enum.TableSortRule.Down, "isUsed", "quality", "advanceLevel", "level", "cfgId")
- for k,v in pairs(petDatas) do
- v.idx = k
- end
- -- LogHRWarning(Inspect(petDatas))
- end
- return petDatas
- end
- function UIPetMatsCtr:GetCurSelectedIdx()
- return self.data.curSelectedData, self.data.selectedIdx
- end
- function UIPetMatsCtr:GetCurSelectedIdByIdx()
- if self.childCtr and self.data.selectedIdx then
- local data = self.childCtr:GetShowData(self.data.selectedIdx - 1)
- return data.id
- end
- return nil
- end
- function UIPetMatsCtr:GetCurSelectedDataByIdx()
- if self.childCtr and self.data.selectedIdx then
- local data = self.childCtr:GetShowData(self.data.selectedIdx - 1)
- return data
- end
- return nil
- end
- function UIPetMatsCtr:WasSkillUp(petData)
- if not petData.skillList then return false end
- for _,v in pairs(petData.skillList) do
- if v.level > 1 then
- return true
- end
- end
- return false
- end
- function UIPetMatsCtr:OnDispose()
- self.childCtr = nil
- self.data = nil
- self.view = nil
- end
- return UIPetMatsCtr
|