sk-client/Assets/ManagedResources/~Lua/Modules/General/GeneralManager.lua

293 lines
9.8 KiB
Lua

GeneralManager = {}
local this = GeneralManager
local generalStepConfig = ConfigManager.GetConfig(ConfigName.GeneralConfig)
local generalLevelStepConfig = ConfigManager.GetConfig(ConfigName.GeneralLevelConfig)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
this.generalDate = {}
this.setDataMode = false
function this.Initialize()
end
function this.SetAllGeneralDatas(data)
for key, value in pairs(data.generalDate) do
this.generalDate[key] = value
end
this.setDataMode = true
end
--契约是否获取数据状态
function this.GetGeneralMode()
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GENERAL) then
if this.setDataMode ~= true then
NetManager.GetGeneralData()
end
end
return this.setDataMode
end
--获取所有契约信息
function this.GetAllGeneralDatas(_lvLimit)
for key, value in pairs(this.generalDate) do
if value.id == _lvLimit then
return value
end
end
return nil
end
--获取契约升级信息
function this.UpgradeExpend(generalID,lv)
local levelUpList = ConfigManager.GetAllConfigsDataByKey(ConfigName.GeneralLevelConfig,"GeneralId",generalID)
for key, value in pairs(levelUpList) do
if value.Lev == lv then
return value
end
end
return nil
end
--获取契约满级信息
function this.MaxLevel(generalID)
local levelUpList = ConfigManager.GetAllConfigsDataByKey(ConfigName.GeneralLevelConfig,"GeneralId",generalID)
local maxLevel = 0
for key, value in pairs(levelUpList) do
if value.Lev > maxLevel then
maxLevel = value.Lev
end
end
return maxLevel
end
--获取契约属性数据
function this.GeneralAtt(generalID,lv,attackIdx)
local generalData = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralLevelConfig,"GeneralId",generalID,"Lev",lv)
local attData = generalData.FirstAtt
local attDatalist = 0
attDatalist = attData[attackIdx][2]
if this.GetAllGeneralDatas(generalID).moduleProperty ~= nil then
for key, value in pairs(this.GetAllGeneralDatas(generalID).moduleProperty.property) do
if value.id == attackIdx then
attDatalist = attDatalist+value.value
end
end
end
return attDatalist
end
--获取契约当前等级属性数据
function this.GeneralAttLevel(generalID,lv,attackIdx)
local generalData = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralLevelConfig,"GeneralId",generalID,"Lev",lv)
local generalDatas = GeneralManager.GetAllGeneralDatas(generalID)
local indexNum = generalDatas.exp/generalData.AddExp
local attData = generalData.FirstAtt
if indexNum > 0 then
local addNum = generalData.AddAtt[attackIdx][2] * indexNum
return attData[attackIdx][2] + addNum
else
return attData[attackIdx][2]
end
end
--获取契约当前等级属性数据上限
function this.GeneralLevel(generalID, lv, attackIdx)
local generalData = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralLevelConfig,"GeneralId",generalID,"Lev",lv)
local attData = generalData.FirstAtt
return attData[attackIdx][2]
end
--获取契约属性数据
function this.GeneralOtherAtt(generalID,attackIdx)
local generalData = this.GetAllGeneralDatas(generalID)
local attData = generalData.FirstAtt
local attDatalist = 0
if this.GetAllGeneralDatas(generalID).moduleProperty ~= nil then
for key, value in pairs(this.GetAllGeneralDatas(generalID).moduleProperty.property) do
if value.id == attackIdx then
if propertyConfig[attackIdx].Style == 2 then
attDatalist = value.value/10000*100
else
attDatalist = value.value
end
end
end
end
return attDatalist
end
--获取契约下一星级属性数据
function this.GeneralOtherRankAtt(generalID,attackIdx,rank)
local generalData = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralStepConfig,"GeneralId",generalID,"StepLev",rank+1)
if generalData == nil then
return 0
end
local generalStepAtt = generalData.StepAtt
local attDatalist = 0
if generalStepAtt[1] == attackIdx then
if propertyConfig[attackIdx].Style == 2 then
attDatalist = generalStepAtt[2]/10000*100
else
attDatalist = generalStepAtt[2]
end
end
return attDatalist
end
--获取契约解锁状态
function this.GetAllLock(index)
local getAllHero = HeroManager.GetAllHeroDatas(nil)
local general = generalStepConfig[index]
local generalNum = 0
for key, value in pairs(getAllHero) do
if value.star >= general.LockHero[1] then
if value.property == general.LockHero[3] then
generalNum = generalNum + 1
end
end
end
if generalNum >= general.LockHero[2] then
return true
end
return false
end
--获取契约升阶
function this.RankInfo(index,rank)
local rankInfo = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralStepConfig,"GeneralId",index,"StepLev",rank+1)
if rankInfo == nil then
return nil
end
local rankUpItem = rankInfo.UpgradeExpend
return rankUpItem
end
function this.getAllData(index)
local generalLsData = this.GetAllGeneralDatas(index)
if generalLsData == nil then
-- LogRed("没获取到契约数据")
return {}
end
local generalDateList = {}
local generalData = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralLevelConfig,"GeneralId",index,"Lev",generalLsData.level)
local generalDateOther = this.GetAllGeneralDatas(index)
local attData = generalData.FirstAtt
local indexNum = generalLsData.exp/generalData.AddExp
for i = 1, #attData, 1 do
if indexNum > 0 then
local addNum = generalData.AddAtt[i][2] * indexNum
generalDateList[attData[i][1]] = attData[i][2] + addNum
else
generalDateList[attData[i][1]] = attData[i][2]
end
end
generalDateList[5] = this.GeneralOtherAtt(index,5)
generalDateList[61] = this.GeneralOtherAtt(index,61)*100
generalDateList[62] = this.GeneralOtherAtt(index,62)*100
return generalDateList
end
-- -- 刷新契约红点
-- function this.RefreshRedPointState()
-- local state = false
-- for i = 1, 6 do
-- local data = this.GetAllGeneralDatas(i)
-- if data then
-- local state_1 = false
-- if data.level < GeneralManager.MaxLevel(i) then
-- local generalUpdata = this.UpgradeExpend(i,data.level).UpgradeExpend
-- if BagManager.GetItemCountById(generalUpdata[1][1]) > generalUpdata[1][2] and BagManager.GetItemCountById(generalUpdata[2][1]) > generalUpdata[2][2] then
-- state_1 = true
-- end
-- end
-- local state_2 = false
-- local generalUpRank = GeneralManager.RankInfo(i,data.rankUpLevel)
-- if data.rankUpLevel < 50 then
-- if BagManager.GetItemCountById(generalUpRank[2][1]) > generalUpRank[2][2] and BagManager.GetItemCountById(generalUpRank[1][1]) > generalUpRank[1][2] then
-- state_2 = true
-- end
-- else
-- state_2 = false
-- end
-- if not state then
-- state = state_1 or state_2
-- end
-- end
-- end
-- return state
-- end
-- 是否可解锁
function this.IsCanUnlock(id)
local general = this.GetAllGeneralDatas(id)
if general ~= nil then return false end
-- 可用于解锁的英雄列表
local upStarHeroListData = HeroManager.GetUpStarHeroListData(23, {property = G_GeneralConfig[id].LockHero[3]}).heroList
local isCanUnLockNum = 0 -- 可用于解锁的英雄数量
for index, data in ipairs(upStarHeroListData) do
local teamIdList = HeroManager.GetAllFormationByHeroId(data.dynamicId)
if #teamIdList > 0 or data.lockState == 1 then
else
isCanUnLockNum = isCanUnLockNum + 1
end
end
return isCanUnLockNum > 0
end
-- 是否可升级
function this.IsCanUpLevel(id)
local general = this.GetAllGeneralDatas(id)
if general == nil then return false end
-- local upRank = this.RankInfo(id, general.rankUpLevel)
local upData = this.UpgradeExpend(id, general.level).UpgradeExpend
if general.level >= this.MaxLevel(id) then
return false
-- elseif upRank == nil then
-- return false
else
if BagManager.GetItemCountById(upData[1][1]) < upData[1][2] or BagManager.GetItemCountById(upData[2][1]) < upData[2][2] then
return false
end
end
return true
end
-- 是否可进阶
function this.IsCanAdvanced(id)
local general = this.GetAllGeneralDatas(id)
if general == nil then return false end
local upRank = this.RankInfo(id, general.rankUpLevel)
if general.rankUpLevel + 1 > 100 then
return false
end
local advancedLv = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.GeneralStepConfig,"GeneralId", id,"StepLev",general.rankUpLevel + 1)
if advancedLv.GeneralLev <= general.level then
if general.rankUpLevel == 100 then
return false
else
if BagManager.GetItemCountById(upRank[2][1]) < upRank[2][2] or BagManager.GetItemCountById(upRank[1][1]) < upRank[1][2] then
return false
end
end
else
return false
end
return true
end
--刷新契约红点
function this.RefreshRedPointState()
if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.GENERAL) then
return false
end
for i = 1, 5 do
if this.IsCanUnlock(i) or this.IsCanUpLevel(i) or this.IsCanAdvanced(i) then
return true
end
end
return false
end
return this