diff options
Diffstat (limited to 'game/soul.rpy')
-rw-r--r-- | game/soul.rpy | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/game/soul.rpy b/game/soul.rpy index 97ba518..f4d583e 100644 --- a/game/soul.rpy +++ b/game/soul.rpy @@ -4,6 +4,39 @@ # # Distributed under the MIT license, except for Steam parts. ################################################################################# +screen soulmsg(smessage): + zorder 100 + if mySoul is not None: + fixed: + frame: + background Frame("images/default.png", 0, 0) + xalign 0.5 + yalign 0.5 + xminimum 0.85 + xmaximum 0.85 + yminimum 0.8 + ymaximum 0.8 + label "{color=#FFF}%s{/color}" % smessage: + xalign 0.5 + yalign 0.5 + frame: + yalign 0.9 + xalign 0.9 + xmaximum 240 + button: + xmaximum 240 + ymaximum 40 + action Return(None) + fixed: + #add Frame("gui/button/choice_hover_background.png", 0, 0) + text _("OK »"): + color "#000" + xalign 0.5 + yalign 0.5 + + + +################################################################################# screen souldata(): zorder 100 if mySoul is not None: @@ -46,6 +79,18 @@ screen souldata(): action Return("sethome") tooltip _("Sets a homeworld") null height 30 + ## TODO: Linking, Unlinking, 2FA, Password + hbox: + textbutton _("Manage Account"): + background Frame("gui/frame.png", 0, 0) + xysize (300, 40) + action Return("managevault") + tooltip _("Changes your account settings") + #textbutton _("Contact Support"): + # background Frame("gui/frame.png", 0, 0) + # xysize (100, 40) + # action None + # tooltip _("Contacts support staff") ## TODO: Other stuff null height 30 label "{color=#FFF}%s{/color}" % _("Scene Recollection") @@ -98,6 +143,89 @@ screen souldata(): ################################################################################# +screen accountdata(): + zorder 100 + if mySoul is not None: + fixed: + frame: + background Frame("images/default.png", 0, 0) + xalign 0.5 + yalign 0.5 + xminimum 0.85 + xmaximum 0.85 + yminimum 0.8 + ymaximum 0.8 + vbox: + null height 20 + if not persistent.steam: + label "{b}{color=#FFF}%s{/color}{/b}" % _("Account Management") + null height 20 + ## TODO: 2FA, Password, etc (hbox) + hbox: + spacing 5 + textbutton _("Reset password"): + background Frame("gui/frame.png", 0, 0) + xysize (250, 40) + action None + tooltip _("Changes your password") + textbutton _("Reset Two Factor"): + background Frame("gui/frame.png", 0, 0) + xysize (250, 40) + action Return(["2fa", None]) + tooltip _("Enables or disables 2FA") + else: + label "{b}{color=#FFF}%s{/color}{/b}" % _("Steam Account") + + null height 30 + label "{b}{color=#FFF}%s{/color}{/b}" % _("World Management") + null height 30 + ## Link/Unlink + vpgrid: + cols 3 + yspacing 30 + xspacing 10 + draggable True + mousewheel True + scrollbars "vertical" + side_xalign 0.5 + left_margin 60 + xfill True + ymaximum 0.6 + for srv in persistent.serverlist: + ## CR cannot be linked/unlinked + if srv["Name"] in ["The Crossroads", "Crossroads"]: + continue + ## Worlds and options + label "{size=-6}{a=%s}%s{/a}{/size}" % (srv["Link"], srv["Name"]) + textbutton _("Link Account"): + background Frame("gui/frame.png", 0, 0) + xysize (200, 40) + action Return(["link", srv]) + tooltip _("Links an external account to Vault") + textbutton _("Unlink"): + background Frame("gui/frame.png", 0, 0) + xysize (200, 40) + action Return(["unlink", srv]) + tooltip _("Removes a Vault account for manual login") + null height 40 # Padding + frame: + yalign 0.9 + xalign 0.9 + xmaximum 240 + button: + xmaximum 240 + ymaximum 40 + action Return(None) + fixed: + #add Frame("gui/button/choice_hover_background.png", 0, 0) + text _("Return »"): + color "#000" + xalign 0.5 + yalign 0.5 + + + +################################################################################# init python: class ManaSparkle(object): def __init__(self, spd=25, multi=True): @@ -201,6 +329,51 @@ label sethome: return ################################################################################# +label managevault: + $ vault_loop = True + while vault_loop: + call screen accountdata() + if isinstance(_return, list): + $ _cmd = _return[0] + $ _arg = _return[1] + if _cmd is None: + $ vault_loop = False + elif _cmd == "2fa": + call screen soulmsg(_("{b}Two Factor Authentication{/b}\n\nIf you have two factor authentication enabled, it'll be disabled.\nIf it is disabled, it'll be enabled, and you'll receive an {b}email{/b} with instructions to generate TOTP tokens.\n\nIf enabled, you will not be able to login without the authentication token.")) + call screen confirm(_("{b}Two Factor Authentication{/b}\n\nAre you sure you want to change this setting?"), [SetVariable("_arg", True), Return()], [SetVariable("_arg", False), Return()]) + if _arg: + python: + auth = {"vaultId": vaultId, + "token": vaultToken, + "totp": calcOTP(vaultOTP)} + + ## Make the POST request + r=vault.post(VAULT_HOST+"/toggle2fa", json=auth, timeout=15.0) + if r.status_code != 200: + dat={} + else: + dat=r.json() + if r.status_code == 200: + call screen soulmsg(_("Your 2FA settings were updated.\n\nPlease check your email.")) + elif r.status_code == 400: + call screen soulmsg(_("An error on the client happened and the request was rejected. Are you logged in, and using the latest version?")) + elif r.status_code == 429: + call screen soulmsg(_("You are being rate-limited, and the change was not possible. Please wait a minute before trying again.")) + else: + call screen soulmsg(_("An internal error happened, please report (code: %d)" % r.status_code)) + elif _cmd == "link": + call screen soulmsg(_("Currently, you cannot link external accounts. Keep in mind that if you already have an account, nothing will happen.")) + pass + elif _cmd == "unlink": + call screen soulmsg(_("Currently, you cannot unlink accounts. Keep in mind that if you do not have an account, nothing will happen.")) + pass + else: + $ stdout("%s unrecognized" % _cmd) + else: + $ vault_loop = False + $ del vault_loop + return +################################################################################# label intro: $ RPCUpdate("The Void", "launcher") scene DKBG |