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,178 @@
|
||||
--[[
|
||||
// UnlinkAccountScreen.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 BaseScreen = require(Modules:FindFirstChild('BaseScreen'))
|
||||
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 UnlinkAccountOverlay = require(Modules:FindFirstChild('UnlinkAccountOverlay'))
|
||||
local Utility = require(Modules:FindFirstChild('Utility'))
|
||||
local UserData = require(Modules:FindFirstChild('UserData'))
|
||||
|
||||
local function createUnlinkAccountScreen()
|
||||
local this = BaseScreen()
|
||||
|
||||
this:SetTitle(string.upper(Strings:LocalizedString("AccountSettingsTitle")))
|
||||
local gamerTag = UserData:GetDisplayName() or ""
|
||||
local robloxName = UserData:GetRobloxName() or ""
|
||||
local linkedAsPhrase = string.format(Strings:LocalizedString('LinkedAsPhrase'), gamerTag, robloxName)
|
||||
local unlinkButtonText = string.format(Strings:LocalizedString("UnlinkGamerTagPhrase"), gamerTag)
|
||||
|
||||
local dummySelection = Utility.Create'Frame'
|
||||
{
|
||||
BackgroundTransparency = 1;
|
||||
}
|
||||
|
||||
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 LinkedAsText = Utility.Create'TextLabel'
|
||||
{
|
||||
Name = "LinkedAsText";
|
||||
Size = UDim2.new(0, 0, 0, 0);
|
||||
Position = UDim2.new(0.5, 0, 0, 264);
|
||||
BackgroundTransparency = 1;
|
||||
Font = GlobalSettings.RegularFont;
|
||||
FontSize = GlobalSettings.TitleSize;
|
||||
TextColor3 = GlobalSettings.WhiteTextColor;
|
||||
Text = linkedAsPhrase;
|
||||
Parent = this.Container;
|
||||
}
|
||||
local GamerPic = Utility.Create'ImageLabel'
|
||||
{
|
||||
Name = "GamerPic";
|
||||
Size = UDim2.new(0, 300, 0, 300);
|
||||
BackgroundTransparency = 0;
|
||||
BorderSizePixel = 0;
|
||||
Image = 'rbxapp://xbox/localgamerpic';
|
||||
Parent = this.Container;
|
||||
}
|
||||
Utility.CalculateAnchor(GamerPic, UDim2.new(0.5, 0, 0, LinkedAsText.Position.Y.Offset + 52), Utility.Enum.Anchor.TopMiddle)
|
||||
|
||||
local UnlinkButton = Utility.Create'ImageButton'
|
||||
{
|
||||
Name = "UnlinkButton";
|
||||
Size = UDim2.new(0, 360, 0, 64);
|
||||
BackgroundTransparency = 1;
|
||||
ImageColor3 = GlobalSettings.GreySelectedButtonColor;
|
||||
Image = 'rbxasset://textures/ui/Shell/Buttons/Generic9ScaleButton@720.png';
|
||||
ScaleType = Enum.ScaleType.Slice;
|
||||
SliceCenter = Rect.new(Vector2.new(4, 4), Vector2.new(28, 28));
|
||||
ZIndex = 2;
|
||||
Parent = this.Container;
|
||||
|
||||
SoundManager:CreateSound('MoveSelection');
|
||||
AssetManager.CreateShadow(1)
|
||||
}
|
||||
Utility.CalculateAnchor(UnlinkButton, UDim2.new(0.5, 0, 0, GamerPic.Position.Y.Offset + GamerPic.Size.Y.Offset + 35), Utility.Enum.Anchor.TopMiddle)
|
||||
|
||||
local UnlinkText = Utility.Create'TextLabel'
|
||||
{
|
||||
Name = "UnlinkText";
|
||||
Size = UDim2.new(1, 0, 1, 0);
|
||||
BackgroundTransparency = 1;
|
||||
Font = GlobalSettings.RegularFont;
|
||||
FontSize = GlobalSettings.ButtonSize;
|
||||
TextColor3 = GlobalSettings.TextSelectedColor;
|
||||
Text = string.upper(unlinkButtonText);
|
||||
ZIndex = 2;
|
||||
Parent = UnlinkButton;
|
||||
}
|
||||
|
||||
local isUnlinking = false
|
||||
local function unlinkAccountAsync()
|
||||
if isUnlinking then return end
|
||||
isUnlinking = true
|
||||
local unlinkResult = nil
|
||||
local loader = LoadingWidget(
|
||||
{ Parent = this.Container }, {
|
||||
function()
|
||||
unlinkResult = AccountManager:UnlinkAccountAsync()
|
||||
end
|
||||
})
|
||||
|
||||
-- set up full screen loader
|
||||
ModalOverlay.Parent = GuiRoot
|
||||
ContextActionService:BindCoreAction("BlockB", function() end, false, Enum.KeyCode.ButtonB)
|
||||
UnlinkButton.SelectionImageObject = dummySelection
|
||||
UnlinkButton.ImageColor3 = GlobalSettings.GreyButtonColor
|
||||
UnlinkText.TextColor3 = GlobalSettings.WhiteTextColor
|
||||
|
||||
-- call loader
|
||||
loader:AwaitFinished()
|
||||
|
||||
-- clean up
|
||||
-- NOTE: Unlink success will fire the UserAccountChanged event. This event will fire and listeners will
|
||||
-- run before the loader is finished. The below code needs to run in case of errors, but on success
|
||||
-- will not interfere with the reauth logic in AppHome.lua
|
||||
loader:Cleanup()
|
||||
loader = nil
|
||||
UnlinkButton.SelectionImageObject = nil
|
||||
UnlinkButton.ImageColor3 = GlobalSettings.GreySelectedButtonColor
|
||||
UnlinkText.TextColor3 = GlobalSettings.TextSelectedColor
|
||||
ContextActionService:UnbindCoreAction("BlockB")
|
||||
ModalOverlay.Parent = nil
|
||||
|
||||
if unlinkResult ~= AccountManager.AuthResults.Success then
|
||||
local err = unlinkResult and Errors.Authentication[unlinkResult] or Errors.Default
|
||||
ScreenManager:OpenScreen(ErrorOverlay(err), false)
|
||||
end
|
||||
isUnlinking = false
|
||||
end
|
||||
|
||||
UnlinkButton.MouseButton1Click:connect(function()
|
||||
if isUnlinking then return end
|
||||
SoundManager:Play('ButtonPress')
|
||||
local confirmTitleAndMsg = { Title = Strings:LocalizedString("UnlinkTitle"), Msg = Strings:LocalizedString("UnlinkPhrase") }
|
||||
ScreenManager:OpenScreen(UnlinkAccountOverlay(confirmTitleAndMsg), false)
|
||||
end)
|
||||
|
||||
--[[ Public API ]]--
|
||||
-- Override
|
||||
function this:GetDefaultSelectionObject()
|
||||
return UnlinkButton
|
||||
end
|
||||
|
||||
-- Override
|
||||
local baseFocus = this.Focus
|
||||
function this:Focus()
|
||||
baseFocus(self)
|
||||
EventHub:addEventListener(EventHub.Notifications["UnlinkAccountConfirmation"], "unlinkAccount",
|
||||
function()
|
||||
unlinkAccountAsync()
|
||||
end)
|
||||
end
|
||||
|
||||
-- Override
|
||||
local baseRemoveFocus = this.RemoveFocus
|
||||
function this:RemoveFocus()
|
||||
baseRemoveFocus(self)
|
||||
EventHub:removeEventListener(EventHub.Notifications["UnlinkAccountConfirmation"], "unlinkAccount")
|
||||
end
|
||||
|
||||
return this
|
||||
end
|
||||
|
||||
return createUnlinkAccountScreen
|
||||
Reference in New Issue
Block a user