mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-04 20:57:49 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
--[[
|
||||
// LinkAccountScreen.lua
|
||||
]]
|
||||
local CoreGui = Game:GetService("CoreGui")
|
||||
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
|
||||
local Modules = GuiRoot:FindFirstChild("Modules")
|
||||
|
||||
local ContextActionService = game:GetService('ContextActionService')
|
||||
local GuiService = game:GetService('GuiService')
|
||||
|
||||
local AccountManager = require(Modules:FindFirstChild('AccountManager'))
|
||||
local AssetManager = require(Modules:FindFirstChild('AssetManager'))
|
||||
local BaseSignInScreen = require(Modules:FindFirstChild('BaseSignInScreen'))
|
||||
local Errors = require(Modules:FindFirstChild('Errors'))
|
||||
local ErrorOverlay = require(Modules:FindFirstChild('ErrorOverlay'))
|
||||
local EventHub = require(Modules:FindFirstChild('EventHub'))
|
||||
local GlobalSettings = require(Modules:FindFirstChild('GlobalSettings'))
|
||||
local LoadingWidget = require(Modules:FindFirstChild('LoadingWidget'))
|
||||
local ScreenManager = require(Modules:FindFirstChild('ScreenManager'))
|
||||
local SoundManager = require(Modules:FindFirstChild('SoundManager'))
|
||||
local Strings = require(Modules:FindFirstChild('LocalizedStrings'))
|
||||
local TextBox = require(Modules:FindFirstChild('TextBox'))
|
||||
local Utility = require(Modules:FindFirstChild('Utility'))
|
||||
|
||||
local function createLinkAccountScreen()
|
||||
local this = BaseSignInScreen()
|
||||
|
||||
this:SetTitle(string.upper(Strings:LocalizedString("LinkAccountTitle")))
|
||||
this:SetDescriptionText(Strings:LocalizedString("LinkAccountPhrase"))
|
||||
|
||||
local ModalOverlay = Utility.Create'Frame'
|
||||
{
|
||||
Name = "ModalOverlay";
|
||||
Size = UDim2.new(1, 0, 1, 0);
|
||||
BackgroundTransparency = GlobalSettings.ModalBackgroundTransparency;
|
||||
BackgroundColor3 = GlobalSettings.ModalBackgroundColor;
|
||||
BorderSizePixel = 0;
|
||||
ZIndex = 4;
|
||||
}
|
||||
|
||||
local myUsername = nil
|
||||
local myPassword = nil
|
||||
|
||||
this.UsernameObject:SetDefaultText(Strings:LocalizedString("UsernameWord"))
|
||||
this.UsernameObject:SetKeyboardTitle(Strings:LocalizedString("UsernameWord"))
|
||||
local usernameChangedCn = nil
|
||||
|
||||
this.PasswordObject:SetDefaultText(Strings:LocalizedString("PasswordWord"))
|
||||
this.PasswordObject:SetKeyboardTitle(Strings:LocalizedString("PasswordWord"))
|
||||
this.PasswordObject:SetKeyboardType(Enum.XboxKeyBoardType.Password)
|
||||
local passwordChangedCn = nil
|
||||
|
||||
local function linkAccountAsync()
|
||||
local linkResult = nil
|
||||
local signInResult = nil
|
||||
local loader = LoadingWidget(
|
||||
{ Parent = this.Container }, {
|
||||
-- try link account
|
||||
function()
|
||||
linkResult = AccountManager:LinkAccountAsync(myUsername, myPassword)
|
||||
|
||||
-- sign in here on success
|
||||
if linkResult == AccountManager.AuthResults.Success then
|
||||
signInResult = AccountManager:SignInAsync(Enum.UserInputType.Gamepad1)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- set up full screen loader
|
||||
ModalOverlay.Parent = GuiRoot
|
||||
ContextActionService:BindCoreAction("BlockB", function() end, false, Enum.KeyCode.ButtonB)
|
||||
local selectedObject = GuiService.SelectedCoreObject
|
||||
GuiService.SelectedCoreObject = nil
|
||||
|
||||
-- call loader
|
||||
loader:AwaitFinished()
|
||||
|
||||
-- clean up
|
||||
loader:Cleanup()
|
||||
loader = nil
|
||||
GuiService.SelectedCoreObject = selectedObject
|
||||
ContextActionService:UnbindCoreAction("BlockB")
|
||||
ModalOverlay.Parent = nil
|
||||
|
||||
if linkResult ~= AccountManager.AuthResults.Success then
|
||||
local err = linkResult and Errors.Authentication[linkResult] or Errors.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
else
|
||||
if signInResult == AccountManager.AuthResults.Success then
|
||||
ScreenManager:CloseCurrent()
|
||||
EventHub:dispatchEvent(EventHub.Notifications["AuthenticationSuccess"])
|
||||
else
|
||||
local err = signInResult and Errors.Authentication[signInResult] or Errors.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local isSigningIn = false
|
||||
this.SignInButton.MouseButton1Click:connect(function()
|
||||
if isSigningIn then return end
|
||||
isSigningIn = true
|
||||
SoundManager:Play('ButtonPress')
|
||||
if (myUsername and #myUsername > 0) and (myPassword and #myPassword > 0) then
|
||||
linkAccountAsync()
|
||||
else
|
||||
local err = Errors.SignIn.NoUsernameOrPasswordEntered
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
isSigningIn = false
|
||||
end)
|
||||
|
||||
--[[ Public API ]]--
|
||||
--override
|
||||
local baseFocus = this.Focus
|
||||
function this:Focus()
|
||||
baseFocus(self)
|
||||
usernameChangedCn = this.UsernameObject.OnTextChanged:connect(function(text)
|
||||
myUsername = text
|
||||
if #myUsername > 0 then
|
||||
GuiService.SelectedCoreObject = this.PasswordSelection
|
||||
else
|
||||
GuiService.SelectedCoreObject = this.UsernameSelection
|
||||
end
|
||||
end)
|
||||
passwordChangedCn = this.PasswordObject.OnTextChanged:connect(function(text)
|
||||
myPassword = text
|
||||
if #myPassword > 0 then
|
||||
GuiService.SelectedCoreObject = this.SignInButton
|
||||
else
|
||||
GuiService.SelectedCoreObject = this.PasswordSelection
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
--override
|
||||
local baseRemoveFocus = this.RemoveFocus
|
||||
function this:RemoveFocus()
|
||||
baseRemoveFocus(self)
|
||||
Utility.DisconnectEvent(usernameChangedCn)
|
||||
Utility.DisconnectEvent(passwordChangedCn)
|
||||
end
|
||||
|
||||
return this
|
||||
end
|
||||
|
||||
return createLinkAccountScreen
|
||||
Reference in New Issue
Block a user