eluna-scripts-ornfelt/lua/WowEmulationScriptPack/Lua/WIP/RotateObjectClient.lua
2024-09-23 07:59:23 +02:00

401 lines
No EOL
15 KiB
Lua

local AIO = AIO or require("AIO")
if AIO.AddAddon() then
return
end
local GobRotHandlers = AIO.AddHandlers("RotateGobs", {})
local GobTurnFrame = CreateFrame("Frame", "FrameTurnGob", UIParent, "UIPanelDialogTemplate")
GobTurnFrame:SetSize(300, 360)
GobTurnFrame:SetMovable(true)
GobTurnFrame:EnableMouse(true)
GobTurnFrame:SetToplevel(true)
GobTurnFrame:RegisterForDrag("LeftButton")
GobTurnFrame:SetPoint("CENTER")
GobTurnFrame:SetScript("OnDragStart", GobTurnFrame.StartMoving)
GobTurnFrame:SetScript("OnHide", GobTurnFrame.StopMovingOrSizing)
GobTurnFrame:SetScript("OnDragStop", GobTurnFrame.StopMovingOrSizing)
GobTurnFrame:SetScript("OnShow", function() PlaySound("igCharacterInfoTab") end)
GobTurnFrame:SetScript("OnHide", function() PlaySound("igCharacterInfoClose") end)
AIO.SavePosition(GobTurnFrame)
GobTurnFrame:SetClampedToScreen(true)
GobTurnFrame:Hide()
local GobTurnFrame_Text1 = GobTurnFrame:CreateFontString("GobTurnFrame_Text1")
GobTurnFrame_Text1:SetFont("Fonts\\FRIZQT__.TTF", 12)
GobTurnFrame_Text1:SetSize(190, 5)
GobTurnFrame_Text1:SetPoint("TOP", "FrameTurnGob", "TOP", 0, -13)
GobTurnFrame_Text1:SetText("APT Tool")
--guid input box
local GobTurnFrame_EditBox = CreateFrame("EditBox", "GUIDInput", GobTurnFrame, "InputBoxTemplate")
GobTurnFrame_EditBox:SetSize(75, 75)
GobTurnFrame_EditBox:SetAutoFocus(false)
GobTurnFrame_EditBox:SetPoint("TOP", "FrameTurnGob", "TOP", 0, -30)
GobTurnFrame_EditBox:SetScript("OnEnterPressed", GobTurnFrame_EditBox.ClearFocus)
GobTurnFrame_EditBox:SetScript("OnEscapePressed", GobTurnFrame_EditBox.ClearFocus)
local GobTurnFrame_EditBox_Text1 = GobTurnFrame_EditBox:CreateFontString("GobTurnFrame_EditBox_Text1")
GobTurnFrame_EditBox_Text1:SetFont("Fonts\\FRIZQT__.TTF", 12)
GobTurnFrame_EditBox_Text1:SetSize(190, 5)
GobTurnFrame_EditBox_Text1:SetPoint("CENTER", 0, 20)
GobTurnFrame_EditBox_Text1:SetText("GUID")
-- sliders lol
local name = "XSlider"
local slider1 = CreateFrame("Slider",name,GobTurnFrame,"OptionsSliderTemplate") --frameType, frameName, frameParent, frameTemplate
slider1:SetPoint("TOP", "GUIDInput", "TOP", 0, -70)
slider1.textLow = _G[name.."Low"]
slider1.textHigh = _G[name.."High"]
slider1.text = _G[name.."Text"]
slider1:SetMinMaxValues(0, 6.28)
slider1:SetValueStep(0.01)
slider1.minValue, slider1.maxValue = slider1:GetMinMaxValues()
slider1.textLow:SetText(string.format("%.2f", slider1.minValue))
slider1.textHigh:SetText(string.format("%.2f", slider1.maxValue))
slider1.text:SetText(name)
slider1:SetValue(0)
local slider1_editbox = CreateFrame("EDITBOX", "$parentValue", slider1, "InputBoxTemplate")
slider1_editbox:SetSize(40, 20)
slider1_editbox:SetPoint("CENTER", 115, 0)
slider1_editbox:SetAutoFocus(false)
local name = "YSlider"
local slider2 = CreateFrame("Slider",name,GobTurnFrame,"OptionsSliderTemplate") --frameType, frameName, frameParent, frameTemplate
slider2:SetPoint("TOP", "GUIDInput", "TOP", 0, -120)
slider2.textLow = _G[name.."Low"]
slider2.textHigh = _G[name.."High"]
slider2.text = _G[name.."Text"]
slider2:SetMinMaxValues(0, 6.28)
slider2:SetValueStep(0.01)
slider2.minValue, slider2.maxValue = slider2:GetMinMaxValues()
slider2.textLow:SetText(string.format("%.2f", slider2.minValue))
slider2.textHigh:SetText(string.format("%.2f", slider2.maxValue))
slider2.text:SetText(name)
slider2:SetValue(0)
local slider2_editbox = CreateFrame("EDITBOX", "$parentValue", slider2, "InputBoxTemplate")
slider2_editbox:SetSize(40, 20)
slider2_editbox:SetPoint("CENTER", 115, 0)
slider2_editbox:SetAutoFocus(false)
local name = "ZSlider"
local slider3 = CreateFrame("Slider",name,GobTurnFrame,"OptionsSliderTemplate") --frameType, frameName, frameParent, frameTemplate
slider3:SetPoint("TOP", "GUIDInput", "TOP", 0, -170)
slider3.textLow = _G[name.."Low"]
slider3.textHigh = _G[name.."High"]
slider3.text = _G[name.."Text"]
slider3:SetMinMaxValues(0, 6.28)
slider3:SetValueStep(0.01)
slider3.minValue, slider3.maxValue = slider3:GetMinMaxValues()
slider3.textLow:SetText(string.format("%.2f", slider3.minValue))
slider3.textHigh:SetText(string.format("%.2f", slider3.maxValue))
slider3.text:SetText(name)
slider3:SetValue(0)
local slider3_editbox = CreateFrame("EDITBOX", "$parentValue", slider3, "InputBoxTemplate")
slider3_editbox:SetSize(40, 20)
slider3_editbox:SetPoint("CENTER", 115, 0)
slider3_editbox:SetAutoFocus(false)
local name = "Up/Down"
local slider4 = CreateFrame("Slider",name,GobTurnFrame,"OptionsSliderTemplate") --frameType, frameName, frameParent, frameTemplate
slider4:SetPoint("TOP", "GUIDInput", "TOP", 0, -220)
slider4.textLow = _G[name.."Low"]
slider4.textHigh = _G[name.."High"]
slider4.text = _G[name.."Text"]
slider4:SetMinMaxValues(-5, 5)
slider4:SetValueStep(0.1)
slider4.minValue, slider4.maxValue = slider4:GetMinMaxValues()
slider4.textLow:SetText(string.format("%.2f", slider4.minValue))
slider4.textHigh:SetText(string.format("%.2f", slider4.maxValue))
slider4.text:SetText(name)
slider4:SetValue(0)
local slider4_editbox = CreateFrame("EDITBOX", "$parentValue", slider4, "InputBoxTemplate")
slider4_editbox:SetSize(40, 20)
slider4_editbox:SetPoint("CENTER", 115, 0)
slider4_editbox:SetAutoFocus(false)
local name = "Scale"
local slider5 = CreateFrame("Slider",name,GobTurnFrame,"OptionsSliderTemplate") --frameType, frameName, frameParent, frameTemplate
slider5:SetPoint("TOP", "GUIDInput", "TOP", 0, -270)
slider5.textLow = _G[name.."Low"]
slider5.textHigh = _G[name.."High"]
slider5.text = _G[name.."Text"]
slider5:SetMinMaxValues(0.1, 2.0)
slider5:SetValueStep(0.1)
slider5.minValue, slider5.maxValue = slider5:GetMinMaxValues()
slider5.textLow:SetText(string.format("%.2f", slider5.minValue))
slider5.textHigh:SetText(string.format("%.2f", slider5.maxValue))
slider5.text:SetText(name)
slider5:SetValue(0)
local slider5_editbox = CreateFrame("EDITBOX", "$parentValue", slider5, "InputBoxTemplate")
slider5_editbox:SetSize(40, 20)
slider5_editbox:SetPoint("CENTER", 115, 0)
slider5_editbox:SetAutoFocus(false)
-- set scripts for sliders
slider1:SetScript("OnMouseUp", function(self,button)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
slider1_editbox:SetText(string.format("%.2f", val_1))
if (GobTurnFrame_EditBox:GetText() == "") then
-- prevent spam of wrong error message
return false
elseif (editbox == nil) then
print("You must input a number.")
return false
else
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
end
end)
slider2:SetScript("OnMouseUp", function(self,button)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
slider2_editbox:SetText(string.format("%.2f", val_2))
if (GobTurnFrame_EditBox:GetText() == "") then
-- prevent spam of wrong error message
return false
elseif (editbox == nil) then
print("You must input a number.")
return false
else
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
end
end)
slider3:SetScript("OnMouseUp", function(self,button)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
slider3_editbox:SetText(string.format("%.2f", val_3))
if (GobTurnFrame_EditBox:GetText() == "") then
-- prevent spam of wrong error message
return false
elseif (editbox == nil) then
print("You must input a number.")
return false
else
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
end
end)
slider4:SetScript("OnMouseUp", function(self,button)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = 0
val_2 = 0
val_3 = 0
val_4 = slider4:GetValue()
val_5 = 0
slider4_editbox:SetText(string.format("%.2f", val_4))
if (GobTurnFrame_EditBox:GetText() == "") then
-- prevent spam of wrong error message
return false
elseif (editbox == nil) then
print("You must input a number.")
return false
else
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
end
end)
slider5:SetScript("OnMouseUp", function(self,button)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = 0
val_2 = 0
val_3 = 0
val_4 = 0
val_5 = slider5:GetValue()
slider5_editbox:SetText(string.format("%.2f", val_5))
if (GobTurnFrame_EditBox:GetText() == "") then
-- prevent spam of wrong error message
return false
elseif (editbox == nil) then
print("You must input a number.")
return false
else
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
end
end)
-- set scripts for all input boxes
slider1_editbox:SetScript("OnEnterPressed", function(self)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
if (tonumber(slider1_editbox:GetText()) == nil) then
print("You must input a number in order to apply this to the sliders.")
slider1_editbox.ClearFocus()
return false
elseif (tonumber(slider1_editbox:GetText()) > slider1.maxValue) or (tonumber(slider1_editbox:GetText()) < slider1.minValue) then
print("You must input a number between " ..slider1.minValue.. " and " ..slider1.maxValue.. ".")
slider1_editbox.ClearFocus()
return false
elseif (GobTurnFrame_EditBox:GetText() == "") then
slider1:SetValue(tonumber(slider1_editbox:GetText()))
slider1_editbox.ClearFocus()
return false
elseif (editbox == nil) then
print("You must input a GUID number.")
slider1:SetValue(tonumber(slider1_editbox:GetText()))
slider1_editbox.ClearFocus()
return false
else
slider1:SetValue(tonumber(slider1_editbox:GetText()))
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
slider1_editbox.ClearFocus()
return false
end
end)
slider1_editbox:SetScript("OnEscapePressed", slider1_editbox.ClearFocus)
slider2_editbox:SetScript("OnEnterPressed", function(self)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
if (tonumber(slider2_editbox:GetText()) == nil) then
print("You must input a number in order to apply this to the sliders.")
slider2_editbox.ClearFocus()
return false
elseif (tonumber(slider2_editbox:GetText()) > slider2.maxValue) or (tonumber(slider2_editbox:GetText()) < slider2.minValue) then
print("You must input a number between " ..slider2.minValue.. " and " ..slider2.maxValue.. ".")
slider2_editbox.ClearFocus()
return false
elseif (GobTurnFrame_EditBox:GetText() == "") then
slider2:SetValue(tonumber(slider2_editbox:GetText()))
slider2_editbox.ClearFocus()
return false
elseif (editbox == nil) then
print("You must input a GUID number.")
slider2:SetValue(tonumber(slider2_editbox:GetText()))
slider2_editbox.ClearFocus()
return false
else
slider2:SetValue(tonumber(slider2_editbox:GetText()))
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
slider2_editbox.ClearFocus()
return false
end
end)
slider2_editbox:SetScript("OnEscapePressed", slider2_editbox.ClearFocus)
slider3_editbox:SetScript("OnEnterPressed", function(self)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = slider1:GetValue()
val_2 = slider2:GetValue()
val_3 = slider3:GetValue()
val_4 = 0
val_5 = 0
if (tonumber(slider3_editbox:GetText()) == nil) then
print("You must input a number in order to apply this to the sliders.")
slider3_editbox.ClearFocus()
return false
elseif (tonumber(slider3_editbox:GetText()) > slider3.maxValue) or (tonumber(slider3_editbox:GetText()) < slider3.minValue) then
print("You must input a number between " ..slider3.minValue.. " and " ..slider3.maxValue.. ".")
slider3_editbox.ClearFocus()
return false
elseif (GobTurnFrame_EditBox:GetText() == "") then
slider3:SetValue(tonumber(slider3_editbox:GetText()))
slider3_editbox.ClearFocus()
return false
elseif (editbox == nil) then
print("You must input a GUID number.")
slider3:SetValue(tonumber(slider3_editbox:GetText()))
slider3_editbox.ClearFocus()
return false
else
slider3:SetValue(tonumber(slider3_editbox:GetText()))
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
slider3_editbox.ClearFocus()
return false
end
end)
slider4_editbox:SetScript("OnEscapePressed", slider4_editbox.ClearFocus)
slider4_editbox:SetScript("OnEnterPressed", function(self)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = 0
val_2 = 0
val_3 = 0
val_4 = slider4:GetValue()
val_5 = 0
if (tonumber(slider4_editbox:GetText()) == nil) then
print("You must input a number in order to apply this to the sliders.")
slider4_editbox.ClearFocus()
return false
elseif (tonumber(slider4_editbox:GetText()) > slider4.maxValue) or (tonumber(slider4_editbox:GetText()) < slider4.minValue) then
print("You must input a number between " ..slider4.minValue.. " and " ..slider4.maxValue.. ".")
slider4_editbox.ClearFocus()
return false
elseif (GobTurnFrame_EditBox:GetText() == "") then
slider4:SetValue(tonumber(slider4_editbox:GetText()))
slider4_editbox.ClearFocus()
return false
elseif (editbox == nil) then
print("You must input a GUID number.")
slider4:SetValue(tonumber(slider4_editbox:GetText()))
slider4_editbox.ClearFocus()
return false
else
slider4:SetValue(tonumber(slider4_editbox:GetText()))
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
slider4_editbox.ClearFocus()
return false
end
end)
slider5_editbox:SetScript("OnEscapePressed", slider5_editbox.ClearFocus)
slider5_editbox:SetScript("OnEnterPressed", function(self)
editbox = tonumber(GobTurnFrame_EditBox:GetText())
val_1 = 0
val_2 = 0
val_3 = 0
val_4 = 0
val_5 = slider5:GetValue()
if (tonumber(slider5_editbox:GetText()) == nil) then
print("You must input a number in order to apply this to the sliders.")
slider5_editbox.ClearFocus()
return false
elseif (tonumber(slider5_editbox:GetText()) > slider5.maxValue) or (tonumber(slider5_editbox:GetText()) < slider5.minValue) then
print("You must input a number between " ..slider5.minValue.. " and " ..slider5.maxValue.. ".")
slider5_editbox.ClearFocus()
return false
elseif (GobTurnFrame_EditBox:GetText() == "") then
slider5:SetValue(tonumber(slider5_editbox:GetText()))
slider5_editbox.ClearFocus()
return false
elseif (editbox == nil) then
print("You must input a GUID number.")
slider5:SetValue(tonumber(slider5_editbox:GetText()))
slider5_editbox.ClearFocus()
return false
else
slider5:SetValue(tonumber(slider5_editbox:GetText()))
AIO.Handle("RotateGobs", "CheckRotate", val_1, val_2, val_3, editbox, val_4, val_5)
slider5_editbox.ClearFocus()
return false
end
end)
function GobRotHandlers.CommandOutput(player, val_1, val_2, val_3, editbox, gm)
if gm == true then
SendChatMessage(".gob turn " ..editbox.. " "..val_1.." "..val_2.." "..val_3, "SAY")
end
end
function GobRotHandlers.ShowMain(player)
GobTurnFrame:Show()
end