Fix for the Bob stuff
This commit is contained in:
@@ -88,8 +88,11 @@ function AmputationHandler:execute(damagePlayer)
|
|||||||
else
|
else
|
||||||
-- TODO Send server command to manage items and spawn on another player
|
-- TODO Send server command to manage items and spawn on another player
|
||||||
end
|
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
|
||||||
CachedDataHandler.AddAmputatedLimb(self.patientPl:getUsername(), self.limbName)
|
local username = self.patientPl:getUsername()
|
||||||
|
CachedDataHandler.AddAmputatedLimb(username, self.limbName)
|
||||||
|
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||||
end
|
end
|
||||||
|
|
||||||
---Deletes the instance
|
---Deletes the instance
|
||||||
|
|||||||
@@ -6,6 +6,12 @@ local CommonMethods = require("TOC/CommonMethods")
|
|||||||
---@class CachedDataHandler
|
---@class CachedDataHandler
|
||||||
local CachedDataHandler = {}
|
local CachedDataHandler = {}
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param username string
|
||||||
|
function CachedDataHandler.Reset(username)
|
||||||
|
CachedDataHandler.amputatedLimbs[username] = {}
|
||||||
|
CachedDataHandler.highestAmputatedLimbs[username] = {}
|
||||||
|
end
|
||||||
|
|
||||||
--* Amputated Limbs caching *--
|
--* Amputated Limbs caching *--
|
||||||
CachedDataHandler.amputatedLimbs = {}
|
CachedDataHandler.amputatedLimbs = {}
|
||||||
@@ -13,6 +19,7 @@ CachedDataHandler.amputatedLimbs = {}
|
|||||||
---Calcualte the currently amputated limbs for a certain player
|
---Calcualte the currently amputated limbs for a certain player
|
||||||
---@param username string
|
---@param username string
|
||||||
function CachedDataHandler.CalculateAmputatedLimbs(username)
|
function CachedDataHandler.CalculateAmputatedLimbs(username)
|
||||||
|
CachedDataHandler.amputatedLimbs[username] = {}
|
||||||
local modDataHandler = ModDataHandler.GetInstance(username)
|
local modDataHandler = ModDataHandler.GetInstance(username)
|
||||||
for i=1, #StaticData.LIMBS_STRINGS do
|
for i=1, #StaticData.LIMBS_STRINGS do
|
||||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||||
@@ -44,14 +51,18 @@ CachedDataHandler.highestAmputatedLimbs = {}
|
|||||||
---@param username string
|
---@param username string
|
||||||
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
|
||||||
|
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)
|
TOC_DEBUG.print("Amputated limbs weren't calculated. Trying to calculate them now for " .. username)
|
||||||
CachedDataHandler.CalculateAmputatedLimbs(username)
|
CachedDataHandler.CalculateAmputatedLimbs(username)
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local amputatedLimbs = CachedDataHandler.amputatedLimbs[username]
|
local amputatedLimbs = CachedDataHandler.amputatedLimbs[username]
|
||||||
CachedDataHandler.highestAmputatedLimbs[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)
|
local modDataHandler = ModDataHandler.GetInstance(username)
|
||||||
if modDataHandler == nil then
|
if modDataHandler == nil then
|
||||||
TOC_DEBUG.print("ModDataHandler not found for " .. username)
|
TOC_DEBUG.print("ModDataHandler not found for " .. username)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ function ModDataHandler:new(username, isResetForced)
|
|||||||
local o = {}
|
local o = {}
|
||||||
setmetatable(o, self)
|
setmetatable(o, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
|
|
||||||
o.username = username
|
o.username = username
|
||||||
local key = CommandsData.GetKey(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")
|
TOC_DEBUG.print("tocData in ModDataHandler for " .. username .. " is nil, creating it now")
|
||||||
self:setup(key)
|
self:setup(key)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
TOC_DEBUG.print("initialized ModDataHandler for " .. username)
|
||||||
|
|
||||||
-- Transmit it to the server
|
-- Transmit it to the server
|
||||||
ModData.transmit(key)
|
ModData.transmit(key)
|
||||||
|
|
||||||
@@ -175,6 +179,12 @@ function ModDataHandler:apply()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ModDataHandler.ReceiveData(key, table)
|
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)
|
TOC_DEBUG.print("receive data for " .. key)
|
||||||
if table == {} or table == nil then
|
if table == {} or table == nil then
|
||||||
TOC_DEBUG.print("table is nil... returning")
|
TOC_DEBUG.print("table is nil... returning")
|
||||||
@@ -191,7 +201,7 @@ Events.OnReceiveGlobalModData.Add(ModDataHandler.ReceiveData)
|
|||||||
---@param username string?
|
---@param username string?
|
||||||
---@return ModDataHandler
|
---@return ModDataHandler
|
||||||
function ModDataHandler.GetInstance(username)
|
function ModDataHandler.GetInstance(username)
|
||||||
if username == nil then
|
if username == nil or username == "Bob" then
|
||||||
username = getPlayer():getUsername()
|
username = getPlayer():getUsername()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -21,17 +21,20 @@ local PlayerHandler = {}
|
|||||||
function PlayerHandler.InitializePlayer(playerObj, isForced)
|
function PlayerHandler.InitializePlayer(playerObj, isForced)
|
||||||
local username = playerObj:getUsername()
|
local username = playerObj:getUsername()
|
||||||
TOC_DEBUG.print("initializing local player: " .. username)
|
TOC_DEBUG.print("initializing local player: " .. username)
|
||||||
|
|
||||||
ModDataHandler:new(username, isForced)
|
ModDataHandler:new(username, isForced)
|
||||||
PlayerHandler.playerObj = playerObj
|
PlayerHandler.playerObj = playerObj
|
||||||
|
|
||||||
-- Calculate amputated limbs at startup
|
-- Calculate amputated limbs and highest point of amputations at startup
|
||||||
CachedDataHandler.CalculateAmputatedLimbs(username)
|
CachedDataHandler.CalculateAmputatedLimbs(username)
|
||||||
|
CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||||
|
|
||||||
-- Since isForced is used to reset an existing player data, we're gonna clean their ISHealthPanel table too
|
-- Since isForced is used to reset an existing player data, we're gonna clean their ISHealthPanel table too
|
||||||
if isForced then
|
if isForced then
|
||||||
--ISHealthPanel.highestAmputations = {}
|
--ISHealthPanel.highestAmputations = {}
|
||||||
local ItemsHandler = require("TOC/Handlers/ItemsHandler")
|
local ItemsHandler = require("TOC/Handlers/ItemsHandler")
|
||||||
ItemsHandler.DeleteAllOldAmputationItems(playerObj)
|
ItemsHandler.DeleteAllOldAmputationItems(playerObj)
|
||||||
|
CachedDataHandler.Reset(username)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ function Main.SetupTraits()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Main.Start()
|
function Main.Start()
|
||||||
|
TOC_DEBUG.print("running Start method")
|
||||||
Main.SetupTraits()
|
Main.SetupTraits()
|
||||||
|
|
||||||
-- Starts initialization for local client
|
-- Starts initialization for local client
|
||||||
@@ -42,8 +43,20 @@ function Main.Start()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Main.Initialize()
|
function Main.Initialize()
|
||||||
local pl = getPlayer()
|
|
||||||
PlayerHandler.InitializePlayer(pl, false)
|
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
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,9 @@ function ISHealthPanel:initialise()
|
|||||||
self.sexPl = "Male"
|
self.sexPl = "Male"
|
||||||
end
|
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)
|
og_ISHealthPanel_initialise(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -57,18 +59,19 @@ local og_ISHealthPanel_setOtherPlayer = ISHealthPanel.setOtherPlayer
|
|||||||
---@param playerObj IsoPlayer
|
---@param playerObj IsoPlayer
|
||||||
function ISHealthPanel:setOtherPlayer(playerObj)
|
function ISHealthPanel:setOtherPlayer(playerObj)
|
||||||
og_ISHealthPanel_setOtherPlayer(self, playerObj)
|
og_ISHealthPanel_setOtherPlayer(self, playerObj)
|
||||||
|
--CachedDataHandler.CalculateAmputatedLimbs(self.character:getUsername())
|
||||||
-- Since setOtherPlayer may be run after initialise (or always), we need to recheck it after.
|
|
||||||
self:setHighestAmputation()
|
|
||||||
|
|
||||||
-- TODO Request from server!
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local og_ISHealthPanel_render = ISHealthPanel.render
|
local og_ISHealthPanel_render = ISHealthPanel.render
|
||||||
function ISHealthPanel:render()
|
function ISHealthPanel:render()
|
||||||
og_ISHealthPanel_render(self)
|
og_ISHealthPanel_render(self)
|
||||||
if self.highestAmputations ~= nil then
|
local username = self.character:getUsername()
|
||||||
|
|
||||||
|
--CachedDataHandler.CalculateHighestAmputatedLimbs(username)
|
||||||
|
self.highestAmputations = CachedDataHandler.GetHighestAmputatedLimbs(username)
|
||||||
|
|
||||||
|
if self.highestAmputations ~= nil then
|
||||||
-- Left Texture
|
-- Left Texture
|
||||||
if self.highestAmputations["L"] then
|
if self.highestAmputations["L"] then
|
||||||
local textureL = StaticData.HEALTH_PANEL_TEXTURES[self.sexPl][self.highestAmputations["L"]]
|
local textureL = StaticData.HEALTH_PANEL_TEXTURES[self.sexPl][self.highestAmputations["L"]]
|
||||||
@@ -81,7 +84,9 @@ function ISHealthPanel:render()
|
|||||||
self:drawTexture(textureR, self.healthPanel.x/2 + 2, self.healthPanel.y/2, 1, 1, 0, 0)
|
self:drawTexture(textureR, self.healthPanel.x/2 + 2, self.healthPanel.y/2, 1, 1, 0, 0)
|
||||||
end
|
end
|
||||||
else
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user