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
TOC_DEBUG.print("Amputated limbs weren't calculated. Trying to calculate them now for " .. username)
CachedDataHandler.CalculateAmputatedLimbs(username)
--- 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)
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,6 +17,7 @@ function ModDataHandler:new(username, isResetForced)
local o = {}
setmetatable(o, self)
self.__index = self
o.username = username
local key = CommandsData.GetKey(username)
@@ -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

View File

@@ -34,6 +34,7 @@ function Main.SetupTraits()
end
function Main.Start()
TOC_DEBUG.print("running Start method")
Main.SetupTraits()
-- Starts initialization for local client
@@ -42,8 +43,20 @@ function Main.Start()
end
function Main.Initialize()
local function TryToInitialize()
local pl = getPlayer()
TOC_DEBUG.print("Current username in TryToInitialize: " .. pl:getUsername())
if pl:getUsername() == "Bob" then
TOC_DEBUG.print("Username is still Bob, waiting")
return
end
PlayerHandler.InitializePlayer(pl, false)
Events.OnTick.Remove(TryToInitialize)
end
Events.OnTick.Add(TryToInitialize)
end

View File

@@ -49,7 +49,9 @@ function ISHealthPanel:initialise()
self.sexPl = "Male"
end
self.highestAmputations = CachedDataHandler.GetAmputatedLimbs(self.character:getUsername())
local username = self.character:getUsername()
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
self.highestAmputations = CachedDataHandler.GetHighestAmputatedLimbs(username)
og_ISHealthPanel_initialise(self)
end
@@ -57,17 +59,18 @@ local og_ISHealthPanel_setOtherPlayer = ISHealthPanel.setOtherPlayer
---@param playerObj IsoPlayer
function ISHealthPanel:setOtherPlayer(playerObj)
og_ISHealthPanel_setOtherPlayer(self, playerObj)
-- Since setOtherPlayer may be run after initialise (or always), we need to recheck it after.
self:setHighestAmputation()
-- TODO Request from server!
--CachedDataHandler.CalculateAmputatedLimbs(self.character:getUsername())
end
local og_ISHealthPanel_render = ISHealthPanel.render
function ISHealthPanel:render()
og_ISHealthPanel_render(self)
local username = self.character:getUsername()
--CachedDataHandler.CalculateHighestAmputatedLimbs(username)
self.highestAmputations = CachedDataHandler.GetHighestAmputatedLimbs(username)
if self.highestAmputations ~= nil then
-- Left Texture
if self.highestAmputations["L"] then
@@ -81,7 +84,9 @@ function ISHealthPanel:render()
self:drawTexture(textureR, self.healthPanel.x/2 + 2, self.healthPanel.y/2, 1, 1, 0, 0)
end
else
self:setHighestAmputation()
-- Request caching data
TOC_DEBUG.print("highest amputated limbs was nil, calculating and getting it now for" .. username)
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
end
end