forked from Simnation/Main
66 lines
No EOL
1.7 KiB
Lua
66 lines
No EOL
1.7 KiB
Lua
---@class PluginCommand
|
|
---@field Command Command
|
|
---@field ServerUniqueIdentifier string
|
|
---@field Parameter table
|
|
PluginCommand = {}
|
|
PluginCommand.__index = PluginCommand
|
|
|
|
---@param command Command?
|
|
---@param serverUniqueIdentifier string
|
|
---@param parameter table?
|
|
---@return PluginCommand
|
|
function PluginCommand.new(command, serverUniqueIdentifier, parameter)
|
|
local self = setmetatable({}, PluginCommand)
|
|
self.Command = command or Command.Pong
|
|
|
|
-- Logger:Debug("[New PluginCommand]", serverUniqueIdentifier, parameter)
|
|
if type(serverUniqueIdentifier) == "string" then
|
|
self.ServerUniqueIdentifier = serverUniqueIdentifier
|
|
self.Parameter = json.decode(json.encode(parameter))
|
|
else
|
|
self.Parameter = json.decode(json.encode(serverUniqueIdentifier))
|
|
end
|
|
return self
|
|
end
|
|
|
|
--#region Methodes
|
|
---@param pluginCommand PluginCommand
|
|
---@return string
|
|
function PluginCommand.Serialize(pluginCommand)
|
|
return json.encode({
|
|
pluginCommand.Command,
|
|
pluginCommand.ServerUniqueIdentifier,
|
|
pluginCommand.Parameter
|
|
})
|
|
end
|
|
|
|
---@param obj table
|
|
function PluginCommand.Deserialize(obj)
|
|
-- Logger:Debug("[PluginCommand] Deserialize", obj)
|
|
if type(obj) == "string" then
|
|
obj = json.decode(obj)
|
|
end
|
|
-- Logger:Debug("[PluginCommand] Deserialize Encode", json.encode(obj))
|
|
|
|
return PluginCommand.new(obj.Command, obj.ServerUniqueIdentifier, obj.Parameter or nil)
|
|
end
|
|
--#endregion
|
|
|
|
-- TryGetPayload NEEDED ???
|
|
-- C#
|
|
-- public bool TryGetPayload<T>(out T payload)
|
|
-- {
|
|
-- try
|
|
-- {
|
|
-- payload = this.Parameter.ToObject<T>();
|
|
|
|
-- return true;
|
|
-- }
|
|
-- catch
|
|
-- {
|
|
-- // do nothing
|
|
-- }
|
|
|
|
-- payload = default;
|
|
-- return false;
|
|
-- } |