Files
barotrauma-localmods/Lua Linker/Lua/Autorun/luaDisplaySideBySide.lua
2025-03-31 13:19:47 +02:00

85 lines
2.8 KiB
Lua

local findtarget = dofile(... .. "/Lua/findtarget.lua")
local function AddMessage(text, client)
local message = ChatMessage.Create("Lua Linker", text, ChatMessageType.Default, nil, nil)
message.Color = Color(60, 100, 255)
if CLIENT then
Game.ChatBox.AddMessage(message)
else
Game.SendDirectChatMessage(message, client)
end
end
local linksDisplaySideBySide = {}
Hook.Add("luaDisplaySideBySide.onUse", "lualinker.luaDisplaySideBySide",function(statusEffect, delta, item)
local target = findtarget.findtarget(item)
if CLIENT and Game.IsMultiplayer then
return
end
local owner = findtarget.FindClientCharacter(item.ParentInventory.Owner)
if target == nil then
AddMessage("No item found", owner)
return
end
if linksDisplaySideBySide[item] == nil then
linksDisplaySideBySide[item] = target
-- AddMessage(string.format("Link Start: \"%s\"", target.Name), owner)
if target.DisplaySideBySideWhenLinked == true then
target.DisplaySideBySideWhenLinked = false
AddMessage(string.format(
"Removed DisplaySideBySideWhenLinked from \"%s\"",
target.Name), owner)
if SERVER then
-- lets send a net message to all clients so they remove our DisplaySideBySideWhenLinked
local msg = Networking.Start("luaDisplaySideBySide.remove")
msg.WriteUInt16(UShort(target.ID))
Networking.Send(msg)
end
linksDisplaySideBySide[item] = nil
return
else
-- target.AddLinked(otherTarget)
-- otherTarget.AddLinked(target)
-- otherTarget.DisplaySideBySideWhenLinked = true
target.DisplaySideBySideWhenLinked = true
AddMessage(string.format(
"Added DisplaySideBySideWhenLinked to \"%s\"",
target.Name), owner)
if SERVER then
-- lets send a net message to all clients so they add our DisplaySideBySideWhenLinked
local msg = Networking.Start("luaDisplaySideBySide.add")
msg.WriteUInt16(UShort(target.ID))
Networking.Send(msg)
end
linksDisplaySideBySide[item] = nil
return
end
end
end)
if CLIENT and Game.IsMultiplayer then
Networking.Receive("luaDisplaySideBySide.add", function(msg)
local target = Entity.FindEntityByID(msg.ReadUInt16())
target.DisplaySideBySideWhenLinked = true
end)
Networking.Receive("luaDisplaySideBySide.remove", function(msg)
local target = Entity.FindEntityByID(msg.ReadUInt16())
target.DisplaySideBySideWhenLinked = false
end)
end