diff --git a/otp/otpbase/OTPLocalizer.py b/otp/otpbase/OTPLocalizer.py index 3e20d68e..7490cfe7 100644 --- a/otp/otpbase/OTPLocalizer.py +++ b/otp/otpbase/OTPLocalizer.py @@ -12,7 +12,7 @@ from otp.otpbase.OTPLocalizerEnglish import * if language != 'English': l = {} g = {} - module = 'otp.optbase.OTPLocalizer' + language + module = 'otp.otpbase.OTPLocalizer' + language englishModule = __import__('otp.otpbase.OTPLocalizerEnglish', g, l) foreignModule = __import__(module, g, l) for key, val in englishModule.__dict__.items(): diff --git a/toontown/language/LanguageSelector.py b/toontown/language/LanguageSelector.py new file mode 100644 index 00000000..70420137 --- /dev/null +++ b/toontown/language/LanguageSelector.py @@ -0,0 +1,72 @@ +from direct.gui.DirectGui import OnscreenImage, DirectLabel, DirectButton +from toontown.toonbase import ToontownGlobals, TTLocalizer +from toontown.toontowngui import TTDialog +import os + +class LanguageSelector: + + def __init__(self, leaveFunction): + self.title = None + self.current = None + self.available = None + self.english = None + self.french = None + self.backButton = None + self.confirmDialog = None + self.leaveFunction = leaveFunction + + def create(self): + self.background = OnscreenImage(parent=render2d, image="phase_3.5/maps/blackboardEmpty.jpg") + self.gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui') + self.shuffleUp = self.gui.find('**/tt_t_gui_mat_shuffleUp') + self.shuffleDown = self.gui.find('**/tt_t_gui_mat_shuffleDown') + + self.title = DirectLabel(aspect2d, relief=None, text=TTLocalizer.LanguageSelectorTitle, + text_fg=(0, 1, 0, 1), text_scale=0.15, text_font=ToontownGlobals.getSuitFont(), + pos=(0, 0, 0.70), text_shadow=(0, 0.392, 0, 1)) + + self.current = DirectLabel(aspect2d, relief=None, text=TTLocalizer.LanguageSelectorCurrent % settings['language'], + text_fg=(0, 1, 0, 1), text_scale=0.09, text_font=ToontownGlobals.getSuitFont(), + pos=(0, 0, 0.55), text_shadow=(0, 0.392, 0, 1)) + + self.available = DirectLabel(aspect2d, relief=None, text=TTLocalizer.LanguageSelectorAvailable, + text_fg=(1, 0, 0, 1), text_scale=0.09, text_font=ToontownGlobals.getSuitFont(), + pos=(0, 0, 0), text_shadow=(0.545, 0, 0, 1)) + + self.english = DirectButton(aspect2d, relief=None, text='English', + text_fg=(1, 0.549, 0, 1), text_scale=0.09, text_font=ToontownGlobals.getSuitFont(), + pos=(0, 0, -0.15), text_shadow=(1, 0.27, 0, 1), command=self.switchLanguage, extraArgs=['English']) + + self.french = DirectButton(aspect2d, relief=None, text='French', + text_fg=(1, 0.549, 0, 1), text_scale=0.09, text_font=ToontownGlobals.getSuitFont(), + pos=(0, 0, -0.25), text_shadow=(1, 0.27, 0, 1), command=self.switchLanguage, extraArgs=['French']) + + self.backButton = DirectButton(aspect2d, relief=None, image=(self.shuffleUp, self.shuffleDown), + text=TTLocalizer.LanguageSelectorBack, text_font=ToontownGlobals.getInterfaceFont(), + text_scale=0.11, text_pos=(0, -0.02), pos=(0, 0, -0.75), text_fg=(1, 1, 1, 1), + text_shadow=(0, 0, 0, 1), command=self.destroy) + + def destroy(self): + for element in [self.background, self.title, self.current, self.available, self.english, self.french, self.backButton, self.confirmDialog]: + if element: + element.destroy() + element = None + + self.leaveFunction() + + def switchLanguage(self, language): + if language == settings['language']: + self.confirmDialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.LanguageSelectorSameLanguage, command=self.cleanupDialog) + else: + self.confirmDialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.LanguageSelectorConfirm % language, command=self.confirmSwitchLanguage, extraArgs=[language]) + self.confirmDialog.show() + + def confirmSwitchLanguage(self, value, language): + if value > 0: + settings['language'] = language + os._exit(1) + else: + self.cleanupDialog() + + def cleanupDialog(self, value=0): + self.confirmDialog.cleanup() \ No newline at end of file diff --git a/toontown/language/__init__.py b/toontown/language/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/toontown/login/AvatarChooser.py b/toontown/login/AvatarChooser.py index 8e44d5e3..68df5e5d 100644 --- a/toontown/login/AvatarChooser.py +++ b/toontown/login/AvatarChooser.py @@ -5,6 +5,7 @@ from direct.fsm import StateData from direct.fsm import ClassicFSM, State from direct.fsm import State from toontown.launcher import DownloadForceAcknowledge +from toontown.language import LanguageSelector from direct.gui.DirectGui import * from pandac.PandaModules import * from toontown.toonbase import TTLocalizer @@ -45,8 +46,7 @@ class AvatarChooser(StateData.StateData): base.disableMouse() self.title.reparentTo(aspect2d) self.quitButton.show() - if base.cr.loginInterface.supportsRelogin(): - self.logoutButton.show() + self.languageButton.show() self.pickAToonBG.setBin('background', 1) self.pickAToonBG.reparentTo(aspect2d) base.setBackgroundColor(Vec4(0.145, 0.368, 0.78, 1)) @@ -66,7 +66,7 @@ class AvatarChooser(StateData.StateData): self.ignoreAll() self.title.reparentTo(hidden) self.quitButton.hide() - self.logoutButton.hide() + self.languageButton.hide() self.pickAToonBG.reparentTo(hidden) base.setBackgroundColor(ToontownGlobals.DefaultBackgroundColor) return None @@ -85,8 +85,8 @@ class AvatarChooser(StateData.StateData): quitHover = gui.find('**/QuitBtn_RLVR') self.quitButton = DirectButton(image=(quitHover, quitHover, quitHover), relief=None, text=TTLocalizer.AvatarChooserQuit, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_pos=TTLocalizer.ACquitButtonPos, text_scale=TTLocalizer.ACquitButton, image_scale=1, image1_scale=1.05, image2_scale=1.05, scale=1.05, pos=(-0.25, 0, 0.075), command=self.__handleQuit) self.quitButton.reparentTo(base.a2dBottomRight) - self.logoutButton = DirectButton(relief=None, image=(quitHover, quitHover, quitHover), text=TTLocalizer.OptionsPageLogout, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_scale=TTLocalizer.AClogoutButton, text_pos=(0, -0.035), pos=(0.15, 0, 0.05), image_scale=1.15, image1_scale=1.15, image2_scale=1.18, scale=0.5, command=self.__handleLogoutWithoutConfirm) - self.logoutButton.reparentTo(base.a2dBottomLeft) + self.languageButton = DirectButton(relief=None, image=(quitHover, quitHover, quitHover), text=TTLocalizer.LanguageButtonText, text_font=ToontownGlobals.getSignFont(), text_fg=(0.977, 0.816, 0.133, 1), text_scale=TTLocalizer.AClanguageButton, text_pos=(0, -0.025), pos=(0.25, 0, 0.075), image_scale=1.05, image1_scale=1.05, image2_scale=1.05, scale=1.05, command=self.openLanguageGui) + self.languageButton.reparentTo(base.a2dBottomLeft) gui.removeNode() gui2.removeNode() newGui.removeNode() @@ -198,8 +198,8 @@ class AvatarChooser(StateData.StateData): del self.title self.quitButton.destroy() del self.quitButton - self.logoutButton.destroy() - del self.logoutButton + self.languageButton.destroy() + del self.languageButton self.pickAToonBG.removeNode() del self.pickAToonBG del self.avatarList @@ -266,5 +266,6 @@ class AvatarChooser(StateData.StateData): else: self.fsm.request('Choose') - def __handleLogoutWithoutConfirm(self): - base.cr.loginFSM.request('login') + def openLanguageGui(self): + self.exit() + LanguageSelector.LanguageSelector(self.enter).create() diff --git a/toontown/toonbase/TTLocalizerEnglish.py b/toontown/toonbase/TTLocalizerEnglish.py index 02f67c58..9642cebb 100644 --- a/toontown/toonbase/TTLocalizerEnglish.py +++ b/toontown/toonbase/TTLocalizerEnglish.py @@ -4609,7 +4609,6 @@ MapPageGoTo = 'Go To\n%s' OptionsPageTitle = 'Options' OptionsTabTitle = 'Options\n& Codes' OptionsPagePurchase = 'Subscribe' -OptionsPageLogout = 'Logout' OptionsPageExitToontown = 'Exit Toontown' OptionsPageMusicOnLabel = 'Music is on.' OptionsPageMusicOffLabel = 'Music is off.' @@ -9745,6 +9744,13 @@ GloveGuiTitle = 'Choose a glove color!' GloveGuiNotice = 'Costs %s jellybeans.' GloveGuiBuy = 'Buy' GloveGuiCancel = 'Cancel' +LanguageButtonText = 'Language' +LanguageSelectorTitle = 'Choose your language!' +LanguageSelectorCurrent = 'Current language: %s' +LanguageSelectorAvailable = 'Available languages:' +LanguageSelectorBack = 'Back' +LanguageSelectorConfirm = 'Are you sure you want to change your language to %s? This will close your game.' +LanguageSelectorSameLanguage = "You're already using that language!" # Buffs diff --git a/toontown/toonbase/TTLocalizerEnglishProperty.py b/toontown/toonbase/TTLocalizerEnglishProperty.py index 0c2b266c..f8e52039 100644 --- a/toontown/toonbase/TTLocalizerEnglishProperty.py +++ b/toontown/toonbase/TTLocalizerEnglishProperty.py @@ -88,7 +88,7 @@ ACdeleteWithPasswordFrame = 0.06 ACstatusText = 1.0 ACtitle = 0.15 ACquitButton = 0.1 -AClogoutButton = 0.1 +AClanguageButton = 0.075 ACquitButtonPos = (0, -0.035) MASPscoreText = 0.1 MASPnameText = 0.055