miduo_client/Assets/ManagedResources/~Lua/Modules/TianShuMiJuan/TianShuMiJuanManger.lua

260 lines
8.6 KiB
Lua

TianShuMiJuanManger = {}
local this = TianShuMiJuanManger
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
--读表
function this.Initialize()
this.fetterData = {}
for k,v in ConfigPairs(ConfigManager.GetConfig(ConfigName.SpiritAnimalBook)) do
local configData = this.CreatSingleConfigData(v)
if not this.fetterData[v.Id] then
this.fetterData[v.Id] = {}
end
this.fetterData[v.Id] = configData
end
Game.GlobalEvent:AddEvent(GameEvent.Player.OnLevelChange, this.OnLevelChange)
end
function this.OnLevelChange()
for k,v in pairs(this.fetterData) do
if v.enabled == -2 then
v.enabled = this.CheckOpenFetter(v.openLevel) and -1 or -2
end
end
this.CheckFetterStatus(1)
this.CheckFetterStatus(2)
this.CheckFetterStatus(3)
this.CheckFetterStatus(4)
this.CheckFetterStatus(5)
end
function this.CheckRedPointType(redType)
if redType == RedPointType.Hero_Fetter then
return this.CheckRedPoint(1)
elseif redType == RedPointType.SoulPrint_Fetter then
return this.CheckRedPoint(2)
elseif redType == RedPointType.TianShuPokemon_Fetter then
return this.CheckRedPoint(3)
elseif redType == RedPointType.Equip_Fetter then
return this.CheckRedPoint(4)
elseif redType == RedPointType.Weapon_Fetter then
return this.CheckRedPoint(5)
end
end
function this.CreatSingleConfigData(configData)
local data = {}
data.id = configData.Id
data.name = GetLanguageStrById(configData.Name)
data.teamers = configData.Teamers
data.activePara = configData.ActivePara
data.activeParaTip = ""--Language[12277]
for i = 1, #data.activePara do
local config = propertyConfig[data.activePara[i][1]]
local value= GetEquipPropertyFormatStr(config.Style,data.activePara[i][2])
data.activeParaTip = data.activeParaTip..GetLanguageStrById(config.Info).."+"..value .. " "
if i%2==0 then
data.activeParaTip = data.activeParaTip.."\n"
end
end
data.activeParaTip = rtrim(data.activeParaTip)
data.activeForce = configData.ActiveForce
data.fetterType = configData.FetterType
data.reward = configData.Reward
data.openLevel = configData.OpenLevel
data.enabled = this.CheckOpenFetter(data.openLevel) and -1 or -2 -- -2 未开启 -1 不可激活 0 可激活 1已激活
return data
end
--刷新已经激活的羁绊
function this.UpdateFetterId(ids)
for i = 1, #ids do
if this.fetterData[ids[i]] then
this.fetterData[ids[i]].enabled = 1
end
end
this.CheckFetterStatus(1)
this.CheckFetterStatus(2)
this.CheckFetterStatus(3)
this.CheckFetterStatus(4)
this.CheckFetterStatus(5)
end
--检测条件变化,判断羁绊是否可激活
function this.CheckFetterStatus(fetterType)
if fetterType == 1 then
local curPokemonSidList = PlayerManager.heroHandBook
this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
CheckRedPointStatus(RedPointType.Hero_Fetter)
elseif fetterType == 2 then
local curPokemonSidList = SoulPrintManager.GetAllHavedSoulPrint()
this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
CheckRedPointStatus(RedPointType.SoulPrint_Fetter)
elseif fetterType == 3 then
local curPokemonSidList = PokemonManager.GetAllPokemonGetDatas()
this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
CheckRedPointStatus(RedPointType.Pokemon_Fetter)
CheckRedPointStatus(RedPointType.TianShuPokemon_Fetter)
elseif fetterType == 4 then
local curPokemonSidList = EquipManager.GetHaveEquipDatas()
this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
CheckRedPointStatus(RedPointType.Equip_Fetter)
elseif fetterType ==5 then
local curPokemonSidList = GodWeaponManager.GetAllHandData()
this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
CheckRedPointStatus(RedPointType.Weapon_Fetter)
end
end
--刷新羁绊状态
function this.GetAllPokemonFetterDatas(fetterType,curPokemonSidList)
local SpiritAnimalBookList = {}
for k,v in pairs(this.fetterData) do
--LogError("fetterType=="..fetterType.." v.fettertype=="..v.fetterType)
if v.fetterType == fetterType and v.enabled == -1 then
if this.IsCompound(v.teamers,curPokemonSidList,v.fetterType) then
v.enabled = 0
end
end
end
end
function this.CheckRedPoint(fetterType)
for k,v in pairs(this.fetterData) do
if v.fetterType == fetterType and v.enabled == 0 then
-- 神将篇判断神将是否加入版本,有一个不在版本内就不显示
if fetterType == 1 then
local inVersion = true
for _, t in ipairs(v.teamers) do
if not HeroManager.InVersion(t[1]) then
inVersion = false
break
end
end
--
if inVersion then
return true
end
else
return true
end
end
end
return false
end
function this.IsCompound(Teamers,curPokemonSidList,fetterType)
local isCompound = true
for k,v in ipairs(Teamers) do
if curPokemonSidList[v[1]] == nil then
if isCompound then
isCompound = false
break
end
elseif fetterType and fetterType == 4 and curPokemonSidList[v[1]] < v[2] then
if isCompound then
isCompound = false
break
end
end
end
return isCompound
end
--根据type获取羁绊数据
function this.GetFetterDataByFetterType(fetterType)
local data = {}
--LogError("fetterType===="..fetterType)
for k,v in pairs(this.fetterData) do
if v.fetterType == fetterType and v.enabled ~= -2 then
-- 神将篇判断神将是否加入版本,有一个不在版本内就不显示
if fetterType == 1 then
local inVersion = true
for _, t in ipairs(v.teamers) do
if not HeroManager.InVersion(t[1]) then
inVersion = false
break
end
end
--
if inVersion then
table.insert(data,v)
end
else
--LogError("+++++++++++++++++++++++")
table.insert(data,v)
end
end
end
return data
end
function this.CheckOpenFetter(openLevel)
if openLevel > PlayerManager.level then
return false
end
return true
end
--获取所有羁绊总和属性 (羁绊属性直接加在团队属性上)
function this.GetAllFetterAddProsBy(fetterType)
local fetterData = this.GetFetterDataByFetterType(fetterType)
local addAllProVal = {}
for key, value in pairs(fetterData) do
if value.enabled == 1 and #value.activePara > 0 then
for i = 1, #value.activePara do
local curPro = value.activePara[i]
if curPro[2] > 0 then
if addAllProVal[curPro[1]] then
addAllProVal[curPro[1]]=addAllProVal[curPro[1]]+curPro[2]
else
addAllProVal[curPro[1]]=curPro[2]
end
end
end
end
end
return addAllProVal
end
----获取所有羁绊总和静态战力
function this.GetAllPokemonFetterAddProsSWarPower(fetterType)
local fetterData = this.GetFetterDataByFetterType(fetterType)
local addPowerVal = 0
for key, value in pairs(fetterData) do
if value.enabled == 1 and value.activeForce > 0 then
addPowerVal = addPowerVal + value.ActiveForce
end
end
return addPowerVal
end
function this.IsHaveItem(fetterType,id,num)
local data = {}
if fetterType == 1 then
data = PlayerManager.heroHandBook
elseif fetterType == 2 then
data = SoulPrintManager.GetAllHavedSoulPrint()
elseif fetterType == 3 then
data = PokemonManager.GetAllPokemonGetDatas()
elseif fetterType == 4 then
data = EquipManager.GetHaveEquipDatas()
elseif fetterType ==5 then
data = GodWeaponManager.GetAllHandData()
end
if fetterType == 4 then
if data[id] and data[id] >= num then
return true
else
return false
end
elseif data[id] then
return true
end
return false
end
return this