64 lines
1.7 KiB
Lua
64 lines
1.7 KiB
Lua
local ServerGameData = require "app/server/server_game_data"
|
|
|
|
local ServerDataManager = {}
|
|
|
|
function ServerDataManager:init()
|
|
self.ServerFormationManager = require("app/server/manager/server_formation_manager")
|
|
end
|
|
|
|
function ServerDataManager:saveData()
|
|
end
|
|
|
|
function ServerDataManager:randomReward(weightArr, callback)
|
|
local maxWeight = 0
|
|
for i, v in ipairs(weightArr) do
|
|
maxWeight = maxWeight + v
|
|
end
|
|
local randomWeight
|
|
if callback then
|
|
randomWeight = callback(1, maxWeight)
|
|
else
|
|
randomWeight = math.random(1, maxWeight)
|
|
end
|
|
local idx
|
|
for i, v in ipairs(weightArr) do
|
|
if randomWeight <= v then
|
|
idx = i
|
|
break
|
|
else
|
|
randomWeight = randomWeight - v
|
|
end
|
|
end
|
|
return idx
|
|
end
|
|
|
|
function ServerDataManager:dataOperate(behavior, params, callback)
|
|
local opFunc = ServerDataManager.OP_FUNC[behavior]
|
|
if opFunc then
|
|
opFunc(params, function(result)
|
|
if callback then
|
|
callback(result)
|
|
end
|
|
end)
|
|
-- TODO临时处理
|
|
ServerGameData:saveData()
|
|
else
|
|
Logger.logError("Undefined data operation function, please check :%s", behavior)
|
|
end
|
|
end
|
|
|
|
function ServerDataManager:onSyncData(params, callback)
|
|
-- 初始化本地数据
|
|
ServerGameData:initData()
|
|
local data = ServerGameData:getData()
|
|
if callback then
|
|
callback(data)
|
|
end
|
|
end
|
|
|
|
ServerDataManager.OP_FUNC = {
|
|
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.SYNC_DATA] = function (...) ServerDataManager:onSyncData(...) end,
|
|
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.UPDATE_FORMATION] = function (...) ServerDataManager.ServerFormationManager:updateFormation(...) end,
|
|
}
|
|
|
|
return ServerDataManager |