293 lines
9.8 KiB
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 |