This commit is contained in:
lifestorm
2024-08-04 22:55:00 +03:00
parent 0e770b2b49
commit 94063e4369
7342 changed files with 1718932 additions and 14 deletions

View File

@@ -0,0 +1,279 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
function pace.OnShortcutSave()
if not IsValid(pace.current_part) then return end
local part = pace.current_part:GetRootPart()
surface.PlaySound("buttons/button9.wav")
pace.SaveParts(nil, "part " .. (part:GetName() or "my outfit"), part, true)
end
function pace.OnShortcutWear()
if not IsValid(pace.current_part) then return end
local part = pace.current_part:GetRootPart()
surface.PlaySound("buttons/button9.wav")
pace.SendPartToServer(part)
pace.FlashNotification('Wearing group: ' .. part:GetName())
end
local last = 0
function pace.CheckShortcuts()
if gui.IsConsoleVisible() then return end
if not pace.Editor or not pace.Editor:IsValid() then return end
if last > RealTime() or input.IsMouseDown(MOUSE_LEFT) then return end
if input.IsKeyDown(KEY_LALT) and input.IsKeyDown(KEY_E) then
pace.Call("ToggleFocus", true)
last = RealTime() + 0.2
end
if input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_E) then
pace.Call("ToggleFocus")
last = RealTime() + 0.2
end
if input.IsKeyDown(KEY_LALT) and input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_P) then
RunConsoleCommand("pac_restart")
end
-- Only if the editor is in the foreground
if pace.IsFocused() then
if input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_S) then
pace.Call("ShortcutSave")
last = RealTime() + 0.2
end
-- CTRL + (W)ear?
if input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_N) then
pace.Call("ShortcutWear")
last = RealTime() + 0.2
end
if input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_T) then
pace.SetTPose(not pace.GetTPose())
last = RealTime() + 0.2
end
if input.IsKeyDown(KEY_LCONTROL) and input.IsKeyDown(KEY_F) then
pace.properties.search:SetVisible(true)
pace.properties.search:RequestFocus()
pace.properties.search:SetEnabled(true)
pace.property_searching = true
last = RealTime() + 0.2
end
end
end
pac.AddHook("Think", "pace_shortcuts", pace.CheckShortcuts)
do
local hold = false
local last = 0
local function thinkUndo()
-- whooaaa
-- if input.IsControlDown() and input.IsKeyDown(KEY_X) then
-- pace.UndoPosition = math.Round((gui.MouseY() / ScrH()) * #pace.UndoHistory)
-- pace.ApplyUndo()
-- return
-- end
if not input.IsKeyDown(KEY_Z) and not input.IsKeyDown(KEY_Y) then
hold = false
end
if hold then return end
if input.IsControlDown() and ((input.IsKeyDown(KEY_LSHIFT) and input.IsKeyDown(KEY_Z)) or input.IsKeyDown(KEY_Y)) then
pace.Redo()
hold = true
elseif input.IsControlDown() and input.IsKeyDown(KEY_Z) then
pace.Undo()
hold = true
end
end
local hold = false
local function thinkCopy()
if not input.IsKeyDown(KEY_C) then
hold = false
end
if hold or not (input.IsControlDown() and input.IsKeyDown(KEY_C)) then return end
-- copy
hold = true
local part = pace.current_part
if not part or not part:IsValid() then
pace.FlashNotification('No part selected to copy')
return
end
pace.Copy(part)
surface.PlaySound("buttons/button9.wav")
end
local hold = false
local function thinkCut()
if not input.IsKeyDown(KEY_X) then
hold = false
end
if hold or not (input.IsControlDown() and input.IsKeyDown(KEY_X)) then return end
-- copy
hold = true
local part = pace.current_part
if not part or not part:IsValid() then
pace.FlashNotification('No part selected to cut')
return
end
pace.Cut(part)
surface.PlaySound("buttons/button9.wav")
end
local hold = false
local function thinkDelete()
if not input.IsKeyDown(KEY_DELETE) then
hold = false
end
if hold or not input.IsKeyDown(KEY_DELETE) then return end
-- delete
hold = true
local part = pace.current_part
if not part or not part:IsValid() then
pace.FlashNotification('No part to delete')
return
end
pace.RemovePart(part)
surface.PlaySound("buttons/button9.wav")
end
local REVERSE_COLLAPSE_CONTROLS = CreateConVar('pac_reverse_collapse', '1', {FCVAR_ARCHIVE}, 'Reverse Collapse/Expand hotkeys')
local hold = false
local function thinkExpandAll()
if not input.IsKeyDown(KEY_LALT) and not input.IsKeyDown(KEY_RALT) and not input.IsKeyDown(KEY_0) then
hold = false
end
if hold or not input.IsShiftDown() or (not input.IsKeyDown(KEY_LALT) and not input.IsKeyDown(KEY_RALT)) or not input.IsKeyDown(KEY_0) then return end
-- expand all
hold = true
local part = pace.current_part
if not part or not part:IsValid() then
pace.FlashNotification('No part to expand')
return
end
part:CallRecursive('SetEditorExpand', not REVERSE_COLLAPSE_CONTROLS:GetBool())
surface.PlaySound("buttons/button9.wav")
pace.RefreshTree(true)
end
local hold = false
local function thinkCollapseAll()
if not input.IsKeyDown(KEY_LALT) and not input.IsKeyDown(KEY_RALT) and not input.IsKeyDown(KEY_0) then
hold = false
end
if hold or input.IsShiftDown() or (not input.IsKeyDown(KEY_LALT) and not input.IsKeyDown(KEY_RALT)) or not input.IsKeyDown(KEY_0) then return end
-- collapse all
hold = true
local part = pace.current_part
if not part or not part:IsValid() then
pace.FlashNotification('No part to collapse')
return
end
part:CallRecursive('SetEditorExpand', REVERSE_COLLAPSE_CONTROLS:GetBool())
surface.PlaySound("buttons/button9.wav")
pace.RefreshTree(true)
end
local hold = false
local function thinkPaste()
if not input.IsKeyDown(KEY_V) then
hold = false
end
if hold or not (input.IsControlDown() and input.IsKeyDown(KEY_V)) then return end
-- paste
hold = true
local part = pace.Clipboard
if not part then
pace.FlashNotification('No part is stored in clipboard')
return
end
local findParent
if part == pace.current_part then
findParent = part:GetParent()
if not findParent or not findParent:IsValid() then
findParent = part
end
elseif pace.current_part and pace.current_part:IsValid() then
findParent = pace.current_part
else
pace.RecordUndoHistory()
findParent = pace.Call("CreatePart", "group", L"paste data")
pace.RecordUndoHistory()
end
pace.Paste(findParent)
surface.PlaySound("buttons/button9.wav")
end
pac.AddHook("Think", "pace_keyboard_shortcuts", function()
if not pace.IsActive() then return end
if not pace.Focused then return end
if IsValid(vgui.GetKeyboardFocus()) and vgui.GetKeyboardFocus():GetClassName():find('Text') then return end
if gui.IsConsoleVisible() then return end
thinkUndo()
thinkCopy()
thinkPaste()
thinkCut()
thinkDelete()
thinkExpandAll()
thinkCollapseAll()
end)
end