2021-04-21 13:12:04 +08:00
|
|
|
|
PokemonManager = {}
|
2020-10-31 17:01:46 +08:00
|
|
|
|
local this = PokemonManager
|
|
|
|
|
local spiritAnimal = ConfigManager.GetConfig(ConfigName.SpiritAnimal)
|
|
|
|
|
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
|
|
|
|
local spiritAnimalBook = ConfigManager.GetConfig(ConfigName.SpiritAnimalBook)
|
|
|
|
|
local pokemons = {}--灵兽数据
|
|
|
|
|
local pokemonFetter = {}--灵兽羁绊
|
|
|
|
|
local pokemonFormation = {}--灵兽编队
|
|
|
|
|
local pokemonGet = {} --已经获得过的灵兽
|
|
|
|
|
function this.Initialize()
|
2020-11-27 10:57:50 +08:00
|
|
|
|
pokemons = {}
|
2020-10-31 17:01:46 +08:00
|
|
|
|
pokemonFormation = {}
|
|
|
|
|
for i = 1, 6 do
|
|
|
|
|
local teamInfo = {}
|
|
|
|
|
teamInfo.pokemonId = nil
|
|
|
|
|
teamInfo.position = i
|
|
|
|
|
table.insert(pokemonFormation, teamInfo)
|
|
|
|
|
end
|
|
|
|
|
Game.GlobalEvent:AddEvent(GameEvent.Pokemon.PokemonChipRefresh, this.PokemonChipRefresh)
|
|
|
|
|
end
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
--初始化灵兽数据
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
function this.InitPokemonsData(_msgPokemonList)
|
2020-11-27 10:57:50 +08:00
|
|
|
|
if _msgPokemonList then
|
|
|
|
|
-- LogPink("初始化灵兽数据" .. #_msgPokemonList)
|
|
|
|
|
for i = 1, #_msgPokemonList do
|
|
|
|
|
this.UpdatePokemonDatas(_msgPokemonList[i])
|
|
|
|
|
end
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
2021-09-17 15:08:37 +08:00
|
|
|
|
--
|
|
|
|
|
HeroPropManager.SetFuncPropDirty(Func_Prop_Type.Pokemon)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--刷新本地数据v 掉落时调用
|
|
|
|
|
function this.UpdatePokemonDatas(_msgPokemonData,isRefreshFetter)--单个掉落时 需要检测是否激活羁绊isRefreshFetter
|
|
|
|
|
local singPokemonData = {}
|
|
|
|
|
-- LogPink("单个灵兽信息 ".._msgPokemonData.tempId.." ".. _msgPokemonData.level.." ".. _msgPokemonData.star.." ".._msgPokemonData.id)
|
|
|
|
|
singPokemonData.heroBackData = _msgPokemonData
|
|
|
|
|
singPokemonData.id = _msgPokemonData.tempId
|
|
|
|
|
singPokemonData.dynamicId = _msgPokemonData.id
|
|
|
|
|
singPokemonData.star = _msgPokemonData.star
|
|
|
|
|
singPokemonData.lv = _msgPokemonData.level
|
|
|
|
|
if spiritAnimal[singPokemonData.id].Live <= 0 then return end
|
|
|
|
|
singPokemonData.live = GetResourcePath(spiritAnimal[singPokemonData.id].Live)
|
|
|
|
|
singPokemonData.scale = spiritAnimal[singPokemonData.id].Scale
|
|
|
|
|
singPokemonData.position = spiritAnimal[singPokemonData.id].Position
|
|
|
|
|
singPokemonData.config= spiritAnimal[_msgPokemonData.tempId]
|
|
|
|
|
|
|
|
|
|
pokemons[singPokemonData.dynamicId] = singPokemonData
|
|
|
|
|
if isRefreshFetter then
|
|
|
|
|
this.GetPokemonRefreshFetter(singPokemonData.id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--获取当前灵兽数据
|
|
|
|
|
function this.GetSinglePokemonData(_did)
|
|
|
|
|
if not _did then return nil end
|
|
|
|
|
if pokemons[_did] then
|
|
|
|
|
return pokemons[_did]
|
|
|
|
|
else
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--获取所有灵兽数据
|
|
|
|
|
function this.GetPokemonDatas()
|
|
|
|
|
local list = {}
|
|
|
|
|
for k,v in pairs(pokemons) do
|
|
|
|
|
table.insert(list, v)
|
|
|
|
|
end
|
|
|
|
|
-- 排序
|
|
|
|
|
local AllPokemonFormationDids = PokemonManager.GetAllPokemonFormationDids()
|
|
|
|
|
table.sort(list, function(a,b)
|
|
|
|
|
if AllPokemonFormationDids[a.dynamicId] and AllPokemonFormationDids[b.dynamicId] or not AllPokemonFormationDids[a.dynamicId] and not AllPokemonFormationDids[b.dynamicId] then
|
|
|
|
|
if spiritAnimal[a.id].Quality == spiritAnimal[b.id].Quality then
|
|
|
|
|
if a.star == b.star then
|
|
|
|
|
if a.lv == b.lv then
|
|
|
|
|
return a.id < b.id
|
|
|
|
|
else
|
|
|
|
|
return a.lv > b.lv
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
return a.star > b.star
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
return spiritAnimal[a.id].Quality > spiritAnimal[b.id].Quality
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
return AllPokemonFormationDids[a.dynamicId] and not AllPokemonFormationDids[b.dynamicId]
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
return list
|
|
|
|
|
end
|
|
|
|
|
--获取所有灵兽数据
|
|
|
|
|
function this.GetPokemonUpZhenDatas()
|
|
|
|
|
local formationUpZhens = {}
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if pokemons[pokemonFormation[i].pokemonId] then
|
|
|
|
|
table.insert(formationUpZhens, pokemons[pokemonFormation[i].pokemonId])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return formationUpZhens
|
|
|
|
|
end
|
|
|
|
|
--获取所有灵兽数据
|
|
|
|
|
function this.GetPokemonResolveDatas()
|
|
|
|
|
local curAllPokemonList = {}
|
|
|
|
|
local list=this.GetAllPokemonFormationDids()
|
|
|
|
|
for key, value in pairs(pokemons) do
|
|
|
|
|
if list and not list[value.dynamicId] then
|
|
|
|
|
|
|
|
|
|
table.insert(curAllPokemonList,value)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return curAllPokemonList
|
|
|
|
|
end
|
|
|
|
|
--移除多个灵兽数据
|
|
|
|
|
function this.RemovePokemonData(ids)
|
|
|
|
|
if not ids then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
for i = 1,#ids do
|
|
|
|
|
local id=ids[i]
|
|
|
|
|
this.RemoveSinglePokemonData(id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--获取当前可上阵的所有灵兽数据 curUpZhenPokemonData 如果不为空就时替换上阵操作
|
|
|
|
|
function this.GetCanUpZhenPokemonDatas(curUpZhenPokemonData)
|
|
|
|
|
local upZhenSidList = this.GetAllPokemonFormationSids()
|
|
|
|
|
local curAllPokemonList = {}
|
|
|
|
|
for key, value in pairs(pokemons) do
|
|
|
|
|
if not upZhenSidList[value.id] then
|
|
|
|
|
table.insert(curAllPokemonList,value)
|
|
|
|
|
end
|
|
|
|
|
if curUpZhenPokemonData then
|
|
|
|
|
if value.id == curUpZhenPokemonData.id and value.dynamicId ~= curUpZhenPokemonData.dynamicId then
|
|
|
|
|
table.insert(curAllPokemonList,value)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return curAllPokemonList
|
|
|
|
|
end
|
|
|
|
|
--移除灵兽数据
|
|
|
|
|
function this.RemoveSinglePokemonData(_did)
|
|
|
|
|
if not _did then return end
|
|
|
|
|
if pokemons[_did] then
|
|
|
|
|
pokemons[_did] = nil
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--前端刷新单个灵兽数据
|
|
|
|
|
function this.UpdateSinglePokemonData(_did,_lv,_star)
|
|
|
|
|
if not _did then return end
|
|
|
|
|
if pokemons[_did] then
|
|
|
|
|
pokemons[_did].lv = _lv
|
|
|
|
|
pokemons[_did].star = _star
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--获取当前所有可吞卡灵兽数据
|
|
|
|
|
function this.GetNoUpLvPokemonData(_id,_did)
|
|
|
|
|
local curAllPokemonList = {}
|
2020-11-02 10:58:48 +08:00
|
|
|
|
local upZhenDids = this.GetAllPokemonFormationDids()
|
2020-10-31 17:01:46 +08:00
|
|
|
|
for key, value in pairs(pokemons) do
|
2020-11-02 10:58:48 +08:00
|
|
|
|
if not upZhenDids[value.dynamicId] and value.star <= 0 and value.lv <= 1 and value.id == _id and value.dynamicId ~= _did then
|
2020-10-31 17:01:46 +08:00
|
|
|
|
table.insert(curAllPokemonList,value)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return curAllPokemonList
|
|
|
|
|
end
|
|
|
|
|
--获取单个灵兽属性 (灵兽属性/编队人数 灵兽属性会平分给上阵的所有神将)
|
|
|
|
|
function this.GetSinglePokemonAddProData(_did,_star)--_star 传值的话就用此星级计算属性
|
|
|
|
|
-- LogPink("_did 1 ".._did)
|
|
|
|
|
if not pokemons[_did] then return end
|
|
|
|
|
-- LogPink("_did 2 ".._did)
|
|
|
|
|
local addAllProVal = {}
|
|
|
|
|
local curPokeonData = pokemons[_did]
|
|
|
|
|
local curPokemonConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal,curPokeonData.id)
|
|
|
|
|
local curPokemonLvConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.SpiritAnimalLevel,"Quality",curPokemonConFig.Quality,"Level",curPokeonData.lv)
|
|
|
|
|
local curPokemonStarConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.SpiritAnimalStar,"Quality",curPokemonConFig.Quality,"Star",_star and _star or curPokeonData.star)
|
|
|
|
|
--基础
|
2021-02-19 17:50:10 +08:00
|
|
|
|
addAllProVal[HeroProType.Hp] = curPokemonConFig.Hp
|
2020-10-31 17:01:46 +08:00
|
|
|
|
addAllProVal[HeroProType.Attack] = curPokemonConFig.Attack
|
|
|
|
|
addAllProVal[HeroProType.PhysicalDefence] = curPokemonConFig.PhysicalDefence
|
|
|
|
|
addAllProVal[HeroProType.MagicDefence] = curPokemonConFig.MagicDefence
|
|
|
|
|
--升级
|
|
|
|
|
for i = 1, #curPokemonLvConFig.CharacterLevelPara do
|
|
|
|
|
local curPro = curPokemonLvConFig.CharacterLevelPara[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
|
|
|
|
|
--升星 属性=(基础属性+等级属性)*(1+星级倍率)
|
|
|
|
|
local StarPara = curPokemonStarConFig.StarPara/10000
|
|
|
|
|
local addEndAllProVal = {}
|
|
|
|
|
for key, value in pairs(addAllProVal) do
|
|
|
|
|
addEndAllProVal[key] = math.floor(value * (1 + StarPara))
|
|
|
|
|
end
|
|
|
|
|
return addEndAllProVal
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--获取单个灵兽属性 (灵兽属性/编队人数 灵兽属性会平分给上阵的所有神将)
|
|
|
|
|
function this.GetSinglePokemonAddProDataByLvAndStar(_did,_lv,_star)--_star 传值的话就用此星级计算属性
|
|
|
|
|
LogError("did".._did.. " lv".._lv.." star".._star)
|
|
|
|
|
local addAllProVal = {}
|
|
|
|
|
local curPokemonConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal,_did)
|
|
|
|
|
local curPokemonLvConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.SpiritAnimalLevel,"Quality",curPokemonConFig.Quality,"Level",_lv)
|
|
|
|
|
local curPokemonStarConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.SpiritAnimalStar,"Quality",curPokemonConFig.Quality,"Star",_star)
|
|
|
|
|
--基础
|
|
|
|
|
addAllProVal[HeroProType.Hp] = curPokemonConFig.Hp
|
|
|
|
|
addAllProVal[HeroProType.Attack] = curPokemonConFig.Attack
|
|
|
|
|
addAllProVal[HeroProType.PhysicalDefence] = curPokemonConFig.PhysicalDefence
|
|
|
|
|
addAllProVal[HeroProType.MagicDefence] = curPokemonConFig.MagicDefence
|
|
|
|
|
--升级
|
|
|
|
|
for i = 1, #curPokemonLvConFig.CharacterLevelPara do
|
|
|
|
|
local curPro = curPokemonLvConFig.CharacterLevelPara[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
|
|
|
|
|
--升星 属性=(基础属性+等级属性)*(1+星级倍率)
|
|
|
|
|
local StarPara = curPokemonStarConFig.StarPara/10000
|
|
|
|
|
local addEndAllProVal = {}
|
|
|
|
|
for key, value in pairs(addAllProVal) do
|
|
|
|
|
addEndAllProVal[key] = value * (1 + StarPara)
|
|
|
|
|
end
|
|
|
|
|
return addEndAllProVal
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--获取单个灵兽属性 (灵兽属性/编队人数 灵兽属性会平分给上阵的所有神将)
|
|
|
|
|
function this.GetSinglePokemonAddProDataBySid(_sid)
|
|
|
|
|
local addAllProVal = {}
|
|
|
|
|
local curPokemonConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal,_sid)
|
|
|
|
|
--基础
|
|
|
|
|
addAllProVal[HeroProType.Hp] = curPokemonConFig.Hp
|
|
|
|
|
addAllProVal[HeroProType.Attack] = curPokemonConFig.Attack
|
|
|
|
|
addAllProVal[HeroProType.PhysicalDefence] = curPokemonConFig.PhysicalDefence
|
|
|
|
|
addAllProVal[HeroProType.MagicDefence] = curPokemonConFig.MagicDefence
|
|
|
|
|
return addAllProVal
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--根据星级获得技能id
|
|
|
|
|
function this.GetCurStarSkillId(_sid,_star)
|
|
|
|
|
local curConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal,_sid)
|
|
|
|
|
local skillId = nil
|
|
|
|
|
if curConFig then
|
|
|
|
|
for i = 1, #curConFig.SkillArray do
|
|
|
|
|
if curConFig.SkillArray[i][1] == _star then
|
|
|
|
|
skillId = curConFig.SkillArray[i][2]
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return skillId
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
--灵兽羁绊 (羁绊属性直接就是团队属性)
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
function this.InitPokemonsGetrData(_msgPokemonGetList)
|
2020-11-27 10:57:50 +08:00
|
|
|
|
if not _msgPokemonGetList then
|
|
|
|
|
return
|
|
|
|
|
end
|
2020-10-31 17:01:46 +08:00
|
|
|
|
pokemonGet = {}
|
|
|
|
|
for i = 1, #_msgPokemonGetList do
|
|
|
|
|
pokemonGet[_msgPokemonGetList[i]] = _msgPokemonGetList[i]
|
|
|
|
|
end
|
2021-03-17 14:29:34 +08:00
|
|
|
|
TianShuMiJuanManger.CheckFetterStatus(3)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function this.GetAllPokemonGetDatas()
|
|
|
|
|
return pokemonGet
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--判断是否激活新的灵兽羁绊数据
|
|
|
|
|
function this.GetPokemonRefreshFetter(_sid)
|
|
|
|
|
if pokemonGet[_sid] then
|
|
|
|
|
return
|
|
|
|
|
end
|
2021-03-16 17:37:32 +08:00
|
|
|
|
pokemonGet[_sid] = _sid
|
|
|
|
|
TianShuMiJuanManger.CheckFetterStatus(3)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--获取所有的灵兽种类
|
|
|
|
|
function this.GetCurPokemonSidList()
|
|
|
|
|
local curPokemonSidList = {}
|
|
|
|
|
for key, value in pairs(pokemons) do
|
|
|
|
|
curPokemonSidList[value.id] = value
|
|
|
|
|
end
|
|
|
|
|
return curPokemonSidList
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--获取所有灵兽羁绊总和属性 (羁绊属性直接加在团队属性上)
|
|
|
|
|
function this.GetAllPokemonFetterAddPros()
|
2021-03-16 17:37:32 +08:00
|
|
|
|
return TianShuMiJuanManger.GetAllFetterAddProsBy(3)
|
|
|
|
|
|
2021-09-16 13:35:33 +08:00
|
|
|
|
end
|
2020-10-31 17:01:46 +08:00
|
|
|
|
----获取所有灵兽羁绊总和静态战力
|
|
|
|
|
function this.GetAllPokemonFetterAddProsSWarPower()
|
2021-03-16 17:37:32 +08:00
|
|
|
|
return TianShuMiJuanManger.GetAllPokemonFetterAddProsSWarPower(3)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
--灵兽编队
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
|
|
--刷新本地灵兽编队数据
|
|
|
|
|
function this.UpdatePokemonFormationDatas(_msgPokemonFormationList)
|
|
|
|
|
-- LogPink("# _msgPokemonFormationList "..# _msgPokemonFormationList)
|
|
|
|
|
if not _msgPokemonFormationList then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
for i = 1, #_msgPokemonFormationList do
|
|
|
|
|
-- LogPink("_msgPokemonFormationList[i].pokemonId ".._msgPokemonFormationList[i].pokemonId)
|
|
|
|
|
pokemonFormation[_msgPokemonFormationList[i].position].pokemonId = _msgPokemonFormationList[i].pokemonId
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--获取变队形信息
|
|
|
|
|
function this.GetAllPokemonFormationData()
|
|
|
|
|
-- for i = 1, #pokemonFormation do
|
|
|
|
|
-- if pokemonFormation[i].pokemonId then
|
|
|
|
|
-- LogPink("pokemonFormation[i].pokemonId "..pokemonFormation[i].position.." "..pokemonFormation[i].pokemonId)
|
|
|
|
|
-- end
|
|
|
|
|
-- end
|
|
|
|
|
return pokemonFormation
|
|
|
|
|
end
|
2021-09-16 13:35:33 +08:00
|
|
|
|
|
2020-10-31 17:01:46 +08:00
|
|
|
|
--获取编队灵兽静态id list
|
|
|
|
|
function this.GetAllPokemonFormationSids()
|
|
|
|
|
local formationSids = {}
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if pokemons[pokemonFormation[i].pokemonId] then
|
|
|
|
|
formationSids[pokemons[pokemonFormation[i].pokemonId].id] = pokemons[pokemonFormation[i].pokemonId]
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return formationSids
|
|
|
|
|
end
|
|
|
|
|
--获取编队灵兽动态id list
|
|
|
|
|
function this.GetAllPokemonFormationDids()
|
|
|
|
|
local formationDids = {}
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if pokemons[pokemonFormation[i].pokemonId] then
|
|
|
|
|
formationDids[pokemonFormation[i].pokemonId] = pokemonFormation[i]
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return formationDids
|
|
|
|
|
end
|
|
|
|
|
--获取灵兽编队属性
|
|
|
|
|
function this.GetPokemonFormationAddPro()
|
|
|
|
|
local allPro = {}
|
|
|
|
|
for key, value in pairs(pokemonFormation) do
|
|
|
|
|
if value.pokemonId and pokemons[value.pokemonId] then
|
|
|
|
|
local curPokemonAddPro = this.GetSinglePokemonAddProData(value.pokemonId)
|
|
|
|
|
HeroManager.DoubleTableCompound(allPro, curPokemonAddPro)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return allPro
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--获取灵兽编队属性 在编队中的团队属性加成 除以英雄编队人数
|
|
|
|
|
function this.GetPokemonFormationTeamAddPro(heroFormationNum)
|
|
|
|
|
local allPro = this.GetPokemonFormationAddPro()
|
|
|
|
|
-- local formationHeros = FormationManager.GetWuJinFormationHeroIds(formationIndex)
|
|
|
|
|
-- local heroFormationNum = #formationHeros
|
|
|
|
|
for key, value in pairs(allPro) do
|
|
|
|
|
allPro[key] = math.floor(value/heroFormationNum)
|
|
|
|
|
end
|
|
|
|
|
return allPro
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--刷新编队信息 type 1 上阵 2 下阵 3 替换(上阵)
|
|
|
|
|
function this.RefreshPokemonFormation(_pokemonFormation)
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if _pokemonFormation[i] and _pokemonFormation[i].pokemonId then
|
|
|
|
|
if i == _pokemonFormation[i].position then
|
|
|
|
|
-- LogPink("_msgPokemonFormationList[i].pokemonId ".._pokemonFormation[i].pokemonId)
|
|
|
|
|
pokemonFormation[i].pokemonId = _pokemonFormation[i].pokemonId
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function this.PiaoWarPowerChange(oldWarPower,newWarPower)
|
|
|
|
|
--飘战力
|
|
|
|
|
LogPink("oldWarPower ~= newWarPower "..oldWarPower.." "..newWarPower)
|
|
|
|
|
if oldWarPower ~= newWarPower then
|
|
|
|
|
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldWarPower,newValue = newWarPower})--,pos=Vector3.New(-467,837.2),duration=0.7,isShowBg=false,isShowOldNum=false,pivot=Vector2.New(0,0.5)})
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
--红点检测
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
--灵兽红点检测方法
|
|
|
|
|
function this.CheckRedPointStatusPokemonMainCityRed()
|
|
|
|
|
-- LogPink("···········刷新灵兽红点···········")
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_UpLv)
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_UpStar)
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_CanUpZhen)
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_ChipCompound)
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_Fetter)
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_Recruit)
|
|
|
|
|
end
|
|
|
|
|
--上阵灵兽升级红点
|
|
|
|
|
function this.RefreshPokemonUpLvRedPoint()
|
|
|
|
|
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
|
|
|
|
|
if not isOpen then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if pokemonFormation[i] and pokemonFormation[i].pokemonId then
|
|
|
|
|
local curPokemonData = pokemons[pokemonFormation[i].pokemonId]
|
|
|
|
|
if curPokemonData then
|
|
|
|
|
local singlePokemonPoint = this.GetSinglePokemonUpLvRedPoint(curPokemonData)
|
|
|
|
|
if singlePokemonPoint then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("上阵灵兽升级红点true")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("上阵灵兽升级红点false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
--上阵灵兽升级红点2
|
|
|
|
|
function this.GetSinglePokemonUpLvRedPoint(curPokemonData)
|
|
|
|
|
local pokemonConFig = spiritAnimal[curPokemonData.id]
|
2020-11-02 18:16:28 +08:00
|
|
|
|
local upLvConFig = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.SpiritAnimalLevel,"Quality",pokemonConFig.Quality,"Level",curPokemonData.lv)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
if curPokemonData.lv < pokemonConFig.MaxLevel then
|
|
|
|
|
local canUpLv = true
|
|
|
|
|
for j = 1, #upLvConFig.Consume do
|
|
|
|
|
local curMaterialBagNum = BagManager.GetItemCountById(upLvConFig.Consume[j][1])
|
|
|
|
|
if curMaterialBagNum < upLvConFig.Consume[j][2] then
|
|
|
|
|
canUpLv = false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if canUpLv then
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
--上阵灵兽升星红点
|
|
|
|
|
function this.RefreshPokemonUpStarRedPoint()
|
|
|
|
|
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
|
|
|
|
|
if not isOpen then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
for i = 1, #pokemonFormation do
|
|
|
|
|
if pokemonFormation[i] and pokemonFormation[i].pokemonId then
|
|
|
|
|
local curPokemonData = pokemons[pokemonFormation[i].pokemonId]
|
|
|
|
|
local singlePokemonPoint = this.GetSinglePokemonUpStarRedPoint(curPokemonData)
|
|
|
|
|
if singlePokemonPoint then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("上阵灵兽升星红点true")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("上阵灵兽升星红点false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
--上阵灵兽升星红点2
|
|
|
|
|
function this.GetSinglePokemonUpStarRedPoint(curPokemonData)
|
|
|
|
|
if curPokemonData and curPokemonData.star < spiritAnimal[curPokemonData.id].MaxStar then
|
2020-11-02 11:52:00 +08:00
|
|
|
|
local curUpStarConfig = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.SpiritAnimalStar,"Quality", spiritAnimal[curPokemonData.id].Quality, "Star", curPokemonData.star)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
if curUpStarConfig then
|
|
|
|
|
local upStarMaterialsData = {{curPokemonData.id,curUpStarConfig.ConsumeItemNum}}
|
|
|
|
|
for j = 1, #curUpStarConfig.ConsumeRes do
|
|
|
|
|
table.insert(upStarMaterialsData,curUpStarConfig.ConsumeRes[j])
|
|
|
|
|
end
|
|
|
|
|
local isCanUpStar = true
|
|
|
|
|
for k = 1, #upStarMaterialsData do
|
|
|
|
|
if upStarMaterialsData[k] then
|
|
|
|
|
local configMaterialId = upStarMaterialsData[k][1]
|
|
|
|
|
local configMaterialNum = upStarMaterialsData[k][2]
|
|
|
|
|
local curMaterialBagNum
|
|
|
|
|
if k == 1 then--需要的灵兽
|
|
|
|
|
local NoUpLvPokemonData = PokemonManager.GetNoUpLvPokemonData(curPokemonData.id,curPokemonData.dynamicId)
|
|
|
|
|
curMaterialBagNum = LengthOfTable(NoUpLvPokemonData)
|
|
|
|
|
elseif k >= 2 then--需要的材料
|
|
|
|
|
curMaterialBagNum = BagManager.GetItemCountById(upStarMaterialsData[k][1])
|
|
|
|
|
end
|
|
|
|
|
if curMaterialBagNum < configMaterialNum then
|
|
|
|
|
isCanUpStar = false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if isCanUpStar then
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
--可以上阵灵兽红点
|
|
|
|
|
function this.RefreshPokemonCanUpZhenRedPoint()
|
|
|
|
|
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
|
|
|
|
|
if not isOpen then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
local canPokemonList = this.GetCanUpZhenPokemonDatas()
|
|
|
|
|
if #canPokemonList <= 0 then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("可以上阵灵兽红点false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
local pokemonPosLocks = ConfigManager.GetConfigData(ConfigName.SpiritAnimalSetting,1).BlockUnlockLevel
|
|
|
|
|
for i = 1, 6 do
|
|
|
|
|
local state = 1--1 未解锁 隐藏 2 即将解锁 3 已解锁 未上阵 4 已解锁 已上阵
|
|
|
|
|
if pokemonPosLocks[i] <= PlayerManager.level then
|
|
|
|
|
state = 3
|
|
|
|
|
if pokemonFormation[i] and pokemonFormation[i].pokemonId then
|
|
|
|
|
state = 4
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
state = 2
|
|
|
|
|
end
|
|
|
|
|
if state == 3 and #canPokemonList > 0 then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("可以上阵灵兽红点true")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("可以上阵灵兽红点false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--可激活的羁绊
|
|
|
|
|
function this.RefreshPokemonFetterRedPoint()
|
2021-03-19 14:37:24 +08:00
|
|
|
|
TianShuMiJuanManger.CheckRedPoint(3)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
end
|
2021-03-16 17:37:32 +08:00
|
|
|
|
|
2020-10-31 17:01:46 +08:00
|
|
|
|
--免费抽卡次数
|
|
|
|
|
function this.RefreshPokemonRecruitRedPoint()
|
|
|
|
|
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
|
|
|
|
|
if not isOpen then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
--获取免费次数
|
|
|
|
|
local currLottery= ConfigManager.GetConfigData(ConfigName.LotterySetting,RecruitType.LingShowSingle)
|
|
|
|
|
local freeTimesId=currLottery.FreeTimes
|
|
|
|
|
local freeTime = 0
|
|
|
|
|
if freeTimesId>0 then
|
|
|
|
|
freeTime= PrivilegeManager.GetPrivilegeRemainValue(freeTimesId)
|
|
|
|
|
end
|
|
|
|
|
local isFree = freeTime and freeTime >= 1
|
|
|
|
|
if isFree then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("免费抽卡次数true")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return true
|
|
|
|
|
else
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("免费抽卡次数false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
function this.PokemonChipRefresh()
|
|
|
|
|
CheckRedPointStatus(RedPointType.Pokemon_ChipCompound)
|
|
|
|
|
end
|
|
|
|
|
--碎片可以合成红点
|
|
|
|
|
function this.PokemonChipCompoundRedPoint()
|
|
|
|
|
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
|
|
|
|
|
if not isOpen then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
local pokemonChipList = BagManager.GetDataByItemType(ItemType.LingShouChip)
|
|
|
|
|
if #pokemonChipList > 0 then
|
|
|
|
|
for i = 1, #pokemonChipList do
|
|
|
|
|
if BagManager.GetItemCountById(pokemonChipList[i].id) >= itemConfig[pokemonChipList[i].id].UsePerCount then
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("碎片可以合成红点true")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-01-26 17:08:39 +08:00
|
|
|
|
-- LogPink("碎片可以合成红点false")
|
2020-10-31 17:01:46 +08:00
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
2021-04-21 13:12:04 +08:00
|
|
|
|
function this.SetHeroStars(spLoader, starPre,star,type,starSize)
|
2020-10-31 17:01:46 +08:00
|
|
|
|
if star < 6 then
|
|
|
|
|
for i = 1, 17 do
|
|
|
|
|
if i <= star then
|
2021-04-21 13:12:04 +08:00
|
|
|
|
starPre.transform:GetChild(i - 1):GetComponent("Image").sprite = spLoader:LoadSprite(GetHeroStarImage[1])
|
2020-10-31 17:01:46 +08:00
|
|
|
|
starPre.transform:GetChild(i - 1):GetComponent("RectTransform").sizeDelta = starSize
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(true)
|
|
|
|
|
else
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
elseif star > 5 and star < 10 then
|
|
|
|
|
for i = 1, 17 do
|
|
|
|
|
if i <= star - 5 then
|
2021-04-21 13:12:04 +08:00
|
|
|
|
starPre.transform:GetChild(i - 1):GetComponent("Image").sprite = spLoader:LoadSprite(GetHeroStarImage[2])
|
2020-10-31 17:01:46 +08:00
|
|
|
|
starPre.transform:GetChild(i - 1):GetComponent("RectTransform").sizeDelta = starSize
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(true)
|
|
|
|
|
else
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
elseif star > 9 then
|
|
|
|
|
if type and type == 1 then
|
|
|
|
|
for i = 1, 17 do
|
|
|
|
|
if i == star - 4 then
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(true)
|
|
|
|
|
else
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
elseif type and type == 2 then
|
|
|
|
|
for i = 1, 17 do
|
|
|
|
|
if i > 11 and i == star + 2 then
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(true)
|
|
|
|
|
else
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
for i = 1, 17 do
|
|
|
|
|
if i == star - 4 then
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(true)
|
|
|
|
|
else
|
|
|
|
|
starPre.transform:GetChild(i - 1).gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return this
|