Super-Nostalgia-Zone/UI/Mouse/Mouse.client.lua

134 lines
3.2 KiB
Lua

local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local GuiService = game:GetService("GuiService")
local Players = game:GetService("Players")
-----------------------------------------------------------------
local inGuiFocus = false
local inputQueue = {}
local function checkGuiFocus()
inGuiFocus = (next(inputQueue) ~= nil)
end
local function onInputChanged(input,gameProcessed)
if input.UserInputType == Enum.UserInputType.MouseMovement then
inputQueue[input] = gameProcessed or nil
checkGuiFocus()
end
end
UserInputService.InputChanged:Connect(onInputChanged)
-----------------------------------------------------------------
local activated = false
local player = Players.LocalPlayer
local mouseGui = script.Parent
local function onInputBegan(input,gameProcessed)
if mouseGui then
if input.UserInputType == Enum.UserInputType.Touch and not gameProcessed then
wait(.1)
if input.UserInputState == Enum.UserInputState.End then
activated = true
else
mouseGui.ImageTransparency = 1
end
end
end
end
UserInputService.InputBegan:Connect(onInputBegan)
-----------------------------------------------------------------
local GUN_WAIT_CURSOR = "rbxasset://textures/GunWaitCursor.png"
local GUN_CURSOR = "rbxasset://textures/GunCursor.png"
local IS_TOUCH = UserInputService.TouchEnabled
local hasTool = false
UserInputService.MouseIconEnabled = false
local canActivate = true
if UserInputService.TouchEnabled then
local camera = workspace.CurrentCamera
local playerGui = player:WaitForChild("PlayerGui")
local touchGui = playerGui:WaitForChild("TouchGui")
local touchFrame = touchGui:WaitForChild("TouchControlFrame")
if camera.ViewportSize.Y < 600 then
touchFrame.Size = UDim2.new(0.85, 0, 0.8, 0)
else
touchFrame.Size = UDim2.new(0.9, 0, 0.9, 0)
end
touchFrame.Position = UDim2.new(0.05, 0, 0, 0)
end
local function updateMouse()
local char = player.Character
local override = false
local tool
if char then
tool = char:FindFirstChildWhichIsA("Tool")
hasTool = (tool ~= nil)
if tool then
if tool:FindFirstChild("IconOverride") then
if tool.IconOverride.Value ~= "" then
mouseGui.Image = tool.IconOverride.Value
else
mouseGui.Image = "rbxassetid://1000000"
end
elseif tool.Enabled then
mouseGui.Image = GUN_CURSOR
if IS_TOUCH then
canActivate = true
mouseGui.ImageTransparency = 1
end
else
mouseGui.Image = GUN_WAIT_CURSOR
end
end
else
hasTool = false
end
if inGuiFocus then
mouseGui.Image = "rbxassetid://1000000"
end
local pos = UserInputService:GetMouseLocation()
local upos = UDim2.new(0, pos.X, 0, pos.Y)
if IS_TOUCH then
mouseGui.Visible = hasTool
if hasTool then
if activated and mouseGui.Image == GUN_WAIT_CURSOR then
if canActivate then
canActivate = false
mouseGui.Position = upos
mouseGui.ImageTransparency = -1
end
activated = false
else
mouseGui.ImageTransparency = math.min(1, mouseGui.ImageTransparency + 0.01)
end
end
else
mouseGui.Position = upos
end
if UserInputService.MouseIconEnabled then
UserInputService.MouseIconEnabled = false
end
end
RunService:BindToRenderStep("UpdateMouse", 1000, updateMouse)