Bob sheninagans and relay
This commit is contained in:
39
media/lua/client/TOC/ClientRelayCommands.lua
Normal file
39
media/lua/client/TOC/ClientRelayCommands.lua
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
local CommandsData = require("TOC/CommandsData")
|
||||||
|
local AmputationHandler = require("TOC/Handlers/AmputationHandler")
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
local ClientRelayCommands = {}
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param limbName any
|
||||||
|
---@param surgeonNum any
|
||||||
|
---@return AmputationHandler
|
||||||
|
local function InitAmputationHandler(limbName, surgeonNum)
|
||||||
|
|
||||||
|
-- TODO Pretty unclean
|
||||||
|
local surgeonPl = getSpecificPlayer(surgeonNum)
|
||||||
|
local handler = AmputationHandler:new(limbName, surgeonPl)
|
||||||
|
return handler
|
||||||
|
end
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param args receiveDamageDuringAmputationParams
|
||||||
|
function ClientRelayCommands.ReceiveDamageDuringAmputation(args)
|
||||||
|
local handler = InitAmputationHandler(args.limbName, args.surgeonNum)
|
||||||
|
handler:damageDuringAmputation()
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param args receiveExecuteAmputationActionParams
|
||||||
|
function ClientRelayCommands.ReceiveExecuteAmputationAction(args)
|
||||||
|
local handler = InitAmputationHandler(args.limbName, args.surgeonNum)
|
||||||
|
handler:execute(true)
|
||||||
|
end
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
local function OnServerRelayCommand(module, command, args)
|
||||||
|
if module == CommandsData.modules.TOC_ACTION and ClientRelayCommands[command] then
|
||||||
|
ClientRelayCommands[command](args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Events.OnServerCommand.Add(OnServerRelayCommand)
|
||||||
@@ -5,7 +5,7 @@ local StaticData = require("TOC/StaticData")
|
|||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
-- TODO Add Bandages, Torniquet, etc.
|
-- TODO Add Bandages, Torniquet, etc.
|
||||||
--- Manages an amputation. Could be run on either clients
|
--- Manages an amputation. Will be run on the patient client
|
||||||
---@class AmputationHandler
|
---@class AmputationHandler
|
||||||
---@field patientPl IsoPlayer
|
---@field patientPl IsoPlayer
|
||||||
---@field limbName string
|
---@field limbName string
|
||||||
@@ -22,7 +22,7 @@ function AmputationHandler:new(limbName, surgeonPl)
|
|||||||
setmetatable(o, self)
|
setmetatable(o, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
|
|
||||||
o.patientPl = getPlayer() -- TODO This isn't necessarily true anymore.
|
o.patientPl = getPlayer()
|
||||||
o.limbName = limbName
|
o.limbName = limbName
|
||||||
o.bodyPartType = BodyPartType[self.limbName]
|
o.bodyPartType = BodyPartType[self.limbName]
|
||||||
if surgeonPl then
|
if surgeonPl then
|
||||||
@@ -38,7 +38,22 @@ end
|
|||||||
|
|
||||||
--* Main methods *--
|
--* Main methods *--
|
||||||
|
|
||||||
---Starts bleeding from the point where the saw is being used
|
---Starts bleeding from the point where the saw is being used. Static since this could be used for online
|
||||||
|
---comment
|
||||||
|
---@param patientPl IsoPlayer
|
||||||
|
---@param bodyPartType BodyPartType
|
||||||
|
function AmputationHandler.DamageDuringAmputation(patientPl, bodyPartType)
|
||||||
|
TOC_DEBUG.print("damage patient")
|
||||||
|
local bodyDamage = patientPl:getBodyDamage()
|
||||||
|
local bodyDamagePart = bodyDamage:getBodyPart(bodyPartType)
|
||||||
|
|
||||||
|
bodyDamagePart:setBleeding(true)
|
||||||
|
bodyDamagePart:setCut(true)
|
||||||
|
bodyDamagePart:setBleedingTime(ZombRand(10, 20))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
function AmputationHandler:damageDuringAmputation()
|
function AmputationHandler:damageDuringAmputation()
|
||||||
TOC_DEBUG.print("damage patient")
|
TOC_DEBUG.print("damage patient")
|
||||||
local bodyDamage = self.patientPl:getBodyDamage()
|
local bodyDamage = self.patientPl:getBodyDamage()
|
||||||
@@ -81,13 +96,8 @@ function AmputationHandler:execute(damagePlayer)
|
|||||||
modDataHandler:apply() -- This will force rechecking the cached amputated limbs on the other client
|
modDataHandler:apply() -- This will force rechecking the cached amputated limbs on the other client
|
||||||
|
|
||||||
-- Give the player the correct amputation item
|
-- Give the player the correct amputation item
|
||||||
-- TODO We need to consider where this will be ran.
|
ItemsHandler.DeleteOldAmputationItem(self.patientPl, self.limbName)
|
||||||
if self.patientPl == self.surgeonPl then
|
ItemsHandler.SpawnAmputationItem(self.patientPl, self.limbName)
|
||||||
ItemsHandler.DeleteOldAmputationItem(self.patientPl, self.limbName)
|
|
||||||
ItemsHandler.SpawnAmputationItem(self.patientPl, self.limbName)
|
|
||||||
else
|
|
||||||
-- TODO Send server command to manage items and spawn on another player
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Add it to the list of cut limbs on this local client
|
-- Add it to the list of cut limbs on this local client
|
||||||
local username = self.patientPl:getUsername()
|
local username = self.patientPl:getUsername()
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ CachedDataHandler.highestAmputatedLimbs = {}
|
|||||||
function CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
function CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||||
if CachedDataHandler.amputatedLimbs == nil or CachedDataHandler.amputatedLimbs[username] == nil then
|
if CachedDataHandler.amputatedLimbs == nil or CachedDataHandler.amputatedLimbs[username] == nil then
|
||||||
--- This function gets ran pretty early, we need to account for the Bob stuff
|
--- This function gets ran pretty early, we need to account for the Bob stuff
|
||||||
if username == "Bob" then
|
-- if username == "Bob" then
|
||||||
TOC_DEBUG.print("skip, Bob is default char")
|
-- TOC_DEBUG.print("skip, Bob is default char")
|
||||||
return
|
-- return
|
||||||
end
|
-- end
|
||||||
|
|
||||||
TOC_DEBUG.print("Amputated limbs weren't calculated. Trying to calculate them now for " .. username)
|
TOC_DEBUG.print("Amputated limbs weren't calculated. Trying to calculate them now for " .. username)
|
||||||
CachedDataHandler.CalculateAmputatedLimbs(username)
|
CachedDataHandler.CalculateAmputatedLimbs(username)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
require "TimedActions/ISBaseTimedAction"
|
require "TimedActions/ISBaseTimedAction"
|
||||||
local AmputationHandler = require("TOC/Handlers/AmputationHandler")
|
local AmputationHandler = require("TOC/Handlers/AmputationHandler")
|
||||||
|
local CommandsData = require("TOC/CommandsData")
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
---@class CutLimbAction : ISBaseTimedAction
|
---@class CutLimbAction : ISBaseTimedAction
|
||||||
@@ -44,7 +45,9 @@ function CutLimbAction:start()
|
|||||||
self.handler:damageDuringAmputation()
|
self.handler:damageDuringAmputation()
|
||||||
else
|
else
|
||||||
-- Other player
|
-- Other player
|
||||||
-- TODO Send Damage
|
---@type relayDamageDuringAmputationParams
|
||||||
|
local params = {patientNum = self.patient:getOnlineID(), limbName = self.limbName}
|
||||||
|
sendClientCommand(CommandsData.modules.TOC_RELAY, CommandsData.server.Relay.RelayDamageDuringAmputation, params )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,11 @@ function ISHealthPanel:initialise()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local username = self.character:getUsername()
|
local username = self.character:getUsername()
|
||||||
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
if username ~= "Bob" then
|
||||||
self.highestAmputations = CachedDataHandler.GetHighestAmputatedLimbs(username)
|
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||||
|
self.highestAmputations = CachedDataHandler.GetHighestAmputatedLimbs(username)
|
||||||
|
end
|
||||||
|
|
||||||
og_ISHealthPanel_initialise(self)
|
og_ISHealthPanel_initialise(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
42
media/lua/server/TOC/ServerRelayCommands.lua
Normal file
42
media/lua/server/TOC/ServerRelayCommands.lua
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
local CommandsData = require("TOC/CommandsData")
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
local ServerRelayCommands = {}
|
||||||
|
|
||||||
|
-- TODO We can easily make this a lot more simple without having functions
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param surgeonPl IsoPlayer
|
||||||
|
---@param args relayDamageDuringAmputationParams
|
||||||
|
function ServerRelayCommands.RelayDamageDuringAmputation(surgeonPl, args)
|
||||||
|
local patientPl = getSpecificPlayer(args.patientNum)
|
||||||
|
local surgeonNum = surgeonPl:getOnlineID()
|
||||||
|
|
||||||
|
---@type receiveDamageDuringAmputationParams
|
||||||
|
local params = {surgeonNum = surgeonNum, args.limbName}
|
||||||
|
sendServerCommand(patientPl, CommandsData.modules.TOC_RELAY, CommandsData.client.Relay.ReceiveDamageDuringAmputation, params)
|
||||||
|
end
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param surgeonPl IsoPlayer
|
||||||
|
---@param args relayExecuteAmputationActionParams
|
||||||
|
function ServerRelayCommands.RelayExecuteAmputationAction(surgeonPl, args)
|
||||||
|
local patientPl = getSpecificPlayer(args.patientNum)
|
||||||
|
local surgeonNum = surgeonPl:getOnlineID()
|
||||||
|
|
||||||
|
---@type receiveDamageDuringAmputationParams
|
||||||
|
local params = {surgeonNum = surgeonNum, args.limbName}
|
||||||
|
sendServerCommand(patientPl, CommandsData.modules.TOC_RELAY, CommandsData.client.Relay.ReceiveExecuteAmputationAction, params)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
local function OnClientRelayCommand(module, command, playerObj, args)
|
||||||
|
if module == CommandsData.modules.TOC_ACTION and ServerRelayCommands[command] then
|
||||||
|
ServerRelayCommands[command](playerObj, args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Events.OnClientCommand.Add(OnClientRelayCommand)
|
||||||
@@ -4,17 +4,27 @@ local StaticData = require("TOC/StaticData")
|
|||||||
local CommandsData = {}
|
local CommandsData = {}
|
||||||
|
|
||||||
CommandsData.modules = {
|
CommandsData.modules = {
|
||||||
TOC_DEBUG = "TOC_DEBUG"
|
TOC_DEBUG = "TOC_DEBUG",
|
||||||
|
TOC_RELAY = "TOC_RELAY"
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandsData.client = {
|
CommandsData.client = {
|
||||||
|
Relay = {
|
||||||
|
ReceiveDamageDuringAmputation = "ReceiveDamageDuringAmputation", ---@alias receiveDamageDuringAmputationParams {surgeonNum : number, limbName : string}
|
||||||
|
ReceiveExecuteAmputationAction = "ReceiveExecuteAmputationAction" ---@alias receiveExecuteAmputationActionParams {surgeonNum : number, limbName : string}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandsData.server = {
|
CommandsData.server = {
|
||||||
Debug = {
|
Debug = {
|
||||||
PrintTocData = "PrintTocData", ---@alias printTocDataParams {username : string}
|
PrintTocData = "PrintTocData", ---@alias printTocDataParams {username : string}
|
||||||
PrintAllTocData = "PrintAllTocData"
|
PrintAllTocData = "PrintAllTocData"
|
||||||
|
},
|
||||||
|
|
||||||
|
Relay = {
|
||||||
|
RelayDamageDuringAmputation = "RelayDamageDuringAmputation", ---@alias relayDamageDuringAmputationParams {patientNum : number, limbName : string}
|
||||||
|
RelayExecuteAmputationAction = "RelayExecuteAmputationAction" ---@alias relayExecuteAmputationActionParams {patientNum : number, limbName : string}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user