mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-05 05:07:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
-- Written by Kip Turner, Copyright ROBLOX 2015
|
||||
|
||||
local CoreGui = Game:GetService("CoreGui")
|
||||
local GuiService = game:GetService('GuiService')
|
||||
local PlayersService = game:GetService("Players")
|
||||
local ContextActionService = game:GetService("ContextActionService")
|
||||
local UserInputService = game:GetService("UserInputService")
|
||||
|
||||
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
|
||||
local Modules = GuiRoot:FindFirstChild("Modules")
|
||||
|
||||
local AccountManager = require(Modules:FindFirstChild('AccountManager'))
|
||||
local Utility = require(Modules:FindFirstChild('Utility'))
|
||||
local GlobalSettings = require(Modules:FindFirstChild('GlobalSettings'))
|
||||
local Errors = require(Modules:FindFirstChild('Errors'))
|
||||
local ErrorOverlay = require(Modules:FindFirstChild('ErrorOverlay'))
|
||||
local Strings = require(Modules:FindFirstChild('LocalizedStrings'))
|
||||
local AssetManager = require(Modules:FindFirstChild('AssetManager'))
|
||||
local ScreenManager = require(Modules:FindFirstChild('ScreenManager'))
|
||||
local SetAccountCredentialsScreen = require(Modules:FindFirstChild('SetAccountCredentialsScreen'))
|
||||
local SignInScreen = require(Modules:FindFirstChild('SignInScreen'))
|
||||
local LoadingWidget = require(Modules:FindFirstChild('LoadingWidget'))
|
||||
|
||||
local SoundManager = require(Modules:FindFirstChild('SoundManager'))
|
||||
local EventHub = require(Modules:FindFirstChild('EventHub'))
|
||||
|
||||
local ANY_KEY_CODES =
|
||||
{
|
||||
[Enum.KeyCode.ButtonA] = true;
|
||||
-- [Enum.KeyCode.ButtonB] = true;
|
||||
[Enum.KeyCode.ButtonX] = true;
|
||||
[Enum.KeyCode.ButtonY] = true;
|
||||
[Enum.KeyCode.ButtonStart] = true;
|
||||
[Enum.KeyCode.ButtonSelect] = true;
|
||||
[Enum.KeyCode.ButtonL1] = true;
|
||||
[Enum.KeyCode.ButtonR1] = true;
|
||||
}
|
||||
|
||||
local GAMEPAD_INPUT_TYPES =
|
||||
{
|
||||
[Enum.UserInputType.Gamepad1] = true;
|
||||
[Enum.UserInputType.Gamepad2] = true;
|
||||
[Enum.UserInputType.Gamepad3] = true;
|
||||
[Enum.UserInputType.Gamepad4] = true;
|
||||
}
|
||||
|
||||
local function CreateHomePane(parent)
|
||||
local this = {}
|
||||
|
||||
local AnyButtonBeganConnection, AnyButtonEndedConnection = nil
|
||||
|
||||
local EngagementScreenContainer = Utility.Create'Frame'
|
||||
{
|
||||
Name = 'EngagementScreen';
|
||||
Size = UDim2.new(1, 0, 1, 0);
|
||||
BackgroundTransparency = 1;
|
||||
Parent = parent;
|
||||
}
|
||||
|
||||
local RobloxLogo = Utility.Create'ImageLabel'
|
||||
{
|
||||
Name = 'RobloxLogo';
|
||||
BackgroundTransparency = 1;
|
||||
Size = UDim2.new(0, 594, 0, 199);
|
||||
Image = 'rbxasset://textures/ui/Shell/Icons/ROBLOXSplashLogo.png';
|
||||
Parent = EngagementScreenContainer;
|
||||
}
|
||||
Utility.CalculateAnchor(RobloxLogo, UDim2.new(0.5,0,0.5,0), Utility.Enum.Anchor.Center)
|
||||
|
||||
local AnyButtonHint = Utility.Create'TextLabel'
|
||||
{
|
||||
Name = 'AnyButtonHint';
|
||||
Text = Strings:LocalizedString('EngagementScreenHint');
|
||||
TextColor3 = GlobalSettings.WhiteTextColor;
|
||||
Font = GlobalSettings.RegularFont;
|
||||
FontSize = GlobalSettings.ButtonSize;
|
||||
Size = UDim2.new(0,0,0,0);
|
||||
BackgroundTransparency = 1;
|
||||
Parent = RobloxLogo;
|
||||
};
|
||||
Utility.CalculateAnchor(AnyButtonHint, UDim2.new(0.5,0,0,415), Utility.Enum.Anchor.Center)
|
||||
|
||||
local function beginAuthenticationAsync(gamePad)
|
||||
local authResult = nil
|
||||
local hasRobloxCredentialsResult = nil
|
||||
local function auth()
|
||||
authResult = AccountManager:BeginAuthenticationAsync(gamePad)
|
||||
if not authResult then
|
||||
print("beginAuthenticationAsync() failed because", result)
|
||||
authResult = AccountManager.AuthResults.Error
|
||||
end
|
||||
|
||||
if authResult == AccountManager.AuthResults.Success then
|
||||
hasRobloxCredentialsResult = AccountManager:HasRobloxCredentialsAsync()
|
||||
end
|
||||
end
|
||||
|
||||
local loader = LoadingWidget(
|
||||
{ Parent = RobloxLogo, Position = UDim2.new(0.5, 0, 0, 415) }, { auth })
|
||||
loader:AwaitFinished()
|
||||
loader:Cleanup()
|
||||
loader = nil
|
||||
|
||||
print("beginAuthenticationAsync has completed with code:", authResult)
|
||||
if authResult == AccountManager.AuthResults.Success then
|
||||
if hasRobloxCredentialsResult == AccountManager.AuthResults.Success then
|
||||
EventHub:dispatchEvent(EventHub.Notifications["AuthenticationSuccess"])
|
||||
elseif hasRobloxCredentialsResult == AccountManager.AuthResults.UsernamePasswordNotSet then
|
||||
local setAccountCredentialsScreen = SetAccountCredentialsScreen(Strings:LocalizedString("SetCredentialsTitle"),
|
||||
Strings:LocalizedString("SetCredentialsPhrase"), Strings:LocalizedString("SetCredentialsWord"))
|
||||
setAccountCredentialsScreen:SetParent(EngagementScreenContainer.Parent)
|
||||
ScreenManager:OpenScreen(setAccountCredentialsScreen, true)
|
||||
else
|
||||
local err = Errors.Authentication[hasRobloxCredentialsResult] or Errors.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
elseif authResult == AccountManager.AuthResults.AccountUnlinked then
|
||||
local signInScreen = SignInScreen()
|
||||
signInScreen:SetParent(EngagementScreenContainer.Parent)
|
||||
ScreenManager:OpenScreen(signInScreen, true)
|
||||
else
|
||||
local err = Errors.Authentication[authResult] or Errors.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
end
|
||||
|
||||
local function onAnyButtonPressed(gamePad)
|
||||
AnyButtonBeganConnection = Utility.DisconnectEvent(AnyButtonBeganConnection)
|
||||
AnyButtonEndedConnection = Utility.DisconnectEvent(AnyButtonEndedConnection)
|
||||
AnyButtonHint.TextColor3 = GlobalSettings.WhiteTextColor
|
||||
Utility.PropertyTweener(AnyButtonHint, 'TextTransparency', 0, 1, 0.25, Utility.EaseOutQuad, true,
|
||||
function()
|
||||
beginAuthenticationAsync(gamePad)
|
||||
end)
|
||||
end
|
||||
|
||||
function this:Show()
|
||||
EngagementScreenContainer.Visible = true
|
||||
end
|
||||
|
||||
function this:Hide()
|
||||
EngagementScreenContainer.Visible = false
|
||||
end
|
||||
|
||||
function this:Focus()
|
||||
AnyButtonHint.TextColor3 = GlobalSettings.WhiteTextColor
|
||||
AnyButtonHint.TextTransparency = 0
|
||||
|
||||
Utility.DisconnectEvent(AnyButtonBeganConnection)
|
||||
local anyButtonDown = {}
|
||||
AnyButtonBeganConnection = UserInputService.InputBegan:connect(function(inputObject)
|
||||
if GAMEPAD_INPUT_TYPES[inputObject.UserInputType] then
|
||||
if ANY_KEY_CODES[inputObject.KeyCode] then
|
||||
AnyButtonHint.TextColor3 = GlobalSettings.GreyTextColor
|
||||
anyButtonDown[inputObject.KeyCode] = true
|
||||
end
|
||||
end
|
||||
end)
|
||||
Utility.DisconnectEvent(AnyButtonEndedConnection)
|
||||
local isAuthenticating = false
|
||||
AnyButtonEndedConnection = UserInputService.InputEnded:connect(function(inputObject)
|
||||
if isAuthenticating then return end
|
||||
isAuthenticating = true
|
||||
if GAMEPAD_INPUT_TYPES[inputObject.UserInputType] then
|
||||
if ANY_KEY_CODES[inputObject.KeyCode] and anyButtonDown[inputObject.KeyCode] == true then
|
||||
SoundManager:Play('ButtonPress')
|
||||
onAnyButtonPressed(inputObject.UserInputType)
|
||||
end
|
||||
end
|
||||
isAuthenticating = false
|
||||
anyButtonDown[inputObject.KeyCode] = false
|
||||
end)
|
||||
end
|
||||
|
||||
function this:RemoveFocus()
|
||||
AnyButtonBeganConnection = Utility.DisconnectEvent(AnyButtonBeganConnection)
|
||||
AnyButtonEndedConnection = Utility.DisconnectEvent(AnyButtonEndedConnection)
|
||||
end
|
||||
|
||||
function this:SetParent(newParent)
|
||||
EngagementScreenContainer.Parent = newParent
|
||||
end
|
||||
|
||||
return this
|
||||
end
|
||||
|
||||
return CreateHomePane
|
||||
Reference in New Issue
Block a user