EquipManager = {} local this = EquipManager local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig) local propertyConfig=ConfigManager.GetConfig(ConfigName.PropertyConfig) local equipStarsConfig=ConfigManager.GetConfig(ConfigName.EquipStarsConfig) this.equipDatas = {} this.NewEquipList = {} function this.Initialize() end --初始化装备数据 function this.InitEquipData(_msgEquipList) local dataStr = nil for i = 1, #_msgEquipList do this.InitUpdateEquipData(_msgEquipList[i],false) end --初始化红点 if PlayerManager.uid then dataStr = PlayerPrefs.GetString("EquipNew"..PlayerManager.uid) end if dataStr == "" then this.NewEquipList = {} else this.NewEquipList = string.split(dataStr, "|") end end function this.InitUpdateEquipData(_equipData,isFindHandBook) local equipdata={} equipdata.equipConfig = equipConfig[_equipData.equipId] if equipdata.equipConfig~=nil then equipdata.backData=_equipData equipdata.itemConfig=itemConfig[equipdata.equipConfig.Id] equipdata.did=_equipData.id equipdata.id = equipdata.equipConfig.Id if itemConfig[equipdata.id] then equipdata.icon = GetResourcePath(itemConfig[equipdata.id].ResourceID) else Log("装备表找不到此id "..equipdata.id) return end equipdata.frame = GetQuantityImageByquality(equipdata.equipConfig.Quality)--ItemQuality[equipdata.equipConfig.Quality].icon equipdata.num=1 equipdata.position=equipdata.equipConfig.Position equipdata.endingTime=_equipData.createTime equipdata.resetLv=_equipData.rebuildLevel equipdata.skillId = _equipData.skillId if equipdata.skillId == nil then equipdata.skillId = 0 end equipdata.upHeroDid="0" equipdata.mainAttribute={} equipdata.mainAttribute.propertyId=_equipData.mainAttribute.propertyId equipdata.mainAttribute.propertyValue=_equipData.mainAttribute.propertyValue equipdata.mainAttribute.PropertyConfig=propertyConfig[_equipData.mainAttribute.propertyId] --equipdata.secondAttribute={} equipdata.isLocked = _equipData.isLocked --1:被锁定 0:未锁定 --equipdata.warPower = this.CalculateWarForce(equipdata.did) --for i = 1, #_equipData.secondAttribute do -- local singleSecondAttribute={} -- singleSecondAttribute.propertyId=_equipData.secondAttribute[i].propertyId -- singleSecondAttribute.propertyValue=_equipData.secondAttribute[i].propertyValue -- singleSecondAttribute.PropertyConfig=propertyConfig[_equipData.secondAttribute[i].propertyId] -- --equipdata.secondAttribute[v.propertyId]=singleSecondAttribute -- table.insert( equipdata.secondAttribute,singleSecondAttribute) --end this.equipDatas[_equipData.id]=equipdata --table.insert(this.equipDatas,equipdata) isFindHandBook = isFindHandBook or true if isFindHandBook then PlayerManager.SetEquipHandBookListData(equipdata.id) end end end --更新装备数据 function this.UpdateEquipData(_equipData,isFindHandBook) this.InitUpdateEquipData(_equipData,isFindHandBook) --新获得装备存红点 if equipConfig[_equipData.equipId] then if equipConfig[_equipData.equipId].Quality >= 4 then table.insert(this.NewEquipList, _equipData.id) -- 本地保存数据 local str = table.concat(this.NewEquipList, "|") PlayerPrefs.SetString("EquipNew"..PlayerManager.uid, str) end end end function this.GetAllEquipData() local equips = {} for i, v in pairs(this.equipDatas) do --v.warPower = this.CalculateWarForce(v.did) table.insert(equips,v) end table.sort(equips, function(a,b) return a.id < b.id end) return equips end --背包专用 去除已穿装备 --做装备叠加特殊组拼数据 function this.GetAllEquipData2() local equips = {} for i, v in pairs(this.equipDatas) do if v.upHeroDid == "0" then --table.insert(equips,v) if equips[v.id] then equips[v.id].num = equips[v.id].num + 1 else equips[v.id] = v equips[v.id].num = 1 end end end --table.sort(equips, function(a,b) return a.id < b.id end) return equips end --获取单个装备数据 function this.GetSingleEquipData(_equipDid) if this.equipDatas[_equipDid] then return this.equipDatas[_equipDid] end end --通过装备品品质获得装备list function this.GetEquipDataByEquipQuality(_equipQuality) local equips = {} for i, v in pairs(this.equipDatas) do if v.equipConfig.Quality == _equipQuality then table.insert(equips,v) end end table.sort(equips, function(a,b) return a.id < b.id end) return equips end --通过装备品品质获得装备list (已穿装备去除) function this.GetEquipDataByEquipQuality2(_equipQuality) local equips = {} for i, v in pairs(this.equipDatas) do if v.equipConfig.Quality == _equipQuality and v.upHeroDid =="0" then table.insert(equips,v) end end table.sort(equips, function(a,b) return a.id < b.id end) return equips end --通过装备位置获得装备list function this.GetEquipDataByEquipPosition(_position) local equips = {} for i, v in pairs(this.equipDatas) do if v.equipConfig.Position == _position then --v.warPower = this.CalculateWarForce(v.did) table.insert(equips,v) end end table.sort(equips, function(a,b) return a.id < b.id end) return equips end --通过装备品职业和位置获得装备list 自己穿的装备也要显示 function this.GetEquipDataByEquipJobAndPos(_pos,_job,_heroDid) local equips = {} for i, v in pairs(this.equipDatas) do if v.equipConfig.ProfessionLimit == _job or v.equipConfig.ProfessionLimit==0 then if v.equipConfig.Position== _pos then if v.upHeroDid =="0" or v.upHeroDid == _heroDid then table.insert(equips,v) end end end end return equips end --设置装备穿戴的英雄 function this.SetEquipUpHeroDid(_equipDid,_heroDid) if this.equipDatas[_equipDid] then this.equipDatas[_equipDid].upHeroDid=_heroDid end end --设置装备穿戴的英雄 function this.SetEquipLockState(_equipDids,_lock)--1:被锁定 0:未锁定 if _equipDids and #_equipDids > 0 then for i = 1, #_equipDids do if this.equipDatas[_equipDids[i]] then Log(" sss ".._equipDids[i].." ".._lock) this.equipDatas[_equipDids[i]].isLocked=_lock end end end end --删除单个装备装备 function this.DeleteSingleEquip(_equipDid) if this.equipDatas[_equipDid] then Log("~-~-~-~-~-~-~- 前端删除装备 ".._equipDid) this.equipDatas[_equipDid]=nil RedPointManager.PlayerPrefsDeleteStrItemId(_equipDid) else Log("~|~|~|~|~|~|~| 删除装备报错背包没有 ".._equipDid) end end --工坊 获得装备品品质获得装备list function this.WorkShopGetEquipDataByEquipQuality(_equipQuality,_rebuildEquipDid) local equips = {} for i, v in pairs(EquipManager.equipDatas) do if v.equipConfig.Quality == _equipQuality then if v.did ~= _rebuildEquipDid then if v.upHeroDid == "0" then table.insert(equips,v) end end end end return equips end --工坊 获得可重铸所有装备 function this.GetAllEquipDataIfClear() local equips = {} for i, v in pairs(EquipManager.equipDatas) do if v.equipConfig.IfClear ==1 then table.insert(equips,v) end end return equips end --通过装备品品质获得装备list (已穿装备去除) function this.GetAllEquipEquipDataMsinusUpHero(_sortTypeId) local equips = {} for _, v in pairs(this.equipDatas) do if v.upHeroDid =="0" then --所有未穿装备 if _sortTypeId ==0 then --筛选 table.insert(equips,v) elseif _sortTypeId>=7 then if v.equipConfig.Quality==_sortTypeId-5 then table.insert(equips,v) end else if v.equipConfig.Position==_sortTypeId then table.insert(equips,v) end end end end return equips end --地图临时背包数据 this.mapShotTimeItemData={} --地图临时装备数据存储 function this.InitMapShotTimeEquipBagData(_mapEquip) Log("存储地图临时装备信息 ".._mapEquip.id ) this.mapShotTimeItemData[#this.mapShotTimeItemData+1]=_mapEquip end --计算战斗力 function this.CalculateWarForce(equipDid,data) local curEquip = EquipManager.equipDatas[equipDid] if curEquip then --正常背包 local num = this.CalculateEquipWarForce(curEquip) return num else for i = 1, #this.mapShotTimeItemData do if this.mapShotTimeItemData[i].id==equipDid then curEquip=this.mapShotTimeItemData[i] end end if curEquip then --临时背包数据 local num = this.CalculateEquipWarForce(curEquip) return num else --除此之外就是好友数据 curEquip = data if curEquip then local num = this.CalculateEquipWarForce(curEquip) return num end end end end --根据装备数据计算战斗力 function this.CalculateEquipWarForce(curEquip) local addAllProVal={} for i, v in ConfigPairs(propertyConfig) do addAllProVal[i]=0 end if addAllProVal[curEquip.mainAttribute.propertyId] then--.mainAttribute.propertyId addAllProVal[curEquip.mainAttribute.propertyId]=addAllProVal[curEquip.mainAttribute.propertyId]+curEquip.mainAttribute.propertyValue else addAllProVal[curEquip.mainAttribute.propertyId]=curEquip.mainAttribute.propertyValue end --for j = 1, #curEquip.secondAttribute do -- if addAllProVal[curEquip.secondAttribute[j].propertyId] then -- addAllProVal[curEquip.secondAttribute[j].propertyId]=addAllProVal[curEquip.secondAttribute[j].propertyId]+curEquip.secondAttribute[j].propertyValue -- else -- addAllProVal[curEquip.secondAttribute[j].propertyId]=curEquip.secondAttribute[j].propertyValue -- end --end local powerEndVal=0 for i, v in pairs(addAllProVal) do if v>0 then local curProConfigData = ConfigManager.GetConfigData(ConfigName.PropertyConfig,i) if curProConfigData then if curProConfigData.Style == 1 then powerEndVal=powerEndVal+v*HeroManager.heroPropertyScore[i] else powerEndVal=powerEndVal+v/100*HeroManager.heroPropertyScore[i] end end end end if curEquip.equipConfig and curEquip.equipConfig.Score > 0 then powerEndVal = powerEndVal + curEquip.equipConfig.Score end return math.floor(powerEndVal) end --设置装备新红点 function this.SetEquipNewRewPooint() for i, v in pairs(this.equipDatas) do if v.isNewRewPoint then v.isNewRewPoint=false RedPointManager.PlayerPrefsSetStrItemId(v.did, 1) end end end -- 判断是否是新装备 function this.IsNewEquipFrame(equipDId) if not this.NewEquipList then return false end for _, newEquipId in ipairs(this.NewEquipList) do if newEquipId == equipDId then return true end end return false end -- 设置已经不是新装备了 function this.SetNotNewEquipAnyMore(equipDId) if not this.NewEquipList then return end local index = nil for i, newEquipId in ipairs(this.NewEquipList) do if newEquipId == equipDId then index = i break end end if not index then return end table.remove(this.NewEquipList, index) -- 保存数据 local str = table.concat(this.NewEquipList, "|") PlayerPrefs.SetString("EquipNew"..PlayerManager.uid, str) end --装备合成 --通过装备位置获得装备list {[绿1]= {},[绿2]= {},} function this.GetEquipCompoundDataByEquipPosition1(_position) local posCompoundEquipTypeNum = {} for _, configInfo in ConfigPairs(ConfigManager.GetConfig(ConfigName.EquipConfig)) do if configInfo.Position == _position then if posCompoundEquipTypeNum[_position] then if configInfo.Star > posCompoundEquipTypeNum[_position] then posCompoundEquipTypeNum[_position] = configInfo.Star end else posCompoundEquipTypeNum[_position] = configInfo.Star end end end local equips = {} for i = 1, posCompoundEquipTypeNum[_position] do equips[i] = 0 end for i, v in pairs(this.equipDatas) do if v.equipConfig.Position == _position and v.upHeroDid =="0" then equips[v.equipConfig.Star] = equips[v.equipConfig.Star] + 1 end end return equips end -- function this.GetBagCompoundEquipDatasByequipSData(equipSData) local equips = {} for i, v in pairs(this.equipDatas) do if v.equipConfig.Position == equipSData.Position and v.upHeroDid =="0" and v.equipConfig.Star == equipSData.Star - 1 then table.insert(equips,v) end end return equips end --获取静态表中可合成装备静态信息 function this.GetAllSEquipsByPosition(_position) local starEquips = ConfigManager.GetAllConfigsDataByKey(ConfigName.EquipConfig, "Position", _position) local equips = {} for i = 1, #starEquips do if starEquips[i].Star and starEquips[i].Star > 0 and starEquips[i].Star ~= 1 then--最低等级的装备 合成不了 table.insert(equips,starEquips[i]) end end table.sort(equips,function(a,b) if a.Star == b.Star then return a.Id < b.Id else return a.Star < b.Star end end) return equips end function this.SetEquipStarShow(starGrid,equipId) if equipConfig[equipId] then local curequipStarsConfig = equipStarsConfig[equipConfig[equipId].Star] if curequipStarsConfig then starGrid:SetActive(true) SetHeroStars(starGrid, curequipStarsConfig.Stars) end end end return this