810 lines
34 KiB
Lua
810 lines
34 KiB
Lua
ExpeditionManager = {};
|
||
local equipStarsConfig = ConfigManager.GetConfig(ConfigName.EquipStarsConfig)
|
||
local this = ExpeditionManager
|
||
this.nodeInfo = {}--所有节点信息
|
||
this.heroInfo = {}--己方英雄信息
|
||
this.lay = {}--阶段
|
||
this.allHoly = {}--激活的圣物
|
||
this.allSHoly = {}--激活的圣物静态idlist
|
||
this.ResurgenceNum = 0--复活次数
|
||
this.curNodeInfo = {}--当前执行逻辑的节点信息
|
||
this.expeditionLeve = 0--猎妖之路阶段
|
||
this.NodeInfoIcon = {
|
||
[ExpeditionNodeType.Jy] = "l_lieyaozhilu_zhandou02",--精英节点
|
||
[ExpeditionNodeType.Boss] = "l_lieyaozhilu_zhandou03",--首领节点
|
||
[ExpeditionNodeType.Resurgence] = "l_lieyaozhilu_fuhuoshenjing",--复活节点
|
||
[ExpeditionNodeType.Reply] = "l_lieyaozhilu_shenminghuifu",-- 回复节点
|
||
[ExpeditionNodeType.Common] = "l_lieyaozhilu_zhandou01",--普通节点
|
||
[ExpeditionNodeType.Halidom] = "l_lieyaozhilu_shangwubaoxiang",-- 圣物节点
|
||
}
|
||
function this.Initialize()
|
||
end
|
||
--初始化远征数据
|
||
function this.InitExpeditionData(msg)
|
||
--LogGreen("服务端推送远征msg.nodeInfo:" .. #msg.nodeInfo)
|
||
--LogGreen("服务端推送远征msg.heroInfo:" .. #msg.heroInfo)
|
||
--LogGreen("服务端推送远征msg.lay:" .. #msg.lay)
|
||
this.curNodeInfo = {}
|
||
this.nodeInfo = {}
|
||
for i = 1, #msg.nodeInfo do
|
||
local singleNodeInfo = {}
|
||
local nodeInfo = msg.nodeInfo[i]
|
||
singleNodeInfo.sortId = nodeInfo.sortId--节点id
|
||
singleNodeInfo.lay = nodeInfo.lay--节点层
|
||
singleNodeInfo.type = nodeInfo.type--节点类型
|
||
singleNodeInfo.state = nodeInfo.state--节点状态 0未开启 1未通过 2未领取圣物 3已完成
|
||
singleNodeInfo.bossTeaminfo = {}--节点队伍信息
|
||
singleNodeInfo.bossTeaminfo.hero = {}--节点队伍信息 英雄
|
||
-- LogGreen("-----||||服务端初始化节点信息 "..singleNodeInfo.sortId.." "..singleNodeInfo.state.." "..singleNodeInfo.lay )
|
||
if nodeInfo.bossTeaminfo then
|
||
if nodeInfo.bossTeaminfo.hero and #nodeInfo.bossTeaminfo.hero > 0 then
|
||
for k = 1, #nodeInfo.bossTeaminfo.hero do
|
||
local singleHero = {}
|
||
singleHero.heroTid = nodeInfo.bossTeaminfo.hero[k].heroTid
|
||
singleHero.star = nodeInfo.bossTeaminfo.hero[k].star
|
||
singleHero.level = nodeInfo.bossTeaminfo.hero[k].level
|
||
singleHero.remainHp = nodeInfo.bossTeaminfo.hero[k].remainHp
|
||
singleHero.position = nodeInfo.bossTeaminfo.hero[k].position
|
||
table.insert(singleNodeInfo.bossTeaminfo.hero,singleHero)
|
||
end
|
||
end
|
||
singleNodeInfo.bossTeaminfo.PokemonInfos = {}--节点队伍信息 异妖
|
||
if nodeInfo.bossTeaminfo.PokemonInfos and #nodeInfo.bossTeaminfo.PokemonInfos > 0 then
|
||
--Log("nodeInfo.bossTeaminfo.PokemonInfos "..#nodeInfo.bossTeaminfo.PokemonInfos)
|
||
for w = 1, #nodeInfo.bossTeaminfo.PokemonInfos do
|
||
table.insert(singleNodeInfo.bossTeaminfo.PokemonInfos,nodeInfo.bossTeaminfo.PokemonInfos[w])
|
||
end
|
||
end
|
||
end
|
||
singleNodeInfo.bossTeaminfo.totalForce = nodeInfo.bossTeaminfo.totalForce--tonumber(1000 .. i)--
|
||
singleNodeInfo.bossTeaminfo.teamInfo = nodeInfo.bossTeaminfo.teamInfo--节点属性 招募试炼节点为怪物组id
|
||
singleNodeInfo.holyEquipID = {}--圣物id
|
||
if nodeInfo.holyEquipID then
|
||
--LogError("nodeInfo.equipIds "..#nodeInfo.holyEquipID)
|
||
for j = 1, #nodeInfo.holyEquipID do
|
||
table.insert(singleNodeInfo.holyEquipID,nodeInfo.holyEquipID[j])
|
||
end
|
||
end
|
||
table.insert(this.nodeInfo,singleNodeInfo)
|
||
this.SetCurNodeInfo(singleNodeInfo)
|
||
end
|
||
|
||
--Log("服务端推送远征#msg.heroInfo:" .. #msg.heroInfo)
|
||
this.heroInfo = {}
|
||
for i = 1, #msg.heroInfo do
|
||
local singleHeroInfo = {}
|
||
singleHeroInfo.heroId = msg.heroInfo[i].heroId--英雄动态id
|
||
singleHeroInfo.remainHp = msg.heroInfo[i].remainHp--剩余血量
|
||
--Log("服务端推送远征singleHeroInfo.remainHp:" .. singleHeroInfo.remainHp)
|
||
--table.insert(this.heroInfo,singleHeroInfo)
|
||
this.heroInfo[singleHeroInfo.heroId] =singleHeroInfo --msg.heroInfo[i].remainHp
|
||
end
|
||
|
||
this.lay = {}
|
||
if msg.lay then
|
||
for i = 1, #msg.lay do
|
||
table.insert(this.lay,msg.lay[i])
|
||
end
|
||
end
|
||
|
||
this.allHoly = {}
|
||
if msg.equipIds then
|
||
--Log("#msg.equipIds "..#msg.equipIds)
|
||
for i = 1, #msg.equipIds do
|
||
local singleHalidomInfo = {}
|
||
LogPink("singleHalidomInfo.id ".. msg.equipIds[i].id.." "..msg.equipIds[i].equiptId)
|
||
singleHalidomInfo.id = msg.equipIds[i].id--动态id
|
||
singleHalidomInfo.equiptId = msg.equipIds[i].equiptId
|
||
this.allHoly[singleHalidomInfo.id] =singleHalidomInfo
|
||
this.allSHoly[singleHalidomInfo.equiptId] = singleHalidomInfo.equiptId
|
||
end
|
||
end
|
||
--移除援助的英雄
|
||
--if msg.removesHeroIds then
|
||
-- this.DeleteHeroDatas(msg.removesHeroIds)
|
||
--end
|
||
--装备
|
||
this.InitEquipData(msg.equip)
|
||
--宝器
|
||
this.InitBaoDatas(msg.soulEquip)
|
||
--招募的英雄
|
||
this.InitHeroDatas(msg.heroList)
|
||
|
||
--猎妖开启时间
|
||
this.startTime = msg.startTime
|
||
this.RemainTimeDown()--开始计时间隔阶段
|
||
if UIManager.IsOpen(UIName.ExpeditionMainPanel) then
|
||
UIManager.OpenPanel(UIName.ExpeditionMainPanel)
|
||
end
|
||
end
|
||
|
||
--根据层级获取所有节点
|
||
function this.GetAllLayNodeList()
|
||
local layNodeInfo = {}
|
||
table.sort(this.nodeInfo, function(a, b)
|
||
return a.sortId < b.sortId
|
||
end)
|
||
--自己加入第一层 初始节点
|
||
local firstNodeData = {}
|
||
firstNodeData.sortId = 0
|
||
firstNodeData.lay = 1
|
||
firstNodeData.type = ExpeditionNodeType.Star
|
||
firstNodeData.state = 3
|
||
firstNodeData.bossTeaminfo = {}--节点队伍信息
|
||
firstNodeData.bossTeaminfo.hero = {}--节点队伍信息 英雄
|
||
layNodeInfo[1] = {}
|
||
table.insert(layNodeInfo[1],firstNodeData)
|
||
--正常猎妖节点
|
||
for i = 1, #this.nodeInfo do
|
||
--组没成
|
||
if layNodeInfo[this.nodeInfo[i].lay] == nil then
|
||
layNodeInfo[this.nodeInfo[i].lay] = {}
|
||
table.insert(layNodeInfo[this.nodeInfo[i].lay],this.nodeInfo[i])
|
||
--Log("远征 主界面获取信息 "..this.nodeInfo[i].lay.." "..this.nodeInfo[i].sortId.." "..this.nodeInfo[i].state)
|
||
else
|
||
table.insert(layNodeInfo[this.nodeInfo[i].lay],this.nodeInfo[i])
|
||
--Log("远征 主界面获取信息 "..this.nodeInfo[i].lay.." "..this.nodeInfo[i].sortId.." "..this.nodeInfo[i].state)
|
||
end
|
||
end
|
||
return layNodeInfo
|
||
end
|
||
--获取宝箱数据
|
||
function this.GetAllNodeBoxnfoList()
|
||
local curPassLay = 0--当前通关的层级
|
||
for i = 1, #this.nodeInfo do
|
||
if this.nodeInfo[i].state == 3 then
|
||
if curPassLay < this.nodeInfo[i].lay then
|
||
curPassLay = this.nodeInfo[i].lay
|
||
end
|
||
end
|
||
end
|
||
--Log("curPassLay "..curPassLay)
|
||
local layInfo = {}
|
||
for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.ExpeditionFloorConfig)) do
|
||
if v.TreasureBox then
|
||
--Log("v.TreasureBox ".. v.Id)
|
||
local curlayInfo = {}
|
||
curlayInfo.ConFigData = v
|
||
curlayInfo.state = 1-- 1 未达到
|
||
if curPassLay >= v.Id then
|
||
curlayInfo.state = 2--2 达到未领取
|
||
end
|
||
for j = 1, #this.lay do
|
||
--Log("this.lay[j] == v.Id "..this.lay[j] .."".. v.Id)
|
||
if this.lay[j] == v.Id then
|
||
curlayInfo.state = 3--3 已完成
|
||
end
|
||
end
|
||
table.insert(layInfo,curlayInfo)
|
||
end
|
||
end
|
||
return layInfo , curPassLay
|
||
end
|
||
--获取当前节点信息
|
||
function this.SetCurNodeInfo(singleNodeInfo)
|
||
if singleNodeInfo.state == ExpeditionNodeState.Finish then
|
||
if not this.curNodeInfo or not this.curNodeInfo.lay then
|
||
this.curNodeInfo = singleNodeInfo
|
||
elseif singleNodeInfo.lay > this.curNodeInfo.lay then
|
||
this.curNodeInfo = singleNodeInfo
|
||
end
|
||
end
|
||
--if singleNodeInfo.state == ExpeditionNodeState.NoGetEquip then--未选择圣物
|
||
-- this.curNodeInfo = singleNodeInfo
|
||
--end
|
||
--local keys = GameDataBase.SheetBase.GetKeys(ConfigManager.GetConfig(ConfigName.ExpeditionFloorConfig))
|
||
--if singleNodeInfo.state == 3 and singleNodeInfo.lay == #keys then--全部通关
|
||
-- this.curNodeInfo = singleNodeInfo
|
||
--end
|
||
end
|
||
--获取当前节点信息
|
||
function this.GetCurNodeInfo()
|
||
if not this.curNodeInfo or not this.curNodeInfo.lay then
|
||
local allData = this.GetAllLayNodeList()
|
||
this.curNodeInfo = allData[1][1]
|
||
end
|
||
return this.curNodeInfo
|
||
end
|
||
--跟新节点信息
|
||
function this.UpdateNodeValue(nodeInfo)
|
||
if nodeInfo then
|
||
for i = 1, #nodeInfo do
|
||
local nodeInfo = nodeInfo[i]
|
||
for o = 1, #this.nodeInfo do
|
||
if this.nodeInfo[o].sortId == nodeInfo.sortId then
|
||
--if nodeInfo.lay then this.nodeInfo[o].lay = nodeInfo.lay end
|
||
--if nodeInfo.type then this.nodeInfo[o].type = nodeInfo.type end
|
||
if nodeInfo.state then this.nodeInfo[o].state = nodeInfo.state end
|
||
--Log(" ******* 推送更新远征节点信息 "..this.nodeInfo[o].sortId.." "..this.nodeInfo[o].state)
|
||
if nodeInfo.bossTeaminfo then
|
||
if nodeInfo.bossTeaminfo.hero and #nodeInfo.bossTeaminfo.hero > 0 then
|
||
this.nodeInfo[o].bossTeaminfo.hero = {}--节点队伍信息 英雄
|
||
for k = 1, #nodeInfo.bossTeaminfo.hero do
|
||
local singleHero = {}
|
||
singleHero.heroTid = nodeInfo.bossTeaminfo.hero[k].heroTid
|
||
singleHero.star = nodeInfo.bossTeaminfo.hero[k].star
|
||
singleHero.level = nodeInfo.bossTeaminfo.hero[k].level
|
||
singleHero.remainHp = nodeInfo.bossTeaminfo.hero[k].remainHp
|
||
singleHero.position = nodeInfo.bossTeaminfo.hero[k].position
|
||
table.insert( this.nodeInfo[o].bossTeaminfo.hero,singleHero)
|
||
end
|
||
end
|
||
if nodeInfo.bossTeaminfo.PokemonInfos and #nodeInfo.bossTeaminfo.PokemonInfos > 0 then
|
||
this.nodeInfo[o].bossTeaminfo.PokemonInfos = {}--节点队伍信息 异妖
|
||
for w = 1, #nodeInfo.bossTeaminfo.PokemonInfos do
|
||
table.insert(this.nodeInfo[o].bossTeaminfo.PokemonInfos,nodeInfo.bossTeaminfo.PokemonInfos[w])
|
||
end
|
||
end
|
||
if nodeInfo.bossTeaminfo.totalForce and nodeInfo.bossTeaminfo.totalForce > 0 then
|
||
this.nodeInfo[o].bossTeaminfo.totalForce = nodeInfo.bossTeaminfo.totalForce
|
||
end
|
||
end
|
||
if nodeInfo.holyEquipID and #nodeInfo.holyEquipID > 0 then
|
||
this.nodeInfo[o].holyEquipID = {}
|
||
for j = 1, #nodeInfo.holyEquipID do
|
||
table.insert( this.nodeInfo[o].holyEquipID,nodeInfo.holyEquipID[j])
|
||
end
|
||
end
|
||
this.SetCurNodeInfo(this.nodeInfo[o])
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
--跟新英雄血量
|
||
function this.UpdateHeroHpValue(heroInfo)
|
||
if heroInfo then
|
||
for i = 1, #heroInfo do
|
||
if this.heroInfo[heroInfo[i].heroId] then
|
||
this.heroInfo[heroInfo[i].heroId].remainHp = heroInfo[i].remainHp
|
||
-- LogGreen(" ******* 推送更新远征英雄血量 "..heroInfo[i].heroId.." "..heroInfo[i].remainHp)
|
||
else
|
||
local singleHeroInfo = {}
|
||
singleHeroInfo.heroId = heroInfo[i].heroId--英雄动态id
|
||
singleHeroInfo.remainHp = heroInfo[i].remainHp--剩余血量
|
||
-- LogGreen(" ******* 推送更新远征英雄血量 "..singleHeroInfo.heroId.." "..singleHeroInfo.remainHp)
|
||
this.heroInfo[singleHeroInfo.heroId] = singleHeroInfo
|
||
end
|
||
end
|
||
end
|
||
end
|
||
--初始化英雄血量
|
||
function this.InitHeroHpValue(dynamicId)
|
||
if dynamicId then
|
||
if this.heroInfo[dynamicId] then
|
||
else
|
||
local singleHeroInfo = {}
|
||
singleHeroInfo.heroId = dynamicId--英雄动态id
|
||
singleHeroInfo.remainHp = 1--剩余血量
|
||
--Log(" ******* 前端获得新英雄添加远征数据 "..singleHeroInfo.heroId.." "..singleHeroInfo.remainHp)
|
||
this.heroInfo[singleHeroInfo.heroId] = singleHeroInfo
|
||
end
|
||
end
|
||
end
|
||
--初始化英雄血量
|
||
function this.DelHeroHpValue(heroInfo)
|
||
if heroInfo then
|
||
if this.heroInfo[heroInfo.dynamicId] then
|
||
this.heroInfo[heroInfo.dynamicId] = nil
|
||
end
|
||
end
|
||
end
|
||
--跟新圣物
|
||
function this.UpdateHalidomValue(msg)
|
||
if msg.equipIds then
|
||
for i = 1, #msg.equipIds do
|
||
local singleHalidomInfo = {}
|
||
singleHalidomInfo.id = msg.equipIds[i].id--动态id
|
||
singleHalidomInfo.equiptId = msg.equipIds[i].equiptId
|
||
--Log(" ******* 推送更新远征圣物 "..singleHalidomInfo.id.." "..singleHalidomInfo.equiptId)
|
||
this.allHoly[singleHalidomInfo.id] =singleHalidomInfo
|
||
this.allSHoly[singleHalidomInfo.equiptId] = singleHalidomInfo.equiptId
|
||
end
|
||
end
|
||
end
|
||
|
||
--更新宝箱
|
||
function this.UpdateBoxValue(layNum)
|
||
table.insert(this.lay,layNum)
|
||
end
|
||
|
||
|
||
this.curAttackNodeInfo = {}
|
||
--开始战斗
|
||
function this.ExecuteFightBattle(_nodeId,_teamId,_expInfo, callBack)
|
||
local num = 1
|
||
if this.curAttackNodeInfo and this.curAttackNodeInfo.bossTeaminfo.teamInfo and this.curAttackNodeInfo.bossTeaminfo.teamInfo > 0 then
|
||
num = 0
|
||
else
|
||
num = 1
|
||
end
|
||
NetManager.StartExpeditionBattleRequest(_nodeId, _teamId, _expInfo,function (msg)
|
||
local fightData = BattleManager.GetBattleServerData(msg,num)
|
||
for o = 1, #this.nodeInfo do
|
||
if this.nodeInfo[o].sortId == _nodeId then
|
||
this.curAttackNodeInfo = this.nodeInfo[o]
|
||
end
|
||
end
|
||
UIManager.OpenPanel(UIName.BattlePanel, fightData, BATTLE_TYPE.EXECUTE_FIGHT, callBack)
|
||
end)
|
||
end
|
||
function this.ExpeditionRrefreshFormation()
|
||
local teamId = FormationTypeDef.EXPEDITION
|
||
local newFormation = this.ExpeditionDeleteDeadRole()
|
||
FormationManager.formationList[teamId] = newFormation
|
||
end
|
||
-- 远征删除编队中某一个成员的数据
|
||
function this.ExpeditionDeleteDeadRole()
|
||
-- 死人后重组
|
||
local newFormation = {} -- 编队界面的编队数据
|
||
local curTeam = FormationManager.GetFormationByID(FormationTypeDef.EXPEDITION)
|
||
-- 编队界面的数据
|
||
newFormation.teamHeroInfos = {}
|
||
newFormation.teamPokemonInfos = {}
|
||
newFormation.teamId = FormationTypeDef.EXPEDITION
|
||
newFormation.teamName = curTeam.teamName
|
||
newFormation.teamPokemonInfos = curTeam.teamPokemonInfos
|
||
-- 成员数据
|
||
for i = 1, #curTeam.teamHeroInfos do
|
||
local roleData = curTeam.teamHeroInfos[i]
|
||
-- 如果队员没死翘翘了
|
||
-- local curRoleHp = this.heroInfo[roleData.heroId].remainHp
|
||
if this.heroInfo[roleData.heroId] and this.heroInfo[roleData.heroId].remainHp and this.heroInfo[roleData.heroId].remainHp > 0 then
|
||
-- if curRoleHp > 0 then
|
||
-- 编队界面数据重组
|
||
table.insert(newFormation.teamHeroInfos, roleData)
|
||
end
|
||
end
|
||
return newFormation
|
||
end
|
||
|
||
--获取宝箱红点
|
||
function this.GetNodeBoxnIsShowRedPoint()
|
||
--local curPassLay = this.curNodeInfo
|
||
--local layInfo = {}
|
||
--local keys = GameDataBase.SheetBase.GetKeys(ConfigManager.GetConfig(ConfigName.ExpeditionFloorConfig))
|
||
--if curPassLay and curPassLay.lay then
|
||
-- for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.ExpeditionFloorConfig)) do
|
||
-- if v.TreasureBox then
|
||
-- local curlayInfo = {}
|
||
-- if curPassLay.lay > v.Id or (curPassLay.lay == #keys and curPassLay.state == ExpeditionNodeState.Finish) then--打完最后一层
|
||
-- curlayInfo.state = 2--2 达到未领取
|
||
-- end
|
||
-- for j = 1, #this.lay do
|
||
-- if this.lay[j] == v.Id then
|
||
-- curlayInfo.state = 3--3 已完成
|
||
-- end
|
||
-- end
|
||
-- table.insert(layInfo,curlayInfo)
|
||
-- end
|
||
-- end
|
||
-- for i = 1, #layInfo do
|
||
-- if layInfo[i].state == 2 then
|
||
-- return true
|
||
-- end
|
||
-- end
|
||
--end
|
||
return false
|
||
end
|
||
|
||
|
||
--获取活动刷新红点
|
||
function this.GetActivityIsShowRedPoint(isFiveRefresh,value)
|
||
if isFiveRefresh then
|
||
if RedPointManager.PlayerPrefsGetStr(PlayerManager.uid.."Expedition") ~= "0" then
|
||
RedPointManager.PlayerPrefsDeleteStr(PlayerManager.uid.."Expedition")
|
||
end
|
||
return true
|
||
else
|
||
if ActTimeCtrlManager.SingleFuncState(JumpType.Expedition) then
|
||
if RedPointManager.PlayerPrefsGetStr(PlayerManager.uid.."Expedition") ~= "0" then
|
||
return false
|
||
else
|
||
if value and value == "1" then
|
||
RedPointManager.PlayerPrefsSetStr(PlayerManager.uid.."Expedition",value)
|
||
end
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function this.CalculateallHolyWarPower()
|
||
local allHolyWarPower = 0--万分比
|
||
local allAddWarPowerHoly = {}
|
||
for i, v in pairs(this.allHoly) do
|
||
local curHeffect = ConfigManager.GetConfigData(ConfigName.ExpeditionHolyConfig,v.equiptId).effect
|
||
local curHForceType = ConfigManager.GetConfigData(ConfigName.ExpeditionHolyConfig,v.equiptId).ForceType
|
||
if allAddWarPowerHoly[curHeffect] then
|
||
if curHForceType > allAddWarPowerHoly[curHeffect] then
|
||
allAddWarPowerHoly[curHeffect] = curHForceType
|
||
--Log("1curHeffect curHForceType "..curHForceType.." "..curHForceType)
|
||
end
|
||
else
|
||
--Log("2curHeffect curHForceType "..curHForceType.." "..curHForceType)
|
||
allAddWarPowerHoly[curHeffect] = curHForceType
|
||
end
|
||
end
|
||
for i, v in pairs(allAddWarPowerHoly) do
|
||
allHolyWarPower = allHolyWarPower + v
|
||
end
|
||
--Log("allHolyWarPower "..allHolyWarPower)
|
||
return allHolyWarPower
|
||
end
|
||
|
||
--后端刷新大闹天空阶段 当阶段与现在的阶段不同时 请求当前节点所有数据
|
||
function this.RefreshCurExpeditionLeve(expeditionLeve)
|
||
this.expeditionLeve = expeditionLeve
|
||
end
|
||
|
||
--红点
|
||
function this.GetActivityStarOpenRedPoint()
|
||
return PlayerPrefs.GetInt(PlayerManager.uid.."Expedition", 0) == 0
|
||
end
|
||
--间隔倒计时
|
||
this.ExpeditionPanelIsOpen = 0-- 0 不在大闹天宫里 1 在玩大闹天宫
|
||
this.ExpeditionState = 0-- 1 正常阶段 2 间隔阶段 3 重置未初始阶段
|
||
function this.SetExpeditionState(state)
|
||
this.ExpeditionState = state
|
||
end
|
||
function this.SetExpeditionPanelIsOpen(IsOpenState)
|
||
this.ExpeditionPanelIsOpen = IsOpenState
|
||
end
|
||
this.timer = Timer.New()
|
||
function this.RemainTimeDown()
|
||
local timeDown = ExpeditionManager.startTime + tonumber(ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,JumpType.Expedition).SeasonEnd) - GetTimeStamp()
|
||
if timeDown > 0 then
|
||
if this.timer then
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
this.timer = Timer.New(function()
|
||
if timeDown < 0 then
|
||
if ExpeditionManager.ExpeditionState == 1 then
|
||
ExpeditionManager.SetExpeditionState(2)
|
||
end
|
||
this.RefreshPanelShowByState()
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
timeDown = timeDown - 1
|
||
end, 1, -1, true)
|
||
this.timer:Start()
|
||
else
|
||
if ActTimeCtrlManager.SingleFuncState(JumpType.Expedition) then
|
||
if ExpeditionManager.ExpeditionState == 1 then
|
||
ExpeditionManager.SetExpeditionState(2)
|
||
this.RefreshPanelShowByState()
|
||
end
|
||
end
|
||
end
|
||
end
|
||
function this.RefreshPanelShowByState()
|
||
if ExpeditionManager.ExpeditionPanelIsOpen == 1 and UIManager.IsOpen(UIName.ExpeditionMainPanel) then --not UIManager.IsOpen(UIName.BattlePanel) then
|
||
PlayerManager.carbonType = 1
|
||
if ExpeditionManager.ExpeditionState == 2 then
|
||
UIManager.OpenPanel(UIName.CarbonTypePanelV2)
|
||
PopupTipPanel.ShowTip(Language[12183])
|
||
elseif ExpeditionManager.ExpeditionState == 3 then
|
||
UIManager.OpenPanel(UIName.CarbonTypePanelV2)
|
||
PopupTipPanel.ShowTip(Language[12183])
|
||
end
|
||
end
|
||
end
|
||
function this.GetHerosHaveIsDie()
|
||
for i, v in pairs(ExpeditionManager.heroInfo) do
|
||
if v.remainHp <= 0 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
---------------------------------------------------------------------远征背包-----------------------------------------------
|
||
--刷新本地数据
|
||
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local gameSetting = ConfigManager.GetConfig(ConfigName.GameSetting)
|
||
--this.heroDataLists = {}
|
||
local heroDatas = {}
|
||
function this.InitHeroDatas(heroList)
|
||
heroDatas = {}
|
||
if not heroList then return end
|
||
for i = 1, #heroList do
|
||
this.UpdateHeroDatas(heroList[i])
|
||
end
|
||
end
|
||
function this.UpdateHeroDatas(_msgHeroData)
|
||
local heroData = {}
|
||
heroData.soulPrintList={}
|
||
heroData.heroBackData=_msgHeroData
|
||
heroData.dynamicId = _msgHeroData.id
|
||
local _id = _msgHeroData.heroId
|
||
heroData.id = _id
|
||
heroData.star = _msgHeroData.star
|
||
heroData.lv = _msgHeroData.level--30
|
||
--LogError("heroData.dynamicId ".._msgHeroData.id.." ".._msgHeroData.heroId)
|
||
--LogError("heroData.dynamicId ".._msgHeroData.level)
|
||
heroData.breakId=_msgHeroData.breakId
|
||
heroData.upStarId=_msgHeroData.starBreakId
|
||
LogGreen("heroData.breakId "..heroData.breakId.." "..heroData.upStarId)
|
||
heroData.createTime=_msgHeroData.createTimelocal
|
||
heroData.lockState = _msgHeroData.lockState
|
||
heroData.createtype = _msgHeroData.createtype
|
||
local _configData = heroConfig[_id]
|
||
|
||
heroData.skinId = _msgHeroData.skinId or 0
|
||
if heroData.skinId == 0 then
|
||
heroData.skinConfig = _configData
|
||
heroData.live = GetResourcePath(_configData.Live)
|
||
heroData.painting = GetResourcePath(_configData.Painting)
|
||
heroData.icon = GetResourcePath(_configData.Icon)
|
||
heroData.scale = _configData.Scale
|
||
heroData.position = _configData.Position
|
||
else
|
||
heroData.skinConfig = ConfigManager.GetConfigDataByKey(ConfigName.HeroSkin,"Type",heroData.skinId)
|
||
heroData.live = GetResourcePath(heroData.skinConfig.Live)
|
||
heroData.painting = GetResourcePath(heroData.skinConfig.Painting)
|
||
heroData.icon = GetResourcePath(heroData.skinConfig.Icon)
|
||
heroData.scale = heroData.skinConfig.Scale
|
||
heroData.position = heroData.skinConfig.Position
|
||
end
|
||
|
||
heroData.heroConfig=heroConfig[_id]
|
||
heroData.maxStar=_configData.MaxRank
|
||
--Log(heroData.heroConfig.ReadingName.." _msgHeroData.starBreakId ".._msgHeroData.starBreakId)
|
||
local actionPowerRormula= gameSetting[1].ActionPowerRormula
|
||
heroData.actionPower=heroData.heroConfig.ActionPower+math.floor(((actionPowerRormula[1] * math.pow(heroData.lv, 3) + actionPowerRormula[2] * math.pow(heroData.lv, 2) + actionPowerRormula[3] * heroData.lv + actionPowerRormula[4])))--_msgHeroData.actionPower
|
||
heroData.equipIdList=_msgHeroData.equipIdList
|
||
heroData.jewels=_msgHeroData.jewels
|
||
|
||
heroData.talismanList = _msgHeroData.especialEquipLevel --法宝等级
|
||
if(#_msgHeroData.soulPos>=1) then
|
||
local soulPrintList = {}
|
||
for i,v in ipairs(_msgHeroData.soulPos) do
|
||
local soulPrint = { equipId = v.equipId, position = v.position}
|
||
SoulPrintManager.AddSoulPrintUpHeroDynamicId(v.equipId,heroData.dynamicId)
|
||
table.insert(soulPrintList, soulPrint)
|
||
end
|
||
heroData.soulPrintList= soulPrintList
|
||
end
|
||
heroData.skillIdList={}--主动技
|
||
HeroManager.UpdateSkillIdList(heroData)
|
||
heroData.passiveSkillList = {}--被动技
|
||
HeroManager.UpdatePassiveHeroSkill(heroData)
|
||
heroData.hp = _configData.Hp
|
||
heroData.attack = _configData.Attack
|
||
heroData.pDef = _configData.PhysicalDefence
|
||
heroData.mDef = _configData.MagicDefence
|
||
heroData.speed = _configData.Speed
|
||
heroData.live = GetResourcePath(_configData.Live)
|
||
heroData.profession = _configData.Profession
|
||
heroData.ProfessionResourceId= _configData.ProfessionResourceId
|
||
if GetJobSpriteStrByJobNum(_configData.Profession) then
|
||
heroData.professionIcon = GetJobSpriteStrByJobNum(_configData.Profession)
|
||
else
|
||
heroData.professionIcon = GetJobSpriteStrByJobNum(1)
|
||
end
|
||
heroData.name = GetLanguageStrById(_configData.ReadingName)
|
||
heroData.property = _configData.PropertyName
|
||
heroData.sortId = #heroDatas+1
|
||
--table.insert(this.heroDataLists, heroData)
|
||
heroDatas[heroData.dynamicId]= heroData
|
||
this.SetEquipUpHeroDid(heroData.equipIdList,heroData.dynamicId)
|
||
this.SetEquipTreasureUpHeroDid(heroData.jewels,heroData.dynamicId)
|
||
this.SetTalismanLv(heroData.dynamicId,heroData.talismanList)
|
||
ExpeditionManager.InitHeroHpValue(heroData.dynamicId)
|
||
heroData.warPower = HeroManager.CalculateHeroAllProValList(1, heroData, false)[HeroProType.WarPower]
|
||
--this.SetSoulPrintUpHeroDid(heroData.soulPrintList,heroData.dynamicId)
|
||
--this.GetSingleProScoreVal()
|
||
end
|
||
function this.SetEquipUpHeroDid(_equipids,_heroDid)
|
||
for i = 1, #_equipids do
|
||
EquipManager.SetEquipUpHeroDid(_equipids[i],_heroDid)
|
||
end
|
||
end
|
||
function this.SetEquipTreasureUpHeroDid(_equipTreasureDids,_heroDid)
|
||
for i = 1, #_equipTreasureDids do
|
||
EquipTreasureManager.SetEquipTreasureUpHeroDid(_equipTreasureDids[i],_heroDid)
|
||
end
|
||
end
|
||
--设置法宝等级
|
||
function this.SetTalismanLv(did,lv)
|
||
heroDatas[did].talismanList=lv
|
||
end
|
||
--获取所有英雄信息
|
||
function this.GetAllHeroDatas(heros,_lvLimit)
|
||
local lvLimit = 0
|
||
--local allUpZhenHeroList = FormationManager.GetWuJinFormationHeroIds(FormationTypeDef.FORMATION_ENDLESS_MAP)
|
||
if _lvLimit then lvLimit = _lvLimit end
|
||
--local heros = {}
|
||
for i, v in pairs(heroDatas) do
|
||
if v.lv >= lvLimit then--or allUpZhenHeroList[v.dynamicId] then
|
||
table.insert(heros,v)
|
||
end
|
||
end
|
||
table.sort(heros, function(a,b) return a.sortId < b.sortId end)
|
||
return heros
|
||
end
|
||
|
||
--通过属性筛选英雄
|
||
function this.GetHeroDataByProperty(heros,_property,_lvLimit)
|
||
local lvLimit = 0
|
||
--local allUpZhenHeroList = FormationManager.GetWuJinFormationHeroIds(FormationTypeDef.FORMATION_ENDLESS_MAP)
|
||
if _lvLimit then lvLimit = _lvLimit end
|
||
local index = 1
|
||
if heros and #heros > 0 then
|
||
index = index + #heros
|
||
end
|
||
for i, v in pairs(heroDatas) do
|
||
if v.property == _property then
|
||
if v.lv >= lvLimit then--or allUpZhenHeroList[v.dynamicId] then
|
||
heros[index] = v
|
||
index = index + 1
|
||
end
|
||
end
|
||
end
|
||
return heros
|
||
end
|
||
|
||
--获取单个英雄数据
|
||
function this.GetSingleHeroData(heroDId)
|
||
if heroDatas[heroDId] then
|
||
return heroDatas[heroDId]
|
||
end
|
||
return nil
|
||
end
|
||
--删除本地英雄信息
|
||
function this.DeleteHeroDatas(heroDIds)
|
||
if not heroDIds then return end
|
||
for i = 1, #heroDIds do
|
||
if heroDatas[heroDIds[i]] then
|
||
--清除英雄装备上挂载的英雄did
|
||
--local equips=heroDatas[heroDIds[i]].equipIdList
|
||
--if equips and LengthOfTable(equips)>0 then
|
||
-- for i = 1, LengthOfTable(equips) do
|
||
-- if EquipManager.GetSingleEquipData(equips[i]) then
|
||
-- EquipManager.GetSingleEquipData(equips[i]).upHeroDid="0"
|
||
-- end
|
||
-- end
|
||
--end
|
||
--清除英雄法宝上挂载的英雄did
|
||
--local talismanList=heroDatas[heroDIds[i]].talismanList
|
||
--if talismanList and LengthOfTable(talismanList)>0 then
|
||
-- for i = 1, LengthOfTable(talismanList) do
|
||
-- if TalismanManager.talismanTabs[talismanList[i]] then
|
||
-- TalismanManager.talismanTabs[talismanList[i]].upHeroDid="0"
|
||
-- end
|
||
-- end
|
||
--end
|
||
--
|
||
--清楚编队上的英雄
|
||
FormationManager.AllFormationDeleCurHeroId(heroDIds[i])
|
||
--清除英雄魂印上挂载的英雄did
|
||
--SoulPrintManager.hasEquipSoulPrintId[heroDIds[i]]=nil
|
||
--删除远征英雄数据
|
||
ExpeditionManager.DelHeroHpValue(heroDatas[heroDIds[i]])
|
||
--删除英雄
|
||
heroDatas[heroDIds[i]]=nil
|
||
end
|
||
end
|
||
end
|
||
|
||
--装备
|
||
this.equipDatas = {}
|
||
local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig)
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
||
function this.InitEquipData(_equipDatas)
|
||
this.equipDatas = {}
|
||
if not _equipDatas then return end
|
||
for i = 1, #_equipDatas do
|
||
this.InitUpdateEquipData(_equipDatas[i])
|
||
end
|
||
end
|
||
function this.InitUpdateEquipData(_equipData)
|
||
local equipdata={}
|
||
equipdata.equipConfig = equipConfig[_equipData.equipId]
|
||
if equipdata.equipConfig~=nil then
|
||
equipdata.itemConfig=itemConfig[equipdata.equipConfig.Id]
|
||
equipdata.did = equipdata.equipConfig.Id
|
||
equipdata.id = equipdata.equipConfig.Id
|
||
if itemConfig[equipdata.id] then
|
||
equipdata.icon = GetResourcePath(itemConfig[equipdata.id].ResourceID)
|
||
else
|
||
--Log("装备表找不到此id "..equipdata.id)
|
||
return
|
||
end
|
||
equipdata.frame = GetQuantityImageByquality(equipdata.equipConfig.Quality)--ItemQuality[equipdata.equipConfig.Quality].icon
|
||
equipdata.num=1
|
||
equipdata.position=equipdata.equipConfig.Position
|
||
equipdata.upHeroDid="0"
|
||
local propList = {}
|
||
for index, prop in ipairs(equipdata.equipConfig.Property) do
|
||
propList[index] = {}
|
||
propList[index].propertyId = prop[1]
|
||
propList[index].propertyValue = prop[2]
|
||
propList[index].PropertyConfig = propertyConfig[prop[1]]
|
||
end
|
||
equipdata.mainAttribute = propList
|
||
equipdata.star = equipStarsConfig[equipdata.equipConfig.Star].Stars
|
||
equipdata.backData=_equipData
|
||
this.equipDatas[_equipData.id]=equipdata
|
||
end
|
||
end
|
||
--设置装备穿戴的英雄
|
||
function this.SetEquipUpHeroDid(_equipid,_heroDid)
|
||
if this.equipDatas[_equipid] then
|
||
this.equipDatas[_equipid].upHeroDid=_heroDid
|
||
end
|
||
end
|
||
|
||
--宝器
|
||
local jewelConfig = ConfigManager.GetConfig(ConfigName.JewelConfig)
|
||
local allTreasures = {}
|
||
function this.InitBaoDatas(_soulEquips)
|
||
allTreasures = {}
|
||
if not _soulEquips then return end
|
||
for i = 1, #_soulEquips do
|
||
this.InitSingleTreasureData(_soulEquips[i])
|
||
end
|
||
end
|
||
--初始化单个宝物的数据
|
||
function this.InitSingleTreasureData(_singleData)
|
||
if _singleData==nil then
|
||
return
|
||
end
|
||
local single={}
|
||
local staticId=_singleData.equipId
|
||
local currJewel=jewelConfig[staticId]
|
||
single.id=staticId
|
||
single.idDyn=_singleData.id
|
||
single.lv=_singleData.exp
|
||
single.refineLv=_singleData.rebuildLevel
|
||
single.maxLv=currJewel.Max[1]
|
||
single.maxRefineLv=currJewel.Max[2]
|
||
single.upHeroDid=""
|
||
local quantity=currJewel.Level
|
||
single.quantity=quantity
|
||
single.frame=GetQuantityImageByquality(quantity)
|
||
single.name=GetLanguageStrById(itemConfig[staticId].Name)
|
||
single.itemConfig=itemConfig[staticId]
|
||
single.levelPool=currJewel.LevelupPool
|
||
single.proIcon=GetProStrImageByProNum(currJewel.Race)
|
||
single.refinePool=currJewel.RankupPool
|
||
single.equipType=currJewel.Location
|
||
if currJewel.Location==1 then
|
||
single.type=Language[10552]
|
||
else
|
||
single.type=Language[10553]
|
||
end
|
||
single.icon=GetResourcePath(itemConfig[staticId].ResourceID)
|
||
single.strongConfig=this.GetCurrTreasureLvConfig(1,currJewel.LevelupPool,_singleData.exp)
|
||
single.refineConfig=this.GetCurrTreasureLvConfig(2,currJewel.RankupPool,_singleData.rebuildLevel)
|
||
--LogGreen("天宫推送宝器 _singleData.id ".._singleData.id)
|
||
allTreasures[_singleData.id]=single
|
||
end
|
||
local jewerLevelUpConfig = ConfigManager.GetConfig(ConfigName.JewelRankupConfig)
|
||
--获取当前宝物升级数据
|
||
function this.GetCurrTreasureLvConfig(_type,_id,_lv)
|
||
for _, configInfo in ConfigPairs(jewerLevelUpConfig) do
|
||
if configInfo.Type==_type and configInfo.PoolID==_id and configInfo.Level==_lv then
|
||
return configInfo
|
||
end
|
||
end
|
||
end
|
||
--根据动态id获取宝物
|
||
function this.GetSingleTreasureByIdDyn(_idDyn)
|
||
if allTreasures==nil then
|
||
return
|
||
end
|
||
return allTreasures[_idDyn]
|
||
|
||
end
|
||
--设置装备穿戴的英雄
|
||
function this.SetEquipTreasureUpHeroDid(_equipTreasureDid,_heroDid)
|
||
if allTreasures[_equipTreasureDid] then
|
||
allTreasures[_equipTreasureDid].upHeroDid=_heroDid
|
||
end
|
||
end
|
||
---------------------------------------------------------------------远征背包-----------------------------------------------
|
||
return this |