| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- -- 战区争霸(DB)
- local LuaMongo = _G.lua_mongo
- local DB = require("common.DB")
- local Log = require("common.Log")
- local AreaBattleDefine = require("areaBattle.AreaBattleDefine")
- local CombatVideo = require("combat.CombatVideo")
- local CombatDefine = require("combat.CombatDefine")
- local dBUpdate = {_id=nil}
- local dBUpdateField = {}
- -- 用于展示的简单录像数据
- VideoShowCache = {}
- -- DB
- AreaBattleData = nil
- -- {
- -- state = 1,
- -- joinSrvArr = {serverId1, serverId2, serverId3}, -- 参加活动的服务器列表
- -- matchSrvArr = { {serverId1, serverId3}, {serverId2, serverId4} }, -- 匹配成功的服务器列表
- -- nowRoundStartTi = nil, -- 本轮活动开启时间
- -- upLoadStartTi = nil, -- 玩家战斗数据上传时间,
- -- serverList = { -- 服务器信息列表
- -- [serverId] = {
- -- winTimes = 0,
- -- defeatTimes = 0,
- -- winPlayerArr = {playerUuid1, playerUuid2,},
- -- playerInfoArr = {
- -- {
- -- uuid = uuid,
- -- power = power,
- -- name = name,
- -- head = head,
- -- headFrame = headFrame,
- -- },
- -- },
- -- },
- -- }
- -- }
- local function initData()
- AreaBattleData = {}
- AreaBattleData.state = AreaBattleDefine.STATE_END
- AreaBattleData.joinSrvArr = {}
- AreaBattleData.matchSrvArr = {}
- AreaBattleData.serverList = {}
- LuaMongo.insert(DB.db_area_battle, AreaBattleData)
- end
- local function resetData()
- AreaBattleData.state = AreaBattleDefine.STATE_END
- AreaBattleData.joinSrvArr = {}
- AreaBattleData.matchSrvArr = {}
- AreaBattleData.serverList = {}
- AreaBattleData.nowRoundStartTi = os.time()
- AreaBattleData.upLoadStartTi = nil
- dBUpdate._id = AreaBattleData._id
- LuaMongo.update(DB.db_area_battle, dBUpdate, AreaBattleData)
- end
- local function loadData()
- LuaMongo.find(DB.db_area_battle)
- local data = {}
- if LuaMongo.next(data) then
- AreaBattleData = data
- else
- initData()
- end
- end
- -- 修改db单个字段
- local function updateValue(key, value)
- if not key then return end
- if value then
- dBUpdateField["$set"] = {[key]=value}
- dBUpdateField["$unset"] = nil
- else
- dBUpdateField["$set"] = nil
- dBUpdateField["$unset"] = {[key]=1}
- end
- dBUpdate._id = AreaBattleData._id
- LuaMongo.update(DB.db_area_battle, dBUpdate, dBUpdateField)
- end
- -- 生成录像数据中的英雄展示数据
- local function genObjShowInfo(net, playerData, posArr, objList)
- net.name = playerData.name
- net.power = playerData.zhandouli
- net.head = playerData.head
- net.headFrame = playerData.headFrame
- net.playerLv = playerData.lv
- net.uuid = playerData.uuid
- net.heroList = {}
- local len = 0
- for _,pos in ipairs(posArr) do
- local grid = objList and objList[pos]
- if grid and grid.id ~= 0 then
- len = len + 1
- net.heroList[len] = {
- heroId = grid.id,
- heroColor = grid.quality or 0,
- heroStar = grid.star or 0,
- heroLv = grid.lv or 0,
- heroCamp = grid.camp or 999
- }
- end
- end
- end
- -- 生成某个服的录像展示数据
- local function genSrvVideoSHowData(videoSecondIdx)
- local videoArr = CombatVideo.getCombatVideosByType(CombatVideo.VIDEOTYPE_AREABATTLE, videoSecondIdx)
- if #videoArr == 0 then
- return
- end
- VideoShowCache[videoSecondIdx] = {}
- for k, videoInfo in ipairs(videoArr) do
- local combatInfo = videoInfo.combatInfo
- VideoShowCache[videoSecondIdx][k] = VideoShowCache[videoSecondIdx][k] or {}
- local videoData = VideoShowCache[videoSecondIdx][k]
- videoData.atkData = {}
- genObjShowInfo(videoData.atkData, combatInfo.attacker, CombatDefine.SIDE2POS[CombatDefine.ATTACK_SIDE], combatInfo.objList)
- videoData.defenerData = {}
- genObjShowInfo(videoData.defenerData, combatInfo.defender, CombatDefine.SIDE2POS[CombatDefine.DEFEND_SIDE], combatInfo.objList)
- videoData.atkFormation = combatInfo.atkFormation
- videoData.defenerFormation = combatInfo.defFormation
- videoData.round = combatInfo.result.round
- videoData.maxRound = combatInfo.maxRound
- videoData.time = combatInfo.time
- videoData.videoUuid = videoInfo._id
- videoData.result = combatInfo.isWin == true and 1 or 0
- end
- end
- function initAfterStart()
- if _G.is_middle ~= true then return end
- loadData()
- end
- function ResetData()
- resetData()
- end
- function GetNowRoundStartTi()
- return AreaBattleData and AreaBattleData.nowRoundStartTi or 0
- end
- function GetUpLoadStartTi()
- return AreaBattleData and AreaBattleData.upLoadStartTi or 0
- end
- function UpdateUpLoadStartTi(newUpLoadStartTi)
- AreaBattleData = AreaBattleData or {}
- AreaBattleData.upLoadStartTi = newUpLoadStartTi
- updateValue("upLoadStartTi", newUpLoadStartTi)
- end
- function GetState()
- return AreaBattleData and AreaBattleData.state or AreaBattleDefine.STATE_END
- end
- function UpdateState(newState)
- AreaBattleData = AreaBattleData or {}
- AreaBattleData.state = newState
- updateValue("state", newState)
- if newState == AreaBattleDefine.STATE_PREPARE then
- local now = os.time()
- AreaBattleData.nowRoundStartTi = now
- updateValue("nowRoundStartTi", AreaBattleData.nowRoundStartTi)
- end
- end
- function GetJoinSrvArr()
- return AreaBattleData.joinSrvArr
- end
- function UpdateJoinSrvArr(newJoinSrvArr)
- AreaBattleData = AreaBattleData or {}
- AreaBattleData.joinSrvArr = newJoinSrvArr
- updateValue("joinSrvArr", newJoinSrvArr)
- end
- function GetServerList()
- return AreaBattleData.serverList
- end
- function UpdateServerList(newServerList)
- AreaBattleData = AreaBattleData or {}
- AreaBattleData.serverList = newServerList
- updateValue("serverList", newServerList)
- end
- function GetMatchSrvArr()
- return AreaBattleData.matchSrvArr
- end
- function UpdateMatchSrvArr(newMatchSrvArr)
- AreaBattleData = AreaBattleData or {}
- AreaBattleData.matchSrvArr = newMatchSrvArr
- updateValue("matchSrvArr", newMatchSrvArr)
- end
- function GetSrvVideoShowData(videoSecondIdx)
- if not videoSecondIdx then
- return
- end
- if not VideoShowCache[videoSecondIdx] then
- genSrvVideoSHowData(videoSecondIdx)
- end
- return VideoShowCache[videoSecondIdx]
- end
- function ResetVideoShowCache()
- VideoShowCache = {}
- end
|