----------------------------------------------- -- 星空争霸/王者争霸 db -- getThroneList 获取王座列表 -- getThroneByVestId 根据_id获取王座信息 ----------------------------------------------- local ThroneExcel = require("excel.throne") local LuaMongo = _G.lua_mongo local Config = require("Config") local DB = require("common.DB") ID_2_THRONE = ID_2_THRONE or {} -- id->throne VESTID_2_THRONE = VESTID_2_THRONE or {} -- _id->throne local DBUpdate = {_id = nil} -- 初始化单个王座信息 local function initThrone(id) local throne = {} throne.id = id -- 王座id throne.lv = 1 -- 挑战等级 throne.record = {} -- 记录 throne.uuid = nil -- 占领者uuid throne.body = nil -- 形象 throne.exp = nil -- 当前经验值 throne.evolve = nil -- 已进化x次 return throne end -- 初始化 function init() if #ID_2_THRONE > 0 then return end LuaMongo.find(DB.db_the_stars) while true do local throne = {} if not LuaMongo.next(throne) then break end ID_2_THRONE[throne.id] = throne end for id in ipairs(ThroneExcel.throne) do local throne = ID_2_THRONE[id] if not throne then throne = initThrone(id) LuaMongo.insert(DB.db_the_stars, throne) ID_2_THRONE[id] = throne end VESTID_2_THRONE[throne._id] = throne end end function getThroneList() return ID_2_THRONE end function getThroneByVestId(vestId) return vestId and VESTID_2_THRONE[vestId] end function updateThroneDB(throne) if not throne then return end if not throne._id then return end DBUpdate._id = throne._id LuaMongo.update(DB.db_the_stars, DBUpdate, throne) return true end -- 设置占领者 function setThroneRole(id, uuid, body, lv, exp, evolve) local throne = id and ID_2_THRONE[id] if not throne then return end unsetThroneRole(uuid) -- 取消之前的占领 throne.uuid = uuid throne.body = body throne.lv = lv throne.exp = exp throne.evolve = evolve updateThroneDB(throne) end -- 取消占领者 function unsetThroneRole(uuid) if not uuid then return end for _, throne in ipairs(ID_2_THRONE) do if throne.uuid == uuid then throne.uuid = nil throne.body = nil updateThroneDB(throne) end end end