Files
BarotraumaModServer/LocalMods/Immersive Sonar UI - A Real Sonar Add-On/Lua/Scripts/Client/gunner_overlay.lua
T

29 lines
1.3 KiBLFS
Lua
Executable File

if SERVER then return end -- we don't want server to run GUI code.
LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.Items.Components.Controller"], "targetRotation")
-- our main frame where we will put our custom GUI
local frame = GUI.Frame(GUI.RectTransform(Vector2(1, 1)), nil)
frame.CanBeFocused = false
local textBlock = GUI.TextBlock(GUI.RectTransform(Vector2(0.5, 0.045), frame.RectTransform, GUI.Anchor.BottomCenter), "Aiming at: 0°", nil, nil, GUI.Alignment.Center)
textBlock.TextColor = Color(0, 0, 0, 255)
local function normalizeRotation(degrees)
return (degrees % 360 + 360) % 360
end
Hook.Patch("Barotrauma.GameScreen", "AddToGUIUpdateList", function()
if Character.Controlled and not Character.Controlled.IsDead then
local periscope = Character.Controlled.SelectedItem
if periscope and periscope.Prefab.Identifier == "periscope" then
local controller = periscope.GetComponentString("Controller")
local rotation = controller.targetRotation
rotation = math.deg(rotation)
rotation = math.floor(rotation) -- convert from radians to degrees
rotation = normalizeRotation(rotation + 90)
textBlock.Text = "Aiming at: " .. rotation .. "°",
frame.AddToGUIUpdateList()
end
end
end)