add gs
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
-- Written by Kip Turner, Copyright Roblox 2015
|
||||
|
||||
-- App's Main
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
local RobloxGui = CoreGui:FindFirstChild("RobloxGui")
|
||||
local Modules = RobloxGui:FindFirstChild("Modules")
|
||||
local ShellModules = Modules:FindFirstChild("Shell")
|
||||
|
||||
-- TODO: Will use for re-auth when finished
|
||||
local UserInputService = game:GetService('UserInputService')
|
||||
local PlatformService = nil
|
||||
pcall(function() PlatformService = game:GetService('PlatformService') end)
|
||||
local ThirdPartyUserService = nil
|
||||
pcall(function() ThirdPartyUserService = game:GetService('ThirdPartyUserService') end)
|
||||
local Players = game:GetService("Players")
|
||||
|
||||
-- Start up background scene before anything else
|
||||
require(ShellModules.BackgroundSceneManager)
|
||||
|
||||
local Utility = require(ShellModules:FindFirstChild('Utility'))
|
||||
local AppHubModule = require(ShellModules:FindFirstChild('AppHub'))
|
||||
local ScreenManager = require(ShellModules:FindFirstChild('ScreenManager'))
|
||||
local Errors = require(ShellModules:FindFirstChild('Errors'))
|
||||
local ErrorOverlay = require(ShellModules:FindFirstChild('ErrorOverlay'))
|
||||
local EventHub = require(ShellModules:FindFirstChild('EventHub'))
|
||||
local GameGenreScreen = require(ShellModules:FindFirstChild('GameGenreScreen'))
|
||||
local EngagementScreenModule = require(ShellModules:FindFirstChild('EngagementScreen'))
|
||||
local BadgeScreenModule = require(ShellModules:FindFirstChild('BadgeScreen'))
|
||||
local AccountScreen = require(ShellModules:FindFirstChild('AccountScreen'))
|
||||
local UserData = require(ShellModules:FindFirstChild('UserData'))
|
||||
local ControllerStateManager = require(ShellModules:FindFirstChild('ControllerStateManager'))
|
||||
local Alerts = require(ShellModules:FindFirstChild('Alerts'))
|
||||
|
||||
local SiteInfoWidget = require(ShellModules:FindFirstChild('SiteInfoWidget'))
|
||||
|
||||
local GameDetailModule = require(ShellModules:FindFirstChild('GameDetailScreen'))
|
||||
|
||||
-- Initialize AppState and in turn initialize the Store
|
||||
local AppState = require(ShellModules.AppState)
|
||||
|
||||
local AppContainer = require(ShellModules.AppContainer)
|
||||
local TitleSafeContainer = AppContainer.TitleSafeContainer
|
||||
|
||||
local EngagementScreen = EngagementScreenModule()
|
||||
EngagementScreen:SetParent(TitleSafeContainer)
|
||||
|
||||
-- Site Info View
|
||||
SiteInfoWidget.new()
|
||||
|
||||
-- Initialzie Account Age View
|
||||
require(ShellModules.Components.AccountAgeStatus).new(AppState.store, TitleSafeContainer)
|
||||
|
||||
local function returnToEngagementScreen()
|
||||
if ScreenManager:ContainsScreen(EngagementScreen) then
|
||||
while ScreenManager:GetTopScreen() ~= EngagementScreen do
|
||||
ScreenManager:CloseCurrent()
|
||||
end
|
||||
else
|
||||
while ScreenManager:GetTopScreen() do
|
||||
ScreenManager:CloseCurrent()
|
||||
end
|
||||
ScreenManager:OpenScreen(EngagementScreen)
|
||||
end
|
||||
end
|
||||
|
||||
local AppHub = nil
|
||||
local function onAuthenticationSuccess(isNewLinkedAccount)
|
||||
-- Set UserData
|
||||
UserData:Initialize()
|
||||
|
||||
local SetRobloxUser = require(ShellModules.Actions.SetRobloxUser)
|
||||
AppState.store:dispatch(SetRobloxUser( {
|
||||
robloxName = Players.LocalPlayer.Name,
|
||||
rbxuid = Players.LocalPlayer.UserId,
|
||||
under13 = Players.LocalPlayer:GetUnder13(),
|
||||
} ))
|
||||
|
||||
-- Unwind Screens if needed - this will be needed once we put in account linking
|
||||
returnToEngagementScreen()
|
||||
|
||||
AppHub = AppHubModule()
|
||||
AppHub:SetParent(TitleSafeContainer)
|
||||
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenGameDetail"], "gameDetail",
|
||||
function(placeId)
|
||||
local gameDetail = GameDetailModule(placeId)
|
||||
gameDetail:SetParent(TitleSafeContainer);
|
||||
ScreenManager:OpenScreen(gameDetail);
|
||||
end);
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenGameGenre"], "gameGenre",
|
||||
function(sortName, gameCollection)
|
||||
local gameGenre = GameGenreScreen(sortName, gameCollection)
|
||||
gameGenre:SetParent(TitleSafeContainer);
|
||||
ScreenManager:OpenScreen(gameGenre);
|
||||
end);
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenBadgeScreen"], "gameBadges",
|
||||
function(badgeData, previousScreenName)
|
||||
local badgeScreen = BadgeScreenModule(badgeData, previousScreenName)
|
||||
badgeScreen:SetParent(TitleSafeContainer);
|
||||
ScreenManager:OpenScreen(badgeScreen);
|
||||
end)
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenSettingsScreen"], "settingsScreen",
|
||||
function(settingsScreen)
|
||||
settingsScreen:SetParent(TitleSafeContainer);
|
||||
ScreenManager:OpenScreen(settingsScreen);
|
||||
end)
|
||||
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenAvatarEditorScreen"], "avatarEditorScreen",
|
||||
function(screen)
|
||||
screen:SetParent(AppContainer.Root);
|
||||
ScreenManager:OpenScreen(screen);
|
||||
end)
|
||||
|
||||
EventHub:addEventListener(EventHub.Notifications["OpenAccountSettingsScreen"], "accountSettingsScreen",
|
||||
function(errorCode)
|
||||
local accountScreen = AccountScreen(errorCode)
|
||||
accountScreen:SetParent(TitleSafeContainer);
|
||||
ScreenManager:OpenScreen(accountScreen);
|
||||
end)
|
||||
|
||||
Utility.DebugLog("User and Event initialization finished. Opening AppHub")
|
||||
ScreenManager:OpenScreen(AppHub);
|
||||
|
||||
if PlatformService and not PlatformService:SeenCPPWelcomeMsg() then
|
||||
ScreenManager:OpenScreen(ErrorOverlay(Alerts.CrossPlatformPlayWelcome), false)
|
||||
end
|
||||
|
||||
-- Comment out for now since this has never been called in current flow
|
||||
-- show info popup to users on newly linked accounts
|
||||
-- if isNewLinkedAccount == true then
|
||||
-- ScreenManager:OpenScreen(ErrorOverlay(Alerts.PlatformLink), false)
|
||||
-- end
|
||||
end
|
||||
|
||||
local function onReAuthentication(reauthenticationReason)
|
||||
Utility.DebugLog("Beging Reauth, cleaning things up")
|
||||
|
||||
local SetRobloxUser = require(ShellModules.Actions.SetRobloxUser)
|
||||
AppState.store:dispatch(SetRobloxUser())
|
||||
|
||||
local SetXboxUser = require(ShellModules.Actions.SetXboxUser)
|
||||
AppState.store:dispatch(SetXboxUser())
|
||||
|
||||
-- unwind ScreenManager
|
||||
returnToEngagementScreen()
|
||||
|
||||
UserData:Reset()
|
||||
AppHub = nil
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenGameDetail"], "gameDetail")
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenGameGenre"], "gameGenre")
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenBadgeScreen"], "gameBadges")
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenSettingsScreen"], "settingsScreen")
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenAvatarEditorScreen"], "avatarEditorScreen")
|
||||
EventHub:removeEventListener(EventHub.Notifications["OpenAccountSettingsScreen"], "accountSettingsScreen")
|
||||
|
||||
Utility.DebugLog("Reauth complete. Return to engagement screen.")
|
||||
|
||||
-- show reason overlay
|
||||
local alert = Alerts.SignOut[reauthenticationReason] or Alerts.Default
|
||||
|
||||
if reauthenticationReason == 6 then
|
||||
alert = nil
|
||||
end
|
||||
|
||||
if alert then
|
||||
ScreenManager:OpenScreen(ErrorOverlay(alert), false)
|
||||
end
|
||||
end
|
||||
|
||||
local function onGameJoin(joinResult, placeId)
|
||||
-- 0 is success, anything else is an error
|
||||
local joinSuccess = joinResult == 0
|
||||
if not joinSuccess then
|
||||
local err = Errors.GameJoin[joinResult] or Errors.GameJoin.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
EventHub:dispatchEvent(EventHub.Notifications["GameJoin"], joinSuccess, placeId)
|
||||
end
|
||||
|
||||
if PlatformService then
|
||||
PlatformService.GameJoined:connect(onGameJoin)
|
||||
end
|
||||
|
||||
if ThirdPartyUserService then
|
||||
ThirdPartyUserService.ActiveUserSignedOut:connect(onReAuthentication)
|
||||
end
|
||||
|
||||
ControllerStateManager:Initialize()
|
||||
|
||||
EventHub:addEventListener(EventHub.Notifications["AuthenticationSuccess"], "authUserSuccess", function(isNewLinkedAccount)
|
||||
Utility.DebugLog("User authenticated, initializing app shell")
|
||||
onAuthenticationSuccess(isNewLinkedAccount)
|
||||
end);
|
||||
ScreenManager:OpenScreen(EngagementScreen)
|
||||
|
||||
UserInputService.MouseIconEnabled = false
|
||||
|
||||
return {}
|
||||
Reference in New Issue
Block a user