Clients/Client2018/content/scripts/CoreScripts/StarterScript.lua

100 lines
3.6 KiB
Lua

-- Creates all neccessary scripts for the gui on initial load, everything except build tools
-- Created by Ben T. 10/29/10
-- Please note that these are loaded in a specific order to diminish errors/perceived load time by user
local scriptContext = game:GetService("ScriptContext")
local touchEnabled = game:GetService("UserInputService").TouchEnabled
local RobloxGui = game:GetService("CoreGui"):WaitForChild("RobloxGui")
local soundFolder = Instance.new("Folder")
soundFolder.Name = "Sounds"
soundFolder.Parent = RobloxGui
-- This can be useful in cases where a flag configuration issue causes requiring a CoreScript to fail
local function safeRequire(moduleScript)
local moduleReturnValue = nil
local success, err = pcall(function() moduleReturnValue = require(moduleScript) end)
if not success then
warn("Failure to Start CoreScript module" ..moduleScript.Name.. ".\n" ..err)
end
return moduleReturnValue
end
-- TopBar
scriptContext:AddCoreScriptLocal("CoreScripts/Topbar", RobloxGui)
-- MainBotChatScript (the Lua part of Dialogs)
scriptContext:AddCoreScriptLocal("CoreScripts/MainBotChatScript2", RobloxGui)
-- In-game notifications script
scriptContext:AddCoreScriptLocal("CoreScripts/NotificationScript2", RobloxGui)
-- Performance Stats Management
scriptContext:AddCoreScriptLocal("CoreScripts/PerformanceStatsManagerScript",
RobloxGui)
-- Chat script
spawn(function() safeRequire(RobloxGui.Modules.ChatSelector) end)
spawn(function() safeRequire(RobloxGui.Modules.PlayerlistModule) end)
-- Purchase Prompt Script
scriptContext:AddCoreScriptLocal("CoreScripts/PurchasePromptScript2", RobloxGui)
-- Prompt Block Player Script
scriptContext:AddCoreScriptLocal("CoreScripts/BlockPlayerPrompt", RobloxGui)
scriptContext:AddCoreScriptLocal("CoreScripts/FriendPlayerPrompt", RobloxGui)
-- Avatar Context Menu
scriptContext:AddCoreScriptLocal("CoreScripts/AvatarContextMenu", RobloxGui)
-- Backpack!
spawn(function() safeRequire(RobloxGui.Modules.BackpackScript) end)
scriptContext:AddCoreScriptLocal("CoreScripts/VehicleHud", RobloxGui)
scriptContext:AddCoreScriptLocal("CoreScripts/GamepadMenu", RobloxGui)
if touchEnabled then -- touch devices don't use same control frame
-- only used for touch device button generation
scriptContext:AddCoreScriptLocal("CoreScripts/ContextActionTouch", RobloxGui)
RobloxGui:WaitForChild("ControlFrame")
RobloxGui.ControlFrame:WaitForChild("BottomLeftControl")
RobloxGui.ControlFrame.BottomLeftControl.Visible = false
end
spawn(function()
local VRService = game:GetService('VRService')
local function onVREnabledChanged()
if VRService.VREnabled then
safeRequire(RobloxGui.Modules.VR.VirtualKeyboard)
safeRequire(RobloxGui.Modules.VR.UserGui)
end
end
onVREnabledChanged()
VRService:GetPropertyChangedSignal("VREnabled"):connect(onVREnabledChanged)
end)
-- Boot up the VR App Shell
if UserSettings().GameSettings:InStudioMode() then
local VRService = game:GetService('VRService')
local function onVREnabledChanged()
if VRService.VREnabled then
local shellInVRSuccess, shellInVRFlagValue = pcall(function() return settings():GetFFlag("EnabledAppShell3D") end)
local shellInVR = (shellInVRSuccess and shellInVRFlagValue == true)
local modulesFolder = RobloxGui.Modules
local appHomeModule = modulesFolder:FindFirstChild('Shell') and modulesFolder:FindFirstChild('Shell'):FindFirstChild('AppHome')
if shellInVR and appHomeModule then
safeRequire(appHomeModule)
end
end
end
spawn(function()
if VRService.VREnabled then
onVREnabledChanged()
end
VRService:GetPropertyChangedSignal("VREnabled"):connect(onVREnabledChanged)
end)
end