赛程数据合并

dev_chengFeng
zhangqiang 2020-07-16 10:13:32 +08:00
parent bdf9331b79
commit 2c744690bc
1 changed files with 114 additions and 54 deletions

View File

@ -409,11 +409,16 @@ function this.Request_32_EliminationData(func)
if this.baseInfo.battleStage ~= TOP_MATCH_STAGE.ELIMINATION and this.baseInfo.battleStage~= TOP_MATCH_STAGE.OVER then return end
NetManager.GetTopMatchEliminationInfo(1, function(msg)
this.EliminationData_32 = msg.championBattlePairInfo
-- Log("获取32强数据成功, 数据长度 = "..#this.EliminationData_32)
-- LogRed("获取32强数据成功, 数据长度 = "..#msg.championBattlePairInfo)
-- for i = 1, #msg.championBattlePairInfo do
-- LogPink("roundTImes "..msg.championBattlePairInfo[i].roundTImes.." .teamId "..msg.championBattlePairInfo[i].teamId.." .position ".. msg.championBattlePairInfo[i].position)
-- end
this.EliminationData_32 = this.RequestEliminationDataMerge(msg.championBattlePairInfo)
-- this.EliminationData_32 = msg.championBattlePairInfo
if func then func() end
end)
end
--- 请求淘汰赛数据4强
function this.Request_4_EliminationData(func)
-- 未开启
@ -422,12 +427,66 @@ function this.Request_4_EliminationData(func)
if this.baseInfo.battleStage ~= TOP_MATCH_STAGE.ELIMINATION and this.baseInfo.battleStage~= TOP_MATCH_STAGE.OVER then return end
NetManager.GetTopMatchEliminationInfo(2, function(msg)
this.EliminationData_4 = msg.championBattlePairInfo
-- this.EliminationData_4 = msg.championBattlePairInfo
this.EliminationData_4 = this.RequestEliminationDataMerge(msg.championBattlePairInfo)
-- Log("获取4强数据成功, 数据长度 = "..#this.EliminationData_4)
if func then func() end
end)
end
--32 16 8 4 强数据合并
--三局两胜 需要将三局 或者两局数据 合并 算出战斗结果 胜利 失败 未打 和 竞猜结果 只要有过1就等于1
function this.RequestEliminationDataMerge(EliminationData)
local newEliminationData = {}
for EliminationDataI, EliminationDataV in ipairs(EliminationData) do
local curKey = tonumber(tostring(EliminationDataV.roundTImes)..tostring(EliminationDataV.teamId)..tostring(EliminationDataV.position))
if newEliminationData[curKey] then
table.insert(newEliminationData[curKey],EliminationDataV)
else
newEliminationData[curKey] = {}
table.insert(newEliminationData[curKey],EliminationDataV)
end
end
-- LogRed("newEliminationData, 数据长度 = "..LengthOfTable(newEliminationData))
local datas = {}
for newEliminationDataI, newEliminationDataV in pairs(newEliminationData) do
-- LogPink("newEliminationDataI "..newEliminationDataI)
if newEliminationDataV and #newEliminationDataV > 0 then
local singledata = newEliminationDataV[1]
local fightResult = 0
for i = 1, #newEliminationDataV do
fightResult = fightResult + newEliminationDataV[i].fightResult
if fightResult < 0 then
singledata.fightResult = -1
elseif fightResult == 0 then
singledata.fightResult = 0
elseif fightResult > 0 and fightResult < 2 then
singledata.fightResult = 1
elseif fightResult >= 2 then
singledata.fightResult = 1
end
if newEliminationDataV[i].isGUess > 0 then
singledata.isGUess = newEliminationDataV[i].isGUess
end
end
-- LogPink("fightResult "..singledata.fightResult)
-- LogPink("isGUess "..singledata.isGUess)
-- newEliminationData_32V = singledata
table.insert(datas,singledata)
end
end
table.sort(datas, function(a, b)
if a.roundTImes == b.roundTImes then
if a.teamId == b.teamId then
return a.position < b.position
else
return a.teamId < b.teamId
end
else
return a.roundTImes < b.roundTImes
end
end)
return datas
end
--- 获取32强数据
function this.Get_32_EliminationData()
-- body
@ -557,67 +616,68 @@ function this.GetRankNameByRank(rank)
local curStage = this.baseInfo.battleStage
local curTurn = this.baseInfo.battleTurn
local curState = this.baseInfo.battleState
LogPink("rank "..rank.." curStage "..curStage.." curTurn "..curTurn.." curState "..curState)
--- 未获取到数据
if curStage == -1 or curTurn == -1 or curState == -1 then
return Language[10041]
end
--- 选拔赛阶段都是相应得强数
if curStage == 1 then
local config = ConfigManager.GetConfigData(ConfigName.ChampionshipSetting, 1)
return config.ChampionshipPlayer..Language[10097]
-- 判断淘汰赛阶段的轮数
elseif curStage == 2 or curStage == -2 then
-- if curState == TOP_MATCH_TIME_STATE.OPEN_IN_END or curState == TOP_MATCH_TIME_STATE.OVER then
if rank == 1 then
return Language[10095]--冠军
elseif rank == 2 then
return Language[10096]--亚军
end
return rank..Language[10097]--几强
elseif curStage == -1 then
return Language[10041]
end
-- --- 判断淘汰赛阶段的轮数
-- local maxTurn = this.GetEliminationMaxRound()
-- LogPink("maxTurn "..maxTurn)
-- if curTurn <= 0 then curTurn = maxTurn end
-- local opTurn = maxTurn - curTurn + 1 --- 将服务器发过来的轮数倒序,方便计算
-- --- 如果是结算状态,按下一轮处理
-- LogPink("opTurn "..opTurn)
-- if curState == TOP_MATCH_TIME_STATE.OPEN_IN_END or curState == TOP_MATCH_TIME_STATE.OVER then
-- opTurn = opTurn - 1
-- end
-- LogPink("opTurn "..opTurn)
-- --- 轮数为0表示决赛的结算阶段
-- if opTurn == 0 then
-- if curStage == 1 then
-- local config = ConfigManager.GetConfigData(ConfigName.ChampionshipSetting, 1)
-- return config.ChampionshipPlayer..Language[10097]
-- -- 判断淘汰赛阶段的轮数
-- elseif curStage == 2 or curStage == -2 then
-- -- if curState == TOP_MATCH_TIME_STATE.OPEN_IN_END or curState == TOP_MATCH_TIME_STATE.OVER then
-- if rank == 1 then
-- return Language[10095]--冠军
-- elseif rank == 2 then
-- return Language[10096]--亚军
-- end
-- return rank..Language[10097]--几强
-- elseif curStage == -1 then
-- return Language[10041]
-- end
-- --- 如果大于淘汰赛最大轮数的最大名次
-- if rank > math.pow(2, maxTurn) then
-- local config = ConfigManager.GetConfigData(ConfigName.ChampionshipSetting, 1)
-- LogPink(config.ChampionshipPlayer..Language[10097])
-- return config.ChampionshipPlayer..Language[10097]--几强
-- end
-- --- 如果小于当前轮数的最大排名,则返回当前轮数的名称
-- local opTurnMaxRank = math.pow(2, opTurn)
-- if rank <= opTurnMaxRank then
-- LogPink(opTurnMaxRank..Language[10097])
-- return opTurnMaxRank..Language[10097]
-- end
-- --- 如果大于当前的轮数,则可能已被淘汰,返回相应的被淘汰轮数的名称
-- for turn = opTurn + 1, maxTurn do
-- local turnMaxRank = math.pow(2, turn)
-- if rank <= turnMaxRank then
-- LogPink(turnMaxRank..Language[10097])
-- return turnMaxRank..Language[10097]
-- end
-- end
-- -- 数据没错的情况下不会出现这种情况
-- return Language[10041]
--- 判断淘汰赛阶段的轮数
local maxTurn = this.GetEliminationMaxRound()
LogPink("maxTurn "..maxTurn)
if curTurn <= 0 then curTurn = maxTurn end
local opTurn = maxTurn - curTurn + 1 --- 将服务器发过来的轮数倒序,方便计算
--- 如果是结算状态,按下一轮处理
LogPink("opTurn "..opTurn)
if curState == TOP_MATCH_TIME_STATE.OPEN_IN_END or curState == TOP_MATCH_TIME_STATE.OVER then
opTurn = opTurn - 1
end
LogPink("opTurn "..opTurn)
--- 轮数为0表示决赛的结算阶段
if opTurn == 0 then
if rank == 1 then
return Language[10095]--冠军
elseif rank == 2 then
return Language[10096]--亚军
end
end
--- 如果大于淘汰赛最大轮数的最大名次
if rank > math.pow(2, maxTurn) then
local config = ConfigManager.GetConfigData(ConfigName.ChampionshipSetting, 1)
LogPink(config.ChampionshipPlayer..Language[10097])
return config.ChampionshipPlayer..Language[10097]--几强
end
--- 如果小于当前轮数的最大排名,则返回当前轮数的名称
local opTurnMaxRank = math.pow(2, opTurn)
if rank <= opTurnMaxRank then
LogPink(opTurnMaxRank..Language[10097])
return opTurnMaxRank..Language[10097]
end
--- 如果大于当前的轮数,则可能已被淘汰,返回相应的被淘汰轮数的名称
for turn = opTurn + 1, maxTurn do
local turnMaxRank = math.pow(2, turn)
if rank <= turnMaxRank then
LogPink(turnMaxRank..Language[10097])
return turnMaxRank..Language[10097]
end
end
-- 数据没错的情况下不会出现这种情况
return Language[10041]
end
-- 竞猜币ID