miduo_client/Assets/ManagedResources/~Lua/Modules/Likability/LikabilityManager.lua

95 lines
2.8 KiB
Lua
Raw Normal View History

2021-09-14 14:45:22 +08:00
LikabilityManager = {}
local this = LikabilityManager
function this.Initialize()
this.AllHeroDataLikAbility = {}
this.HeroLvList = {}
this.TotalLvList = {}
end
function this.InitializeTableData()
for k,v in ConfigPairs(ConfigManager.GetConfig(ConfigName.LikeAbility))
end
function this.UpdateAllBackData(msg)
for i = 1,#msg.heros do
this.UpdatelBackData(msg.heros[i].heroId,msg.heros[i].value)
end
end
function this.UpdatelBackData(heroId,value)
if not this.AllHeroDataLikAbility[heroId] then
this.AllHeroDataLikAbility[heroId] = {}
end
this.AllHeroDataLikAbility[heroId].value = value
this.AllHeroDataLikAbility[heroId].likeLv = this.GetHeroLikeLv(value)
end
function this.GetTotalHeroLikeLv()
local totalCurNum = 0
for k,v in pairs(this.AllHeroDataLikAbility) do
totalCurNum = totalCurNum + v.value
end
local totalLv,totalNum = this.GetLv(1,totalCurNum)
return totalCurNum,totalLv,totalNum
end
--indexType 1 获取总好感度等级 2获取单个神将好感度等级
function this.GetLv(indexType,value)
local list = {}
if indexType == 1 then
list = this.TotalLvList
else
list = this.HeroLvList
end
for i = 1,#list do
if not list[i].value or list[i].value <= 0 or value < list[i].value then
return list[i].lv,list[i].value
end
end
end
--indexType 1 获取总好感度属性 2获取单个神将好感度属性
--index -1 获取累加的好感度属性 其他 获取某级的好感度属性
--lv 累加到某级
function this.GetProData(indexType,index,lv)
local list = {}
if indexType == 1 then
list = this.TotalLvList
else
list = this.HeroLvList
end
for _,n in ipairs(list) do
if not heroSkinAllHeroProVal[n[1]] then
heroSkinAllHeroProVal[n[1]] = 0
end
heroSkinAllHeroProVal[n[1]] = heroSkinAllHeroProVal[n[1]] + n[2]
end
end
function this.GetTotalForce(heroData)
local SingleProVal = {}
local AllHeroProVal = {}
local lv,totalNum = 0,0
if this.AllHeroDataLikAbility[heroData.id] then
lv,totalNum = this.GetLv(2,this.AllHeroDataLikAbility[heroData.id].value)
SingleProVal = this.GetProData(2,-1,lv)
end
local totalCurNum,totalLv,totalNum = this.GetTotalHeroLikeLv()
AllHeroProVal = this.GetProData(1,-1,lv)
for _,v in pairs(this.skinDatas) do
if heroData.skinId ~= v.id then
if this.skinDatas[v.id] and this.skinDatas[v.id].UnlockProperty and #this.skinDatas[v.id].UnlockProperty > 0 then
end
end
end
return heroSkinSingleProVal, heroSkinAllHeroProVal
end
function this.CheckRedPot()
end
return this