29 lines
1.3 KiBLFS
Lua
Executable File
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) |