add gs
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
local UserInputService = game:GetService("UserInputService")
|
||||
local GuiService = game:GetService("GuiService")
|
||||
local RunService = game:GetService("RunService")
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
local Workspace = game:GetService("Workspace")
|
||||
|
||||
local Modules = CoreGui.RobloxGui.Modules
|
||||
|
||||
local Config = require(Modules.LuaApp.Config)
|
||||
local Create = require(Modules.LuaChat.Create)
|
||||
local SetPlatform = require(Modules.LuaApp.Actions.SetPlatform)
|
||||
local SetFormFactor = require(Modules.LuaApp.Actions.SetFormFactor)
|
||||
local FormFactor = require(Modules.LuaApp.Enum.FormFactor)
|
||||
|
||||
local STATUS_BAR_HEIGHT_IOS = 20
|
||||
local STATUS_BAR_HEIGHT_ANDROID = 24
|
||||
local NAV_BAR_HEIGHT = 44
|
||||
|
||||
local FlagSettings = require(Modules.LuaApp.FlagSettings)
|
||||
|
||||
local Device = {}
|
||||
|
||||
local function simulateIOS()
|
||||
local statusBarSize = Vector2.new(0, STATUS_BAR_HEIGHT_IOS)
|
||||
local navBarSize = Vector2.new(0, NAV_BAR_HEIGHT)
|
||||
local bottomBarSize = Vector2.new(0, 0)
|
||||
--Pcall because Tests have a lower security context
|
||||
pcall(function()
|
||||
UserInputService:SendAppUISizes(statusBarSize, navBarSize, bottomBarSize)
|
||||
GuiService:SetSafeZoneOffsets(0, 0, 0, 0)
|
||||
end)
|
||||
end
|
||||
|
||||
local function simulateAndroid()
|
||||
local statusBarSize = Vector2.new(0, STATUS_BAR_HEIGHT_ANDROID)
|
||||
local navBarSize = Vector2.new(0, NAV_BAR_HEIGHT)
|
||||
local bottomBarSize = Vector2.new(0, 0)
|
||||
--Pcall because Tests have a lower security context
|
||||
pcall(function()
|
||||
UserInputService:SendAppUISizes(statusBarSize, navBarSize, bottomBarSize)
|
||||
GuiService:SetSafeZoneOffsets(0, 0, 0, 0)
|
||||
end)
|
||||
|
||||
local screenGui = Create.new "ScreenGui" {
|
||||
Name = "StudioShellSimulation",
|
||||
DisplayOrder = 10,
|
||||
|
||||
Create.new "Frame" {
|
||||
Name = "StatusBar",
|
||||
Position = UDim2.new(0, 0, 0, 0),
|
||||
Size = UDim2.new(1, 0, 0, UserInputService.StatusBarSize.Y),
|
||||
BorderSizePixel = 0,
|
||||
BackgroundColor3 = Color3.fromRGB(117, 117, 117),
|
||||
}
|
||||
}
|
||||
screenGui.Parent = CoreGui
|
||||
end
|
||||
|
||||
local function getDevicePlatform()
|
||||
if _G.__TESTEZ_RUNNING_TEST__ then
|
||||
return Enum.Platform.None
|
||||
end
|
||||
|
||||
return UserInputService:GetPlatform()
|
||||
end
|
||||
|
||||
function Device.simulatePlatformIfInStudio(store)
|
||||
if not FlagSettings.IsLuaAppDeterminingFormFactorAndPlatform() then
|
||||
local function setFormFactor(viewportSize)
|
||||
local formFactor = FormFactor.TABLET
|
||||
if viewportSize.X <= 1 then
|
||||
-- Camera.ViewportSize hasn't been properly set yet
|
||||
formFactor = FormFactor.UNKNOWN
|
||||
elseif viewportSize.Y > viewportSize.X then
|
||||
formFactor = FormFactor.PHONE
|
||||
end
|
||||
store:dispatch(SetFormFactor(formFactor))
|
||||
end
|
||||
local camera = Workspace:WaitForChild("Camera")
|
||||
setFormFactor(camera.ViewportSize)
|
||||
camera.Changed:Connect(function(prop)
|
||||
if prop == "ViewportSize" then
|
||||
setFormFactor(camera.ViewportSize)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
if RunService:IsStudio() then
|
||||
store:dispatch(SetPlatform(Config.General.SimulatePlatform))
|
||||
|
||||
if Config.General.SimulatePlatform == Enum.Platform.IOS then
|
||||
simulateIOS()
|
||||
elseif Config.General.SimulatePlatform == Enum.Platform.Android then
|
||||
simulateAndroid()
|
||||
end
|
||||
else
|
||||
-- We only want to set Platform here if:
|
||||
-- 1) We are not in Studio
|
||||
-- 2) LuaApp is not determining Platform in LuaApp/App.lua
|
||||
if not FlagSettings.IsLuaAppDeterminingFormFactorAndPlatform() then
|
||||
local platform = getDevicePlatform()
|
||||
store:dispatch(SetPlatform(platform))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return Device
|
||||
Reference in New Issue
Block a user