--[[ Filename: LeaveGame.lua Written by: jeditkacheff Version 1.0 Description: Takes care of the leave game in Settings Menu --]] -------------- CONSTANTS ------------- local LEAVE_GAME_ACTION = "LeaveGameCancelAction" -------------- SERVICES -------------- local CoreGui = game:GetService("CoreGui") local ContextActionService = game:GetService("ContextActionService") local RobloxGui = CoreGui:WaitForChild("RobloxGui") local GuiService = game:GetService("GuiService") ----------- UTILITIES -------------- local utility = require(RobloxGui.Modules.Utility) ------------ Variables ------------------- local PageInstance = nil RobloxGui:WaitForChild("Modules"):WaitForChild("TenFootInterface") local isTenFootInterface = require(RobloxGui.Modules.TenFootInterface):IsEnabled() ----------- CLASS DECLARATION -------------- local function Initialize() local settingsPageFactory = require(RobloxGui.Modules.SettingsPageFactory) local this = settingsPageFactory:CreateNewPage() this.DontLeaveFunc = function(isUsingGamepad) if this.HubRef then this.HubRef:PopMenu(isUsingGamepad, true) end end this.DontLeaveFromHotkey = function(name, state, input) if state == Enum.UserInputState.Begin then local isUsingGamepad = input.UserInputType == Enum.UserInputType.Gamepad1 or input.UserInputType == Enum.UserInputType.Gamepad2 or input.UserInputType == Enum.UserInputType.Gamepad3 or input.UserInputType == Enum.UserInputType.Gamepad4 this.DontLeaveFunc(isUsingGamepad) end end this.DontLeaveFromButton = function(isUsingGamepad) this.DontLeaveFunc(isUsingGamepad) end ------ TAB CUSTOMIZATION ------- this.TabHeader = nil -- no tab for this page ------ PAGE CUSTOMIZATION ------- this.Page.Name = "LeaveGamePage" local leaveGameText = utility:Create'TextLabel' { Name = "LeaveGameText", Text = "Are you sure you want to leave the game?", Font = Enum.Font.SourceSansBold, FontSize = Enum.FontSize.Size36, TextColor3 = Color3.new(1,1,1), BackgroundTransparency = 1, Size = UDim2.new(1,0,0,200), TextWrapped = true, ZIndex = 2, Parent = this.Page }; if utility:IsSmallTouchScreen() then leaveGameText.FontSize = Enum.FontSize.Size24 leaveGameText.Size = UDim2.new(1,0,0,100) elseif isTenFootInterface then leaveGameText.FontSize = Enum.FontSize.Size48 end local buttonSpacing = 20 local buttonSize = UDim2.new(0, 200, 0, 50) if isTenFootInterface then leaveGameText.Position = UDim2.new(0,0,0,100) buttonSize = UDim2.new(0, 300, 0, 80) end this.LeaveGameButton = utility:MakeStyledButton("LeaveGame", "Leave", buttonSize) this.LeaveGameButton.NextSelectionRight = nil this.LeaveGameButton:SetVerb("Exit") if utility:IsSmallTouchScreen() then this.LeaveGameButton.Position = UDim2.new(0.5, -buttonSize.X.Offset - buttonSpacing, 1, 0) else this.LeaveGameButton.Position = UDim2.new(0.5, -buttonSize.X.Offset - buttonSpacing, 1, -30) end this.LeaveGameButton.Parent = leaveGameText ------------- Init ---------------------------------- local dontleaveGameButton = utility:MakeStyledButton("DontLeaveGame", "Don't Leave", buttonSize, this.DontLeaveFromButton) dontleaveGameButton.NextSelectionLeft = nil if utility:IsSmallTouchScreen() then dontleaveGameButton.Position = UDim2.new(0.5, buttonSpacing, 1, 0) else dontleaveGameButton.Position = UDim2.new(0.5, buttonSpacing, 1, -30) end dontleaveGameButton.Parent = leaveGameText this.Page.Size = UDim2.new(1,0,0,dontleaveGameButton.AbsolutePosition.Y + dontleaveGameButton.AbsoluteSize.Y) return this end ----------- Public Facing API Additions -------------- PageInstance = Initialize() PageInstance.Displayed.Event:connect(function() GuiService.SelectedCoreObject = PageInstance.LeaveGameButton ContextActionService:BindCoreAction(LEAVE_GAME_ACTION, PageInstance.DontLeaveFromHotkey, false, Enum.KeyCode.ButtonB) end) PageInstance.Hidden.Event:connect(function() ContextActionService:UnbindCoreAction(LEAVE_GAME_ACTION) end) return PageInstance