miduo_client/Assets/ManagedResources/~Lua/Modules/QiJieShiLian/QiJieShiLianManager.lua

280 lines
10 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

QiJieShiLianManager = {}
local this = QiJieShiLianManager
local QijieHolyConfig = ConfigManager.GetConfig(ConfigName.QijieHolyConfig)
local QijieRanking = ConfigManager.GetConfig(ConfigName.QijieRanking)
local QijieStage = ConfigManager.GetConfig(ConfigName.QijieStage)
local QijieStageBuff = ConfigManager.GetConfig(ConfigName.QijieStageBuff)
local QijieTreasure = ConfigManager.GetConfig(ConfigName.QijieTreasure)
local QijieUpgrade = ConfigManager.GetConfig(ConfigName.QijieUpgrade)
local HeroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
local PassiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig)
local PassiveSkillLogicConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillLogicConfig)
function this.Initialize()
this.curLevelId = 3004
this.curRank = 999
this.curScore = 1
this.QijieType = 1
this.curProgress = 0
this.treasureList = {}
this.treasureActiveList = {}
this.InitTreasureData()
this.battleResult = {}
end
function this.InitTreasureData()
for _, configInfo in ConfigPairs(QijieHolyConfig) do
if configInfo.Id ~= 0 then
local data = {}
data.Id = configInfo.Id
data.Name = configInfo.Name
data.Quality = configInfo.Quality
data.Icon = configInfo.Icon
data.Type = configInfo.Type
data.Position = configInfo.Position
data.AttriType = configInfo.AttriType
data.Cost = configInfo.Cost
data.Addition = configInfo.Addition
data.Desc = configInfo.Desc
data.Buff = configInfo.Buff
data.state = 2 --0未激活1已激活2未购买
this.treasureList[data.Id] = data
end
end
end
--界面获取信息
function this.GetQiJieData(targetLevel)
--上阵列表赋值
-- local curFormation = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_NORMAL)
-- if FormationManager.GetFormationByID(FormationTypeDef.FORMATION_QIJIESHILIAN) then
curFormation = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_QIJIESHILIAN)
-- end
this.formationList ={}
for j = 1, #curFormation.teamHeroInfos do
if curFormation.teamHeroInfos[j] then
table.insert(this.formationList,HeroManager.GetSingleHeroData(curFormation.teamHeroInfos[j].heroId).heroConfig)
end
end
--界面信息
local data = {}
data.curLevelId = this.curLevelId
data.curRank = this.curRank
data.curScore = this.curScore
data.curProgress = this.curProgress
data.curStageData = QijieStage[this.curLevelId]
return data
end
--获取服务器信息
function this.GetServerData(msg)
this.curLevelId = msg.id
this.curRank = msg.ranking
this.curScore = msg.integral
this.curProgress = msg.totalTier
end
function this.CheckCurStageNum()
local data = ConfigManager.GetAllConfigsDataByKey(ConfigName.QijieStage,"QijieType",this.QijieType)
LogGreen(tostring(#data)..LengthOfTable(data))
-- return ConfigManager.GetAllConfigsDataByKey(ConfigName.QijieStage,"QijieType",this.QijieType)
end
--获取下方滑动条数据
function this.GetTabList()
local tabList = {}
for _, configInfo in ConfigPairs(QijieStage) do
if not tabList[configInfo.QijieType] then
tabList[configInfo.QijieType] = configInfo
end
end
return tabList
end
--检测该条目是否达成
function this.CheckGoalIsFinish(_dataId,_obj,_formationList)
local goalData = QijieUpgrade[_dataId]
local tempList = {}
local final = true
local heroList = {}
-- LogRed("Id:"..tostring(goalData.Id).." Describe:"..tostring(goalData.Describe).." PropertyName:"..tostring(goalData.PropertyName).." Profession:"..tostring(goalData.Profession).." Min:"..tostring(goalData.Min).." Max:"..tostring(goalData.Max))
heroList = _formationList and _formationList or this.formationList
if #heroList == 0 then
-- LogYellow("final = false0")
final = false
end
for i = 1, #heroList do
table.insert(tempList,HeroConfig[HeroManager.GetSingleHeroData(heroList[i].heroId).id])
end
if #tempList > 0 and final and goalData.PropertyName and goalData.PropertyName > 0 then
for i = #tempList, 1,-1 do
if goalData.PropertyName ~= tempList[i].PropertyName then
table.remove(tempList,i)
if #tempList == 0 then
final = true
end
end
end
end
-- LogGreen("#tempList1:"..tostring(#tempList))
if #tempList > 0 and final and goalData.Profession and goalData.Profession > 0 then
for i = #tempList, 1,-1 do
if goalData.Profession ~= tempList[i].Profession then
table.remove(tempList,i)
if #tempList == 0 then
final = true
end
end
end
end
-- LogGreen("#tempList1:"..tostring(#tempList))
if final and goalData.Min and goalData.Min >= 0 then
if #tempList < goalData.Min then
-- LogYellow("final = false1")
final = false
end
end
if final and goalData.Max and goalData.Max >= 0 then
if #tempList > goalData.Max then
-- LogYellow("final = false2")
final = false
end
end
_obj.text = string.format( "<color=#BAAF98>%s</color>",goalData.Describe)
if final then
_obj.text = string.format( "<color=#27DD65>%s</color>",goalData.Describe)
end
return final
end
--把服务器发来的遗物数据加到本地数据中
function this.MixTreasureServerAndLocalData(msg)
this.treasureActiveList = msg.info
for i = 1, #msg.info do
if this.treasureList[msg.info[i].id] then
this.treasureList[msg.info[i].id].state = msg.info[i].status
else
LogError("服务器发来了前端不存在的遗物Id"..tostring(msg.info[i].id))
end
end
end
--把1维的List换成2维的。并且增加稀有度条件
function this.FormatTreasureData(_tabNum)
local list = {}
for k,v in pairs(this.treasureList) do
list[k] = v
end
if _tabNum and _tabNum ~= 0 then
for k,v in pairs(list) do
if v.Quality ~= _tabNum then
table.remove(list,k)
end
end
end
local num = math.ceil( LengthOfTable(list)/4 )
local dataList = {}
for i = 1, num do
dataList[i] = {}
for j = 1, 4 do
if list[(i-1)*4+j] then
dataList[i][j] = list[(i-1)*4+j]
else
return dataList
end
end
end
return dataList
end
--获取战斗结束后信息(拼接)
function this.GetBattleResult()
local config = QijieStage[this.curLevelId]
local data = {}
data[1] = string.format( "阵容加成: %s%\n(%s条)",(#this.battleResult.teamBuffIds)*(config.Addition[2]/100),#this.battleResult.teamBuffIds)
data[2] = string.format( "遗物加成: %s%\n(%s条)",(#this.battleResult.relicIds)*10,#this.battleResult.relicIds)
local bonue = config.RoundReward[1][2]
for i = 1, #config.RoundReward do
if this.battleResult.round > config.RoundReward[i][1] then
bonue = config.RoundReward[i][2]
end
end
data[3] = string.format( "回合加成: %s%\n(%s条)",bonue/100,this.battleResult.round)
return data
end
--获取遗物效果
function this.GetTreasureEffect(treasureList)
local moneyString = ""
local attriString = ""
local attriTitle = ""
local moneyNum = 0
local attriList1 = {}
local attriList2 = {}
for i = 1, #treasureList do
-- LogYellow("treasureList[i]"..tostring(treasureList[i]))
local tData = QijieHolyConfig[treasureList[i]]
--界灵数量加成
moneyNum = moneyNum + tData.Addition[2]
-- LogYellow("moneyNum"..tostring(moneyNum))
--属性加成
if not attriList1[tData.AttriType] then
-- LogGreen("1")
attriList1[tData.AttriType] = {}
end
-- LogGreen("2")
attriList1[tData.AttriType].title = tData.Desc
if not attriList1[tData.AttriType].ValueList then
LogGreen("3,tData.AttriType"..tostring(tData.AttriType))
attriList1[tData.AttriType].ValueList = {}
end
-- LogGreen("4,tData.Buff:"..tostring(tData.Buff))
table.insert(attriList1[tData.AttriType].ValueList,tData)
end
for k,v in pairs(attriList1) do
for m,n in pairs(v.ValueList) do
local buffData = PassiveSkillLogicConfig[n.Buff]
if not attriList2[k] then
attriList2[k] = {}
end
attriList2[k].title = attriList1[k].title
-- LogGreen("5,Desc:"..tostring(attriList2[k].title))
if not attriList2[k][buffData.Value[1]] then
attriList2[k][buffData.Value[1]] = {}
end
-- LogYellow("Desc:"..tostring(PassiveSkillConfig[n.Buff].Desc))
attriList2[k][buffData.Value[1]].Desc = PassiveSkillConfig[n.Buff].Desc
if attriList2[k][buffData.Value[1]].Value then
attriList2[k][buffData.Value[1]].Value = attriList2[k][buffData.Value[1]].Value + tonumber(PassiveSkillConfig[n.Buff].DescValue[1])/100
else
attriList2[k][buffData.Value[1]].Value = tonumber(PassiveSkillConfig[n.Buff].DescValue[1])/100
end
end
end
moneyString = string.format( "挑战获得界灵数量<color=#4ab47a>+%s</color>",tostring(moneyNum/100).."%")
return moneyString,attriList2
end
function this.GetSring(stringList,type)
local str = ""
for k,v in pairs(stringList) do
-- LogPink("Desc1:"..tostring(v.title))
str = str..v.title
for m,n in pairs(v) do
if tonumber(m) then
-- LogBlue("m2:"..tostring(tonumber(m)))
-- LogBlue("Desc2:"..tostring(n.Desc))
-- LogBlue("Value2:"..tostring(n.Value))
str = str..string.format(n.Desc,"<color=#d70f09>"..n.Value.."%</color>")
if type and type == 1 then
str = str.."\n"
end
end
end
end
return str
end
return QiJieShiLianManager