684 lines
22 KiB
Lua
684 lines
22 KiB
Lua
------------------------------------------------
|
|
--作者: yangqf
|
|
--日期: 2021-03-18
|
|
--文件: HolyEquipSystem.lua
|
|
--模块: HolyEquipSystem
|
|
--描述: 圣装系统
|
|
------------------------------------------------
|
|
|
|
local AUTO_SPLIT_LEVEL = "HolyEquipSplitLevel"
|
|
local AUTO_SPLIT_QUALITY = "HolyEquipSplitQuality"
|
|
local L_HolyEquipSoul = require "Logic.HolyEquip.HolyEquipSoul"
|
|
local L_HolyEquipPart = require "Logic.HolyEquip.HolyEquipPart"
|
|
local L_HolyEquipSuitCfg = require "Logic.HolyEquip.HolyEquipSuitCfg"
|
|
local L_HolyEquip = CS.Thousandto.Code.Logic.HolyEquip
|
|
local L_RedPointCustomCondition = CS.Thousandto.Code.Logic.RedPointCustomCondition
|
|
local L_RedPointItemCondition = CS.Thousandto.Code.Logic.RedPointItemCondition
|
|
|
|
local HolyEquipSystem = {
|
|
--装备栏的数据
|
|
EquipDic = Dictionary:New(),
|
|
--背包中的数据
|
|
BagList = List:New(),
|
|
--临时列表,用于返回给外部
|
|
TmpList = List:New(),
|
|
--是否自动分解
|
|
AutoFenJie = false,
|
|
--自动分解的等级
|
|
AutoFenJieLevel = 0,
|
|
--自动分解的品质
|
|
AutoFenJieQuality = 0,
|
|
--圣魂列表
|
|
SoulList = List:New(),
|
|
--套装属性配置
|
|
SuitCfgs = Dictionary:New(),
|
|
--套装部位配置
|
|
SuitPartCfg = nil,
|
|
SuitTypePartCfg = nil,
|
|
--总属性
|
|
AllProps = nil,
|
|
--总战力
|
|
AllPower = 0,
|
|
--当前套装属性
|
|
CurSuitPro = nil,
|
|
--当前套装总属性加成
|
|
CurMultipleSuitPro = nil,
|
|
}
|
|
|
|
function HolyEquipSystem:Initialize()
|
|
self.AutoFenJie = true
|
|
self.AutoFenJieLevel = PlayerPrefs.GetInt(AUTO_SPLIT_LEVEL, 3)
|
|
self.AutoFenJieQuality = PlayerPrefs.GetInt(AUTO_SPLIT_QUALITY, 4)
|
|
self.AllProps = {}
|
|
|
|
self.SoulList:Clear()
|
|
local _gCfg = DataConfig.DataGlobal[GlobalName.Equip_Holy_att_item]
|
|
if _gCfg ~= nil then
|
|
local _paramArray = Utils.SplitStrByTableS(_gCfg.Params, {';', '_'})
|
|
for i = 1, #_paramArray do
|
|
local _itemId = _paramArray[i][1]
|
|
local _maxCount = _paramArray[i][2]
|
|
self.SoulList:Add(L_HolyEquipSoul:New(_itemId, _maxCount))
|
|
end
|
|
end
|
|
self.SuitCfgs:Clear()
|
|
local _func = function(k, v)
|
|
self.SuitCfgs:Add(k, L_HolyEquipSuitCfg:New(v))
|
|
end
|
|
DataConfig.DataEquipHolySuit:Foreach(_func)
|
|
|
|
self.SuitPartCfg = List:New()
|
|
self.SuitTypePartCfg = Dictionary:New()
|
|
local _func2 = function(k,v)
|
|
local _partParams = Utils.SplitNumber(v.PartsList, '_')
|
|
local _allList = List:New()
|
|
local _list1 = List:New()
|
|
for i = 1, 6 do
|
|
_list1:Add(_partParams[i])
|
|
_allList:Add(_partParams[i])
|
|
end
|
|
local _list2 = List:New()
|
|
for i = 7, 11 do
|
|
_list2:Add(_partParams[i])
|
|
_allList:Add(_partParams[i])
|
|
end
|
|
self.SuitPartCfg:Add(_list1)
|
|
self.SuitPartCfg:Add(_list2)
|
|
self.SuitTypePartCfg:Add(k, _allList)
|
|
end
|
|
DataConfig.DataEquipHolyType:Foreach(_func2)
|
|
self.CurSuitPro = {}
|
|
self.CurMultipleSuitPro = {}
|
|
end
|
|
|
|
function HolyEquipSystem:UnInitialize()
|
|
end
|
|
|
|
function HolyEquipSystem:SetAutoFenJie(value)
|
|
if self.AutoFenJie ~= value then
|
|
self.AutoFenJie = value
|
|
self:SendAutoSplitMsg()
|
|
end
|
|
end
|
|
|
|
function HolyEquipSystem:SetAutoFenJieLevel(value)
|
|
if self.AutoFenJieLevel ~= value then
|
|
self.AutoFenJieLevel = value
|
|
PlayerPrefs.SetInt(AUTO_SPLIT_LEVEL, self.AutoFenJieLevel)
|
|
self:SendAutoSplitMsg()
|
|
end
|
|
end
|
|
|
|
function HolyEquipSystem:SetAutoFenJieQuality(value)
|
|
if self.AutoFenJieQuality ~= value then
|
|
self.AutoFenJieQuality = value
|
|
PlayerPrefs.GetInt(AUTO_SPLIT_QUALITY, self.AutoFenJieQuality)
|
|
self:SendAutoSplitMsg()
|
|
end
|
|
end
|
|
|
|
--获取身上穿戴的装备
|
|
function HolyEquipSystem:GetDressEquip(part)
|
|
return self.EquipDic[part]
|
|
end
|
|
|
|
--获取可分解物品列表
|
|
function HolyEquipSystem:GetCanFenJieList()
|
|
self.TmpList:Clear()
|
|
local _lp = GameCenter.GameSceneSystem:GetLocalPlayer()
|
|
if _lp ~= nil then
|
|
for i = 1, #self.BagList do
|
|
local _equip = self.BagList[i]
|
|
if _equip.CanFenJie then
|
|
if string.find(_equip:GetOcc(), tostring(_lp.IntOcc)) == nil then
|
|
--职业不匹配
|
|
self.TmpList:Add(_equip)
|
|
else
|
|
local _dressEquip = self:GetDressEquip(_equip.Part)
|
|
if _dressEquip ~= nil and _dressEquip.Equip ~= nil and _dressEquip.Equip.Power >= _equip.Power then
|
|
self.TmpList:Add(_equip)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return self.TmpList
|
|
end
|
|
|
|
--获取套装属性配置
|
|
function HolyEquipSystem:GetSuitCfg(suitID)
|
|
return self.SuitCfgs[suitID]
|
|
end
|
|
|
|
--获取套装被激活的件数
|
|
function HolyEquipSystem:GetSuitActiveCounts(suitID)
|
|
local _result = List:New()
|
|
for k, v in pairs(self.EquipDic) do
|
|
local _equip = v.equip
|
|
if _equip ~= nil then
|
|
local _iterActive = _equip.ActiveSuits:GetEnumerator()
|
|
while _iterActive:MoveNext() do
|
|
if _iterActive.Current.Value == suitID and not _result:Contains(iterActive.Current.Key) then
|
|
_result:Add(iterActive.Current.Key)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return _result
|
|
end
|
|
|
|
--根据DBID获取背包中的圣装
|
|
function HolyEquipSystem:GetEquipByDBID(uid)
|
|
for i = 1, #self.BagList do
|
|
local _equip = self.BagList[i]
|
|
if _equip.DBID == uid then
|
|
return self.BagList[i]
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--获取可合成的装备列表
|
|
function HolyEquipSystem:GetCanHeChengEquipList()
|
|
self.TmpList:Clear()
|
|
local _occ = tostring(GameCenter.GameSceneSystem:GetLocalPlayer().Occ)
|
|
for k, v in pairs(self.EquipDic) do
|
|
if v.Equip ~= nil then
|
|
local _cfg = DataConfig.DataEquipHolySynthesis[v.Equip.CfgID]
|
|
if _cfg ~= nil then
|
|
self.TmpList:Add(v.Equip)
|
|
end
|
|
end
|
|
end
|
|
for i = 1, #self.BagList do
|
|
local _item = self.BagList[i]
|
|
local _cfg = DataConfig.DataEquipHolySynthesis[_item.CfgID]
|
|
if _cfg ~= nil then
|
|
local _equipCfg = DataConfig.DataEquip[_cfg.Id]
|
|
if _equipCfg ~= nil and string.find(_equipCfg.Gender, _occ) then
|
|
self.TmpList:Add(_item)
|
|
end
|
|
end
|
|
end
|
|
return self.TmpList
|
|
end
|
|
|
|
--获取合成自动放入的圣装id
|
|
function HolyEquipSystem:GetCanMergeItemID()
|
|
local _list = self:GetCanHeChengEquipList()
|
|
local _itemCountDic = {}
|
|
for i = 1, #_list do
|
|
local _cfgID = _list[i].CfgID
|
|
local _oriCount = _itemCountDic[_cfgID]
|
|
if _oriCount == nil then
|
|
_oriCount = 0
|
|
end
|
|
if (_oriCount + 1) >= 2 then
|
|
--判断材料是否足够
|
|
local _cfg = DataConfig.DataEquipHolySynthesis[_cfgID]
|
|
if _cfg.JoinItem ~= nil and string.len(_cfg.JoinItem) > 0 then
|
|
local _itemPar = Utils.SplitNumber(_cfg.JoinItem, '_')
|
|
if GameCenter.ItemContianerSystem:GetItemCountFromCfgId(_itemPar[1]) >= _itemPar[2] then
|
|
return _list[i].DBID
|
|
end
|
|
else
|
|
return _list[i].DBID
|
|
end
|
|
else
|
|
_itemCountDic[_cfgID] = _oriCount + 1
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
--判断某个类型的圣装是否有红点
|
|
function HolyEquipSystem:IsHasIntensifyRedPointByType(type)
|
|
local _parts = self.SuitTypePartCfg[type]
|
|
if _parts ~= nil then
|
|
for i = 1, #_parts do
|
|
if GameCenter.RedPointSystem:OneConditionsIsReach(FunctionStartIdCode.HolyEquipIntensify, _parts[i]) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--根据类型获取装备列表
|
|
function HolyEquipSystem:GetEquipListByType(type)
|
|
local _result = List:New()
|
|
local _parts = self.SuitTypePartCfg[type]
|
|
if _parts ~= nil then
|
|
for i = 1, #_parts do
|
|
local _equip = self:GetDressEquip(_parts[i])
|
|
if _equip ~= nil and _equip.Equip ~= nil then
|
|
_result:Add(_equip)
|
|
end
|
|
end
|
|
end
|
|
return _result
|
|
end
|
|
|
|
--套装排序
|
|
local L_SuitSort = function(left, right)
|
|
if right.Grade ~= left.Grade then
|
|
return right.Grade < left.Grade
|
|
end
|
|
return right.Quality < left.Quality
|
|
end
|
|
|
|
function HolyEquipSystem:GetEquipListBySuitType(typeId, suitType)
|
|
self.TmpList:Clear()
|
|
local _parts = self.SuitTypePartCfg[typeId]
|
|
if _parts ~= nil then
|
|
if suitType == 0 then
|
|
for i = 1, 6 do
|
|
local _equip = self:GetDressEquip(_parts[i])
|
|
if _equip ~= nil and _equip.Equip ~= nil then
|
|
self.TmpList:Add(_equip.Equip)
|
|
end
|
|
end
|
|
else
|
|
for i = 7, 11 do
|
|
local _equip = self:GetDressEquip(_parts[i])
|
|
if _equip ~= nil and _equip.Equip ~= nil then
|
|
self.TmpList:Add(_equip.Equip)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self.TmpList:Sort(L_SuitSort)
|
|
return self.TmpList
|
|
end
|
|
|
|
--排序装备2
|
|
local L_SortEquip2 = function(left, right)
|
|
return right.Power < right.Power
|
|
end
|
|
--获取某个部位的所有装备,并且根据战力排序
|
|
function HolyEquipSystem:GetEquipListByPart(part)
|
|
local _lp = GameCenter.GameSceneSystem:GetLocalPlayer()
|
|
self.TmpList:Clear()
|
|
if _lp ~= nil then
|
|
local _lpOcc = _lp.IntOcc
|
|
for i = 1, #self.BagList do
|
|
local _item = self.BagList[i]
|
|
if _item.Occ == _lpOcc and _item.Part == part and _item:CheckBetterThanDress() then
|
|
self.TmpList:Add(_item)
|
|
end
|
|
end
|
|
self.TmpList:Sort(L_SortEquip2)
|
|
end
|
|
return self.TmpList
|
|
end
|
|
|
|
--获取圣装所属的类型
|
|
function HolyEquipSystem:GetTypeIdByPart(part)
|
|
for k, v in pairs(self.SuitTypePartCfg) do
|
|
if v:Contains(part) then
|
|
return k
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
--排序装备
|
|
local L_SortEquip = function(left, right)
|
|
local _lp = GameCenter.GameSceneSystem:GetLocalPlayer()
|
|
if _lp ~= nil then
|
|
local _occ = _lp.IntOcc
|
|
local _leftOcc = 1
|
|
if left.Occ == _occ then
|
|
_leftOcc = 0
|
|
end
|
|
local _rightOcc = 1
|
|
if right.Occ == _occ then
|
|
_rightOcc = 0
|
|
end
|
|
if _leftOcc ~= _rightOcc then
|
|
return _leftOcc < _rightOcc
|
|
end
|
|
if left.Grade ~= right.Grade then
|
|
return right.Grade < left.Grade
|
|
end
|
|
if left.Quality ~= right.Quality then
|
|
return right.Quality < left.Quality
|
|
end
|
|
if left.Part ~= right.Part then
|
|
return left.Part < right.Part
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--上线初始化数据
|
|
function HolyEquipSystem:ResOnlineInit(result)
|
|
self.BagList:Clear()
|
|
if result.holyBagItemList ~= nil then
|
|
for i = 1, #result.holyBagItemList do
|
|
local _equip = L_HolyEquip.CreateByLuaMsg(result.holyBagItemList[i])
|
|
self:AddBagEquip(_equip, 0)
|
|
end
|
|
end
|
|
self.BagList:Sort(L_SortEquip)
|
|
self.EquipDic:Clear()
|
|
if result.holyEquipPartList ~= nil then
|
|
for i = 1, #result.holyEquipPartList do
|
|
local _part = L_HolyEquipPart:New(result.holyEquipPartList[i])
|
|
self:UpdateEquipDic(_part)
|
|
end
|
|
end
|
|
|
|
for i = 1, #result.holySoulInfoList do
|
|
for j = 1, #self.SoulList do
|
|
if self.SoulList[j].ItemID == result.holySoulInfoList[i].itemId then
|
|
self.SoulList[j]:SetCurCount(result.holySoulInfoList[i].useNum)
|
|
end
|
|
end
|
|
end
|
|
self:SendAutoSplitMsg()
|
|
self:CheckBagRedPoint()
|
|
self:CalculateSuit()
|
|
self:CalculateAllPros()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_HOLYEQUIP_ONLINE)
|
|
end
|
|
|
|
--镶嵌结果反馈
|
|
function HolyEquipSystem:ResInlayHolyReuslt(result)
|
|
if result.holyPart ~= nil then
|
|
--更新装备栏
|
|
local _part = L_HolyEquipPart:New(result.holyPart)
|
|
self:UpdateEquipDic(_part)
|
|
self:CalculateSuit()
|
|
self:CalculateAllPros()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_UPDATE_HOLYEQUIP_PART)
|
|
end
|
|
end
|
|
|
|
--强化结果
|
|
function HolyEquipSystem:ResIntensifyHolyPartResult(result)
|
|
local _oldPart = self.EquipDic[result.holyPart.part]
|
|
local _part = L_HolyEquipPart:New(result.holyPart)
|
|
if _oldPart ~= nil and _oldPart.Equip ~= nil and _part.Equip ~= nil then
|
|
--拷贝套装激活情况
|
|
local _iter = _oldPart.Equip.ActiveSuits:GetEnumerator()
|
|
while _iter:MoveNext() do
|
|
_part.Equip.ActiveSuits[_iter.Current.Key] = _iter.Current.Value
|
|
end
|
|
end
|
|
self:UpdateEquipDic(_part)
|
|
self:CheckBagRedPoint()
|
|
self:CalculateAllPros()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_INTENSIFY_HOLYEQUIP)
|
|
end
|
|
|
|
--圣魂使用结果
|
|
function HolyEquipSystem:ResUseHolySoulResult(result)
|
|
for i = 1, #self.SoulList do
|
|
if self.SoulList[i].ItemID == result.holySoulData.itemId then
|
|
self.SoulList[i]:SetCurCount(result.holySoulData.useNum)
|
|
break
|
|
end
|
|
end
|
|
self:CalculateAllPros()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_HOLYEQUIP_SOUL_UPDATE)
|
|
end
|
|
|
|
--删除圣装
|
|
function HolyEquipSystem:ResDeleteHoly(result)
|
|
if result.deleteUID ~= nil then
|
|
for i= 1, #result.deleteUID do
|
|
self:DeleteBagEquip(result.deleteUID[i], result.reason)
|
|
end
|
|
self:CheckBagRedPoint()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_UPDATE_HOLYEQUIP_BAG, result.reason == ItemChangeReasonName.HolyEquipResolveDec)
|
|
if result.reason == ItemChangeReasonName.HolyEquipCompoundGet then
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_MERGE_SUCC)
|
|
end
|
|
end
|
|
end
|
|
|
|
--添加圣装
|
|
function HolyEquipSystem:ResAddHoly(result)
|
|
if result.addholyitem ~= nil then
|
|
for i = 1, #result.addholyitem do
|
|
local _equip = L_HolyEquip.CreateByLuaMsg(result.addholyitem[i])
|
|
_equip.IsNew = true
|
|
self:AddBagEquip(_equip, result.reason)
|
|
GameCenter.GetNewItemSystem:AddShowItem(result.reason, _equip, _equip.CfgID, 1)
|
|
end
|
|
self.BagList:Sort(L_SortEquip)
|
|
self:CheckBagRedPoint()
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_UPDATE_HOLYEQUIP_BAG)
|
|
end
|
|
end
|
|
|
|
--同步战力
|
|
function HolyEquipSystem:ResHolyEquipFightPower(result)
|
|
self.AllPower = result.fightPower
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_REFRESH_HOLY_FIGHTPOWER)
|
|
end
|
|
|
|
local L_MergePropTable = function(proTables)
|
|
local _result = {}
|
|
for i = 1, #proTables do
|
|
for k, v in pairs(proTables[i]) do
|
|
local _oriValue = _result[k]
|
|
if _oriValue == nil then
|
|
_oriValue = 0
|
|
end
|
|
_result[k] = _oriValue + v
|
|
end
|
|
end
|
|
return _result
|
|
end
|
|
|
|
--计算总属性
|
|
function HolyEquipSystem:CalculateAllPros()
|
|
self.AllProps = {}
|
|
local _allBaseProDic = {}
|
|
local _allLevelProDic = {}
|
|
--加上装备属性和强化属性
|
|
for _, part in pairs(self.EquipDic) do
|
|
if part.Equip ~= nil and part.LevelCfg ~= nil then
|
|
local _dicPro = part.Equip:GetBaseAttribute()
|
|
local _iter = _dicPro:GetEnumerator()
|
|
while _iter:MoveNext() do
|
|
local _k = _iter.Current.Key
|
|
local _v = _iter.Current.Value
|
|
local _oriValue = _allBaseProDic[_k]
|
|
if _oriValue == nil then
|
|
_oriValue = 0
|
|
end
|
|
_allBaseProDic[_k] = _oriValue + _v
|
|
end
|
|
_allLevelProDic = L_MergePropTable({_allLevelProDic, part.LevelPros})
|
|
end
|
|
end
|
|
--累计基础属性和强化属性
|
|
self.AllProps = L_MergePropTable({_allBaseProDic, _allLevelProDic})
|
|
--加上圣魂属性
|
|
for i= 1, #self.SoulList do
|
|
self.AllProps = L_MergePropTable({self.AllProps, self.SoulList[i].AllPros})
|
|
end
|
|
--加上套装属性
|
|
self.AllProps = L_MergePropTable({self.AllProps, self.CurSuitPro, self.CurMultipleSuitPro})
|
|
end
|
|
|
|
--检测背包红点
|
|
function HolyEquipSystem:CheckBagRedPoint()
|
|
GameCenter.RedPointSystem:CleraFuncCondition(FunctionStartIdCode.HolyEquipDress)
|
|
local _betterParts = List:New()
|
|
for i = 1, #self.BagList do
|
|
local _equip = self.BagList[i]
|
|
local _part = _equip.Part
|
|
if not _betterParts:Contains(_part) and _equip:CheckCanEquip() and _equip:CheckBetterThanDress() then
|
|
_betterParts:Add(_part)
|
|
end
|
|
end
|
|
if #_betterParts > 0 then
|
|
for k, v in pairs(self.SuitTypePartCfg) do
|
|
for i = 1, #v do
|
|
if _betterParts:Contains(v[i]) then
|
|
GameCenter.RedPointSystem:AddFuncCondition(FunctionStartIdCode.HolyEquipDress, k, L_RedPointCustomCondition(true))
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for i = 1, #_betterParts do
|
|
GameCenter.RedPointSystem:AddFuncCondition(FunctionStartIdCode.HolyEquipDress, _betterParts[i], L_RedPointCustomCondition(true))
|
|
end
|
|
--根据是否有可以自动合成的来判断是否有红点
|
|
GameCenter.MainFunctionSystem:SetAlertFlag(FunctionStartIdCode.HolyEquipCompose, self:GetCanMergeItemID() > 0)
|
|
end
|
|
|
|
--添加到背包栏
|
|
function HolyEquipSystem:AddBagEquip(equip, reason)
|
|
equip.ContainerType = ContainerType.ITEM_LOCATION_BAG
|
|
self.BagList:Add(equip)
|
|
GameCenter.GetNewItemSystem:AddShowTips(equip, reason, 1)
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_ADD_HOLYEQUIP, equip)
|
|
end
|
|
|
|
--删除背包栏中的装备
|
|
function HolyEquipSystem:DeleteBagEquip(id, reason)
|
|
for i = 1, #self.BagList do
|
|
if self.BagList[i].DBID == id then
|
|
self.BagList:RemoveAt(i)
|
|
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_DELETE_HOLYEQUIP, id)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
--计算套装属性
|
|
function HolyEquipSystem:CalculateSuit()
|
|
self.CurSuitPro = {}
|
|
self.CurMultipleSuitPro = {}
|
|
for i = 1, #self.SuitPartCfg do
|
|
local _equipList = List:New()
|
|
for j = 1, #self.SuitPartCfg[i] do
|
|
local _equip = self:GetDressEquip(self.SuitPartCfg[i][j])
|
|
if _equip ~= nil and _equip.Equip ~= nil then
|
|
_equipList:Add(_equip.Equip)
|
|
end
|
|
end
|
|
--计算属性
|
|
self:CalculateSuitByParts(_equipList)
|
|
end
|
|
end
|
|
|
|
--计算套装属性
|
|
function HolyEquipSystem:CalculateSuitByParts(equipList)
|
|
--先从高到低排序
|
|
equipList:Sort(L_SuitSort)
|
|
local _suit2Grade = 0
|
|
local _suit2Quality = 0
|
|
local _suit2SuitID = 0
|
|
--取两件套
|
|
local _equipCount = #equipList
|
|
if _equipCount >= 2 then
|
|
_suit2SuitID = equipList[2].SuitID
|
|
_suit2Grade = equipList[2].Grade
|
|
_suit2Quality = equipList[2].Quality
|
|
end
|
|
local _suit4Grade = 0
|
|
local _suit4Quality = 0
|
|
local _suit4SuitID = 0
|
|
if _equipCount >= 4 then
|
|
_suit4SuitID = equipList[4].SuitID
|
|
_suit4Grade = equipList[4].Grade
|
|
_suit4Quality = equipList[4].Quality
|
|
end
|
|
local _suit5Grade = 0
|
|
local _suit5Quality = 0
|
|
local _suit5SuitID = 0
|
|
if _equipCount >= 5 then
|
|
_suit5SuitID = equipList[5].SuitID
|
|
_suit5Grade = equipList[5].Grade
|
|
_suit5Quality = equipList[5].Quality
|
|
end
|
|
local _suit6Grade = 0
|
|
local _suit6Quality = 0
|
|
local _suit6SuitID = 0
|
|
if _equipCount >= 6 then
|
|
_suit6SuitID = equipList[6].SuitID
|
|
_suit6Grade = equipList[6].Grade
|
|
_suit6Quality = equipList[6].Quality
|
|
end
|
|
|
|
for i = 1, #equipList do
|
|
local _equipGrade = equipList[i].Grade
|
|
local _equipQuality = equipList[i].Quality
|
|
local _equipSuitIds = equipList[i].ActiveSuits
|
|
_equipSuitIds:Clear()
|
|
if _equipGrade >= _suit2Grade and _equipQuality >= _suit2Quality then
|
|
_equipSuitIds[2] = _suit2SuitID
|
|
end
|
|
if _equipGrade >= _suit4Grade and _equipQuality >= _suit4Quality then
|
|
_equipSuitIds[4] = _suit4SuitID
|
|
end
|
|
if _equipGrade >= _suit5Grade and _equipQuality >= _suit5Quality then
|
|
_equipSuitIds[5] = _suit5SuitID
|
|
end
|
|
if _equipGrade >= _suit6Grade and _equipQuality >= _suit6Quality then
|
|
_equipSuitIds[6] = _suit6SuitID
|
|
end
|
|
end
|
|
--计算属性
|
|
local _proList = List:New()
|
|
local _muProList = List:New()
|
|
local _suit2Cfg = self:GetSuitCfg(_suit2SuitID)
|
|
if _suit2Cfg ~= nil then
|
|
_proList:Add(_suit2Cfg.Pros2)
|
|
_muProList:Add(_suit2Cfg.MultiplePros2)
|
|
end
|
|
local _suit4Cfg = self:GetSuitCfg(_suit4SuitID)
|
|
if _suit4Cfg ~= nil then
|
|
_proList:Add(_suit4Cfg.Pros4)
|
|
_muProList:Add(_suit4Cfg.MultiplePros4)
|
|
end
|
|
local _suit5Cfg = self:GetSuitCfg(_suit5SuitID)
|
|
if _suit5Cfg ~= nil then
|
|
_proList:Add(_suit5Cfg.Pros5)
|
|
_muProList:Add(_suit5Cfg.MultiplePros5)
|
|
end
|
|
local _suit6Cfg = self:GetSuitCfg(_suit6SuitID)
|
|
if _suit6Cfg ~= nil then
|
|
_proList:Add(_suit6Cfg.Pros6)
|
|
_muProList:Add(_suit6Cfg.MultiplePros6)
|
|
end
|
|
_proList:Add(self.CurSuitPro)
|
|
_muProList:Add(self.CurMultipleSuitPro)
|
|
self.CurSuitPro = L_MergePropTable(_proList)
|
|
self.CurMultipleSuitPro = L_MergePropTable(_muProList)
|
|
end
|
|
|
|
--更新装备栏
|
|
function HolyEquipSystem:UpdateEquipDic(part)
|
|
local _partValue = part.Part
|
|
self.EquipDic[_partValue] = part
|
|
local _haveEquip = false
|
|
for _, v in pairs(self.EquipDic) do
|
|
if v.Equip ~= nil then
|
|
_haveEquip = true
|
|
break
|
|
end
|
|
end
|
|
--有装备的时候才显示强化界面
|
|
GameCenter.MainFunctionSystem:SetFunctionVisible(FunctionStartIdCode.HolyEquipIntensify, _haveEquip)
|
|
|
|
--检测升级红点
|
|
GameCenter.RedPointSystem:RemoveFuncCondition(FunctionStartIdCode.HolyEquipIntensify, _partValue)
|
|
if part.Equip ~= nil and part.LevelCfg ~= nil and not part.IsMaxLevel then
|
|
GameCenter.RedPointSystem:AddFuncCondition(FunctionStartIdCode.HolyEquipIntensify, _partValue, L_RedPointItemCondition(ItemTypeCode.HolyEquipScore, part.LevelCfg.Cost))
|
|
end
|
|
end
|
|
|
|
--发送改变自动分解选项消息
|
|
function HolyEquipSystem:SendAutoSplitMsg()
|
|
GameCenter.Network.Send("MSG_HolyEquip.ReqSetAutoResolve", {isAuto = self.AutoFenJie, grade = self.AutoFenJieLevel, quality = self.AutoFenJieQuality})
|
|
end
|
|
|
|
return HolyEquipSystem |