Basic stuff to handle MP envs
This commit is contained in:
33
media/lua/client/TOC/ClientSyncCommands.lua
Normal file
33
media/lua/client/TOC/ClientSyncCommands.lua
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
local CommandsData = require("TOC/CommandsData")
|
||||||
|
local ClientSyncCommands = {}
|
||||||
|
local moduleName = CommandsData.modules.TOC_SYNC
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
---Send the toc mod data to the server to relay it to someone else
|
||||||
|
---@param args {surgeonNum : number}
|
||||||
|
function ClientSyncCommands.SendPlayerData(args)
|
||||||
|
-- TODO get moddata and send it
|
||||||
|
sendClientCommand(moduleName, CommandsData.server.Sync.RelayPlayerData, {surgeonNum = args.surgeonNum, tocData = {}})
|
||||||
|
end
|
||||||
|
|
||||||
|
---Receives and store the toc mod data from another player
|
||||||
|
---@param args {patientNum : number}
|
||||||
|
function ClientSyncCommands.ReceivePlayerData(args)
|
||||||
|
local patientPl = getSpecificPlayer(args.patientNum)
|
||||||
|
local patientUsername patientPl:getUsername()
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO Save the data somewhere that makes sense.
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
local function OnServerSyncCommand(module, command, args)
|
||||||
|
if module == moduleName and ClientSyncCommands[command] then
|
||||||
|
args = args or {}
|
||||||
|
ClientSyncCommands[command](args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Events.OnServerCommand.Add(OnServerSyncCommand)
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
local StaticData = require("TOC/StaticData")
|
local StaticData = require("TOC/StaticData")
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
---@alias partData { isCut : boolean?, isInfected : boolean?, isOperated : boolean?, isCicatrized : boolean?, isCauterized : boolean?, isVisible : boolean?, cicatrizationTime : number }
|
--This class should handle all the stuff related to the mod data
|
||||||
---@alias tocModData {Hand_L : partData, ForeArm_L : partData, UpperArm_L : partData, Hand_R : partData, ForeArm_R : partData, UpperArm_R : partData, isIgnoredPartInfected : boolean, isAnyLimbCut : boolean}
|
|
||||||
----------------
|
|
||||||
-- TODO This class should handle all the stuff related to the mod data
|
|
||||||
|
|
||||||
---@class ModDataHandler
|
---@class ModDataHandler
|
||||||
---@field playerObj IsoPlayer
|
---@field playerObj IsoPlayer
|
||||||
@@ -17,6 +14,7 @@ function ModDataHandler:new(playerObj)
|
|||||||
local o = {}
|
local o = {}
|
||||||
setmetatable(o, self)
|
setmetatable(o, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
|
-- TODO Instead of requiring a player, to make it compatible in a MP env, we should require the table containing the modData for the init
|
||||||
|
|
||||||
o.playerObj = playerObj
|
o.playerObj = playerObj
|
||||||
o.tocData = playerObj:getModData()[StaticData.MOD_NAME]
|
o.tocData = playerObj:getModData()[StaticData.MOD_NAME]
|
||||||
@@ -68,7 +66,7 @@ end
|
|||||||
---Set a generic boolean that toggles varies function of the mod
|
---Set a generic boolean that toggles varies function of the mod
|
||||||
---@param isAnyLimbCut boolean
|
---@param isAnyLimbCut boolean
|
||||||
function ModDataHandler:setIsAnyLimbCut(isAnyLimbCut)
|
function ModDataHandler:setIsAnyLimbCut(isAnyLimbCut)
|
||||||
self.tocData.isAnyLimbCut = true
|
self.tocData.isAnyLimbCut = isAnyLimbCut
|
||||||
end
|
end
|
||||||
|
|
||||||
---Set isCut
|
---Set isCut
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
-- Mh how do I require it from another folder?
|
|
||||||
|
|
||||||
local TOCData = {}
|
|
||||||
|
|
||||||
|
|
||||||
-- function TOCData.Init()
|
|
||||||
-- ModData.getOrCreate(StaticData.MOD_NAME)
|
|
||||||
-- end
|
|
||||||
33
media/lua/server/TOC/ServerSyncCommands.lua
Normal file
33
media/lua/server/TOC/ServerSyncCommands.lua
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
local CommandsData = require("TOC/CommandsData")
|
||||||
|
local ServerSyncCommands = {}
|
||||||
|
local moduleName = CommandsData.modules.TOC_SYNC
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
---A client has asked the server to ask another client to send its toc mod data
|
||||||
|
---@param surgeonPl IsoPlayer
|
||||||
|
---@param args {patientNum : number}
|
||||||
|
function ServerSyncCommands.AskPlayerData(surgeonPl, args)
|
||||||
|
local patientPl = getSpecificPlayer(args.patientNum)
|
||||||
|
local surgeonNum = surgeonPl:getOnlineID()
|
||||||
|
sendServerCommand(patientPl, moduleName, CommandsData.client.Sync.SendPlayerData, {surgeonNum = surgeonNum})
|
||||||
|
end
|
||||||
|
|
||||||
|
---Relay the toc mod data from a certain player to another one
|
||||||
|
---@param patientPl IsoPlayer
|
||||||
|
---@param args {surgeonNum : number, tocData : tocModData}
|
||||||
|
function ServerSyncCommands.RelayPlayerData(patientPl, args)
|
||||||
|
local surgeonPl = getSpecificPlayer(args.surgeonNum)
|
||||||
|
local patientNum = patientPl:getOnlineID()
|
||||||
|
sendServerCommand(surgeonPl, moduleName, CommandsData.client.Sync.ReceivePlayerData, {patientNum = patientNum, tocData = args.tocData})
|
||||||
|
end
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
local function OnClientSyncCommand(module, command, playerObj, args)
|
||||||
|
if module == moduleName and ServerSyncCommands[command] then
|
||||||
|
ServerSyncCommands[command](playerObj, args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Events.OnClientCommand.Add(OnClientSyncCommand)
|
||||||
23
media/lua/shared/TOC/CommandsData.lua
Normal file
23
media/lua/shared/TOC/CommandsData.lua
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
local CommandsData = {}
|
||||||
|
|
||||||
|
|
||||||
|
CommandsData.modules = {
|
||||||
|
TOC_SYNC = "TOC_SYNC"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CommandsData.client = {
|
||||||
|
Sync = {
|
||||||
|
SendPlayerData = "SendPlayerData",
|
||||||
|
ReceivePlayerData = "ReceivePlayerData"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandsData.server = {
|
||||||
|
Sync = {
|
||||||
|
AskPlayerData = "AskPlayerData",
|
||||||
|
RelayPlayerData = "RelayPlayerData"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CommandsData
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
---@alias partData { isCut : boolean?, isInfected : boolean?, isOperated : boolean?, isCicatrized : boolean?, isCauterized : boolean?, isVisible : boolean?, cicatrizationTime : number }
|
||||||
|
---@alias tocModData {Hand_L : partData, ForeArm_L : partData, UpperArm_L : partData, Hand_R : partData, ForeArm_R : partData, UpperArm_R : partData, isIgnoredPartInfected : boolean, isAnyLimbCut : boolean}
|
||||||
|
|
||||||
|
|
||||||
local StaticData = {}
|
local StaticData = {}
|
||||||
|
|
||||||
StaticData.MOD_NAME = "TOC"
|
StaticData.MOD_NAME = "TOC"
|
||||||
|
|||||||
Reference in New Issue
Block a user