Fix for the Bob stuff

This commit is contained in:
ZioPao
2023-11-13 11:06:43 +01:00
parent 328d3c4d3a
commit 8fde83c049
6 changed files with 62 additions and 17 deletions

View File

@@ -88,8 +88,11 @@ function AmputationHandler:execute(damagePlayer)
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
CachedDataHandler.AddAmputatedLimb(self.patientPl:getUsername(), self.limbName)
local username = self.patientPl:getUsername()
CachedDataHandler.AddAmputatedLimb(username, self.limbName)
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
end
---Deletes the instance

View File

@@ -6,6 +6,12 @@ local CommonMethods = require("TOC/CommonMethods")
---@class CachedDataHandler
local CachedDataHandler = {}
---comment
---@param username string
function CachedDataHandler.Reset(username)
CachedDataHandler.amputatedLimbs[username] = {}
CachedDataHandler.highestAmputatedLimbs[username] = {}
end
--* Amputated Limbs caching *--
CachedDataHandler.amputatedLimbs = {}
@@ -13,6 +19,7 @@ CachedDataHandler.amputatedLimbs = {}
---Calcualte the currently amputated limbs for a certain player
---@param username string
function CachedDataHandler.CalculateAmputatedLimbs(username)
CachedDataHandler.amputatedLimbs[username] = {}
local modDataHandler = ModDataHandler.GetInstance(username)
for i=1, #StaticData.LIMBS_STRINGS do
local limbName = StaticData.LIMBS_STRINGS[i]
@@ -44,14 +51,18 @@ CachedDataHandler.highestAmputatedLimbs = {}
---@param username string
function CachedDataHandler.CalculateHighestAmputatedLimbs(username)
if CachedDataHandler.amputatedLimbs == nil or CachedDataHandler.amputatedLimbs[username] == nil then
--- This function gets ran pretty early, we need to account for the Bob stuff
if username == "Bob" then
TOC_DEBUG.print("skip, Bob is default char")
return
end
TOC_DEBUG.print("Amputated limbs weren't calculated. Trying to calculate them now for " .. username)
CachedDataHandler.CalculateAmputatedLimbs(username)
return
end
local amputatedLimbs = CachedDataHandler.amputatedLimbs[username]
CachedDataHandler.highestAmputatedLimbs[username] = {}
TOC_DEBUG.print("Searching highest amputations for " .. username)
--TOC_DEBUG.print("Searching highest amputations for " .. username)
local modDataHandler = ModDataHandler.GetInstance(username)
if modDataHandler == nil then
TOC_DEBUG.print("ModDataHandler not found for " .. username)

View File

@@ -17,7 +17,8 @@ function ModDataHandler:new(username, isResetForced)
local o = {}
setmetatable(o, self)
self.__index = self
o.username = username
o.username = username
local key = CommandsData.GetKey(username)
ModData.request(key)
@@ -27,6 +28,9 @@ function ModDataHandler:new(username, isResetForced)
TOC_DEBUG.print("tocData in ModDataHandler for " .. username .. " is nil, creating it now")
self:setup(key)
end
TOC_DEBUG.print("initialized ModDataHandler for " .. username)
-- Transmit it to the server
ModData.transmit(key)
@@ -175,6 +179,12 @@ function ModDataHandler:apply()
end
function ModDataHandler.ReceiveData(key, table)
if not isClient() then
TOC_DEBUG.print("SP, skipping ModDataHandler.ReceiveData")
end
if key == "TOC_Bob" then return end -- TODO Fix this
TOC_DEBUG.print("receive data for " .. key)
if table == {} or table == nil then
TOC_DEBUG.print("table is nil... returning")
@@ -191,7 +201,7 @@ Events.OnReceiveGlobalModData.Add(ModDataHandler.ReceiveData)
---@param username string?
---@return ModDataHandler
function ModDataHandler.GetInstance(username)
if username == nil then
if username == nil or username == "Bob" then
username = getPlayer():getUsername()
end

View File

@@ -21,17 +21,20 @@ local PlayerHandler = {}
function PlayerHandler.InitializePlayer(playerObj, isForced)
local username = playerObj:getUsername()
TOC_DEBUG.print("initializing local player: " .. username)
ModDataHandler:new(username, isForced)
PlayerHandler.playerObj = playerObj
-- Calculate amputated limbs at startup
-- Calculate amputated limbs and highest point of amputations at startup
CachedDataHandler.CalculateAmputatedLimbs(username)
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
-- Since isForced is used to reset an existing player data, we're gonna clean their ISHealthPanel table too
if isForced then
--ISHealthPanel.highestAmputations = {}
local ItemsHandler = require("TOC/Handlers/ItemsHandler")
ItemsHandler.DeleteAllOldAmputationItems(playerObj)
CachedDataHandler.Reset(username)
end
end