Poodletooth-iLand/toontown/chat/ToontownChatManager.py

519 lines
30 KiB
Python
Raw Normal View History

2015-03-03 22:10:12 +00:00
import sys
from direct.showbase import DirectObject
from direct.showbase.PythonUtil import traceFunctionCall
from otp.otpbase import OTPGlobals
from otp.otpbase import OTPLocalizer
from toontown.toonbase import TTLocalizer
from direct.directnotify import DirectNotifyGlobal
from direct.gui.DirectGui import *
from pandac.PandaModules import *
from otp.chat import ChatManager
from TTChatInputSpeedChat import TTChatInputSpeedChat
from TTChatInputNormal import TTChatInputNormal
from TTChatInputWhiteList import TTChatInputWhiteList
class HackedDirectRadioButton(DirectCheckButton):
def __init__(self, parent = None, **kw):
optiondefs = ()
self.defineoptions(kw, optiondefs)
DirectCheckButton.__init__(self, parent)
self.initialiseoptions(HackedDirectRadioButton)
def commandFunc(self, event):
if self['indicatorValue']:
self['indicatorValue'] = 0
DirectCheckButton.commandFunc(self, event)
class ToontownChatManager(ChatManager.ChatManager):
notify = DirectNotifyGlobal.directNotify.newCategory('ToontownChatManager')
def __init__(self, cr, localAvatar):
gui = loader.loadModel('phase_3.5/models/gui/chat_input_gui')
self.normalButton = DirectButton(image=(gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos=(0.0683, 0, -0.072), parent=base.a2dTopLeft, scale=1.179, relief=None, image_color=Vec4(1, 1, 1, 1), text=('', OTPLocalizer.ChatManagerChat, OTPLocalizer.ChatManagerChat), text_align=TextNode.ALeft, text_scale=TTLocalizer.TCMnormalButton, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), text_pos=(-0.0525, -0.09), textMayChange=0, sortOrder=DGG.FOREGROUND_SORT_INDEX, command=self.__normalButtonPressed)
self.normalButton.hide()
self.openScSfx = loader.loadSfx('phase_3.5/audio/sfx/GUI_quicktalker.ogg')
self.openScSfx.setVolume(0.6)
self.scButton = DirectButton(image=(gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos=TTLocalizer.TCMscButtonPos, parent=base.a2dTopLeft, scale=1.179, relief=None, image_color=Vec4(0.75, 1, 0.6, 1), text=('', OTPLocalizer.GlobalSpeedChatName, OTPLocalizer.GlobalSpeedChatName), text_scale=TTLocalizer.TCMscButton, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, sortOrder=DGG.FOREGROUND_SORT_INDEX, command=self.__scButtonPressed, clickSound=self.openScSfx)
self.scButton.hide()
self.whisperFrame = DirectFrame(parent=base.a2dTopLeft, relief=None, image=DGG.getDefaultDialogGeom(), image_scale=(0.45, 0.45, 0.45), image_color=OTPGlobals.GlobalDialogColor, pos=(1.25, 0, -0.269), text=OTPLocalizer.ChatManagerWhisperTo, text_wordwrap=7.0, text_scale=TTLocalizer.TCMwhisperFrame, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0.14), textMayChange=1, sortOrder=DGG.FOREGROUND_SORT_INDEX)
self.whisperFrame.hide()
self.whisperButton = DirectButton(parent=self.whisperFrame, image=(gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos=(-0.125, 0, -0.1), scale=1.179, relief=None, image_color=Vec4(1, 1, 1, 1), text=('',
OTPLocalizer.ChatManagerChat,
OTPLocalizer.ChatManagerChat,
''), image3_color=Vec4(0.6, 0.6, 0.6, 0.6), text_scale=TTLocalizer.TCMwhisperButton, text_fg=(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.__whisperButtonPressed)
self.whisperScButton = DirectButton(parent=self.whisperFrame, image=(gui.find('**/ChtBx_ChtBtn_UP'), gui.find('**/ChtBx_ChtBtn_DN'), gui.find('**/ChtBx_ChtBtn_RLVR')), pos=(0.0, 0, -0.1), scale=1.179, relief=None, image_color=Vec4(0.75, 1, 0.6, 1), text=('',
OTPLocalizer.GlobalSpeedChatName,
OTPLocalizer.GlobalSpeedChatName,
''), image3_color=Vec4(0.6, 0.6, 0.6, 0.6), text_scale=TTLocalizer.TCMwhisperScButton, text_fg=(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.__whisperScButtonPressed)
self.whisperCancelButton = DirectButton(parent=self.whisperFrame, image=(gui.find('**/CloseBtn_UP'), gui.find('**/CloseBtn_DN'), gui.find('**/CloseBtn_Rllvr')), pos=(0.125, 0, -0.1), scale=1.179, relief=None, text=('', OTPLocalizer.ChatManagerCancel, OTPLocalizer.ChatManagerCancel), text_scale=0.05, text_fg=(0, 0, 0, 1), text_pos=(0, -0.09), textMayChange=0, command=self.__whisperCancelPressed)
gui.removeNode()
ChatManager.ChatManager.__init__(self, cr, localAvatar)
self.defaultToWhiteList = base.config.GetBool('white-list-is-default', 1)
self.chatInputSpeedChat = TTChatInputSpeedChat(self)
self.normalPos = Vec3(0.25, 0, -0.196)
self.whisperPos = Vec3(0, 0, -0.296)
self.speedChatPlusPos = Vec3(-0.35, 0, 0.71)
self.SCWhisperPos = Vec3(0, 0, 0)
self.chatInputWhiteList = TTChatInputWhiteList()
if self.defaultToWhiteList:
self.chatInputNormal = self.chatInputWhiteList
self.chatInputNormal.setPos(self.normalPos)
self.chatInputNormal.desc = 'chatInputNormal'
else:
self.chatInputNormal = TTChatInputNormal(self)
self.chatInputWhiteList.setPos(self.speedChatPlusPos)
self.chatInputWhiteList.reparentTo(base.a2dTopLeft)
self.chatInputWhiteList.desc = 'chatInputWhiteList'
return
def delete(self):
ChatManager.ChatManager.delete(self)
loader.unloadModel('phase_3.5/models/gui/chat_input_gui')
self.normalButton.destroy()
del self.normalButton
self.scButton.destroy()
del self.scButton
del self.openScSfx
self.whisperFrame.destroy()
del self.whisperFrame
self.whisperButton.destroy()
del self.whisperButton
self.whisperScButton.destroy()
del self.whisperScButton
self.whisperCancelButton.destroy()
del self.whisperCancelButton
self.chatInputWhiteList.destroy()
del self.chatInputWhiteList
def sendSCResistanceChatMessage(self, textId):
messenger.send('chatUpdateSCResistance', [textId])
self.announceSCChat()
def sendSCSingingChatMessage(self, textId):
messenger.send('chatUpdateSCSinging', [textId])
self.announceSCChat()
def sendSCSingingWhisperMessage(self, textId):
pass
def sendSCToontaskChatMessage(self, taskId, toNpcId, toonProgress, msgIndex):
messenger.send('chatUpdateSCToontask', [taskId,
toNpcId,
toonProgress,
msgIndex])
self.announceSCChat()
def sendSCToontaskWhisperMessage(self, taskId, toNpcId, toonProgress, msgIndex, whisperAvatarId, toPlayer):
if toPlayer:
base.talkAssistant.sendPlayerWhisperToonTaskSpeedChat(taskId, toNpcId, toonProgress, msgIndex, whisperAvatarId)
else:
messenger.send('whisperUpdateSCToontask', [taskId,
toNpcId,
toonProgress,
msgIndex,
whisperAvatarId])
def enterOpenChatWarning(self):
if self.openChatWarning == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
buttonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
self.openChatWarning = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.2), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.2, 1.0, 1.4), text=OTPLocalizer.OpenChatWarning, text_wordwrap=19, text_scale=TTLocalizer.TCMopenChatWarning, text_pos=(0.0, 0.575), textMayChange=0)
DirectButton(self.openChatWarning, image=buttonImage, relief=None, text=OTPLocalizer.OpenChatWarningOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.0, 0.0, -0.55), command=self.__handleOpenChatWarningOK)
buttons.removeNode()
self.openChatWarning.show()
normObs, scObs = self.isObscured()
if not scObs:
self.scButton.show()
if not normObs:
self.normalButton.show()
return
def enterMainMenu(self):
self.chatInputNormal.setPos(self.normalPos)
self.chatInputNormal.reparentTo(base.a2dTopLeft)
if self.chatInputWhiteList.isActive():
self.notify.debug('enterMainMenu calling checkObscured')
ChatManager.ChatManager.checkObscurred(self)
else:
ChatManager.ChatManager.enterMainMenu(self)
def exitOpenChatWarning(self):
self.openChatWarning.hide()
self.scButton.hide()
def enterUnpaidChatWarning(self):
self.forceHidePayButton = False
if base.cr.productName in ['DisneyOnline-UK',
'JP',
'DE',
'BR',
'FR']:
directFrameText = OTPLocalizer.PaidParentPasswordUKWarning
payButtonText = OTPLocalizer.PaidParentPasswordUKWarningSet
directButtonText = OTPLocalizer.PaidParentPasswordUKWarningContinue
else:
directFrameText = OTPLocalizer.PaidNoParentPasswordWarning
payButtonText = OTPLocalizer.PaidNoParentPasswordWarningSet
directButtonText = OTPLocalizer.PaidNoParentPasswordWarningContinue
if self.unpaidChatWarning == None:
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
buttonImage = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR'))
self.unpaidChatWarning = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.4), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.2, 1.0, 0.8), text=directFrameText, text_wordwrap=TTLocalizer.TCMunpaidChatWarningWordwrap, text_scale=TTLocalizer.TCMunpaidChatWarning, text_pos=TTLocalizer.TCMunpaidChatWarningPos, textMayChange=0)
self.payButton = DirectButton(self.unpaidChatWarning, image=buttonImage, relief=None, text=payButtonText, image_scale=(1.75, 1, 1.15), text_scale=TTLocalizer.TCMpayButton, text_pos=(0, -0.02), textMayChange=0, pos=TTLocalizer.TCMpayButtonPos, command=self.__handleUnpaidChatWarningPay)
DirectButton(self.unpaidChatWarning, image=buttonImage, relief=None, text=directButtonText, textMayChange=0, image_scale=(1.75, 1, 1.15), text_scale=0.06, text_pos=(0, -0.02), pos=TTLocalizer.TCMdirectButtonTextPos, command=self.__handleUnpaidChatWarningContinue)
guiButton.removeNode()
if base.localAvatar.cantLeaveGame or self.forceHidePayButton:
self.payButton.hide()
else:
self.payButton.show()
normObs, scObs = self.isObscured()
if not scObs:
self.scButton.show()
if not normObs:
self.normalButton.show()
return
def exitUnpaidChatWarning(self):
if self.unpaidChatWarning:
self.unpaidChatWarning.hide()
self.scButton.hide()
def enterNoSecretChatAtAll(self):
if self.noSecretChatAtAll == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
okButtonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
self.noSecretChatAtAll = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.2), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.4, 1.0, 1.1), text=OTPLocalizer.NoSecretChatAtAll, text_wordwrap=20, textMayChange=0, text_scale=0.06, text_pos=(0, 0.3))
DirectLabel(parent=self.noSecretChatAtAll, relief=None, pos=(0, 0, 0.4), text=OTPLocalizer.NoSecretChatAtAllTitle, textMayChange=0, text_scale=0.08)
DirectButton(self.noSecretChatAtAll, image=okButtonImage, relief=None, text=OTPLocalizer.NoSecretChatAtAllOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.0, 0.0, -0.4), command=self.__handleNoSecretChatAtAllOK)
buttons.removeNode()
self.noSecretChatAtAll.show()
return
def exitNoSecretChatAtAll(self):
self.noSecretChatAtAll.hide()
def enterNoSecretChatWarning(self, passwordOnly = 0):
if not passwordOnly:
warningText = OTPLocalizer.NoSecretChatWarning
else:
warningText = OTPLocalizer.ChangeSecretFriendsOptionsWarning
if self.noSecretChatWarning == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
nameBalloon = loader.loadModel('phase_3/models/props/chatbox_input')
okButtonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
cancelButtonImage = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr'))
if base.cr.productName != 'Terra-DMC':
okPos = (-0.22, 0.0, -0.35)
textPos = (0, 0.25)
okCommand = self.__handleNoSecretChatWarningOK
else:
self.passwordEntry = None
okPos = (0, 0, -0.35)
textPos = (0, 0.125)
okCommand = self.__handleNoSecretChatWarningCancel
self.noSecretChatWarning = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.2), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.4, 1.0, 1.0), text=warningText, text_wordwrap=20, text_scale=0.055, text_pos=textPos, textMayChange=1)
DirectButton(self.noSecretChatWarning, image=okButtonImage, relief=None, text=OTPLocalizer.NoSecretChatWarningOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=okPos, command=okCommand)
DirectLabel(parent=self.noSecretChatWarning, relief=None, pos=(0, 0, 0.35), text=OTPLocalizer.NoSecretChatWarningTitle, textMayChange=0, text_scale=0.08)
if base.cr.productName != 'Terra-DMC':
self.passwordLabel = DirectLabel(parent=self.noSecretChatWarning, relief=None, pos=(-0.07, 0.0, -0.2), text=OTPLocalizer.ParentPassword, text_scale=0.06, text_align=TextNode.ARight, textMayChange=0)
self.passwordEntry = DirectEntry(parent=self.noSecretChatWarning, relief=None, image=nameBalloon, image1_color=(0.8, 0.8, 0.8, 1.0), scale=0.064, pos=(0.0, 0.0, -0.2), width=OTPGlobals.maxLoginWidth, numLines=1, focus=1, cursorKeys=1, obscured=1, command=self.__handleNoSecretChatWarningOK)
DirectButton(self.noSecretChatWarning, image=cancelButtonImage, relief=None, text=OTPLocalizer.NoSecretChatWarningCancel, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=1, pos=(0.2, 0.0, -0.35), command=self.__handleNoSecretChatWarningCancel)
buttons.removeNode()
nameBalloon.removeNode()
else:
self.noSecretChatWarning['text'] = warningText
if self.passwordEntry:
self.passwordEntry['focus'] = 1
self.passwordEntry.enterText('')
self.noSecretChatWarning.show()
return
def exitNoSecretChatWarning(self):
self.noSecretChatWarning.hide()
def enterActivateChat(self):
if self.activateChatGui == None:
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
okButtonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
cancelButtonImage = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr'))
moreButtonImage = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR'))
nameShopGui = loader.loadModel('phase_3/models/gui/nameshop_gui')
circle = nameShopGui.find('**/namePanelCircle')
self.activateChatGui = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.2), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.8, 1.0, 1.6), text=OTPLocalizer.ActivateChat, text_align=TextNode.ALeft, text_wordwrap=33, text_scale=TTLocalizer.TCMactivateChatGui, text_pos=(-0.82, 0.58), textMayChange=0)
innerCircle = circle.copyTo(hidden)
innerCircle.setPos(0, 0, 0.2)
self.c1b = circle.copyTo(self.activateChatGui, -1)
self.c1b.setColor(0, 0, 0, 1)
self.c1b.setPos(-0.8, 0, 0.29)
self.c1b.setScale(0.4)
c1f = circle.copyTo(self.c1b)
c1f.setColor(1, 1, 1, 1)
c1f.setScale(0.8)
self.c2b = circle.copyTo(self.activateChatGui, -2)
self.c2b.setColor(0, 0, 0, 1)
self.c2b.setPos(-0.8, 0, 0.14)
self.c2b.setScale(0.4)
c2f = circle.copyTo(self.c2b)
c2f.setColor(1, 1, 1, 1)
c2f.setScale(0.8)
self.c3b = circle.copyTo(self.activateChatGui, -2)
self.c3b.setColor(0, 0, 0, 1)
self.c3b.setPos(-0.8, 0, -0.01)
self.c3b.setScale(0.4)
c3f = circle.copyTo(self.c3b)
c3f.setColor(1, 1, 1, 1)
c3f.setScale(0.8)
DirectLabel(self.activateChatGui, relief=None, text=OTPLocalizer.ActivateChatTitle, text_align=TextNode.ACenter, text_scale=0.07, text_pos=(0, 0.7), textMayChange=0)
if base.cr.productName != 'JP':
DirectButton(self.activateChatGui, image=moreButtonImage, image_scale=(1.25, 1.0, 1.0), relief=None, text=OTPLocalizer.ActivateChatMoreInfo, text_scale=0.06, text_pos=(0, -0.02), textMayChange=0, pos=(0.0, 0.0, -0.7), command=self.__handleActivateChatMoreInfo)
self.dcb1 = HackedDirectRadioButton(parent=self.activateChatGui, relief=None, scale=0.1, boxImage=innerCircle, boxImageScale=2.5, boxImageColor=VBase4(0, 0.25, 0.5, 1), boxRelief=None, pos=(-0.745, 0, 0.297), command=self.__updateCheckBoxen, extraArgs=[1])
self.dcb2 = HackedDirectRadioButton(parent=self.activateChatGui, relief=None, scale=0.1, boxImage=innerCircle, boxImageScale=2.5, boxImageColor=VBase4(0, 0.25, 0.5, 1), boxRelief=None, pos=(-0.745, 0, 0.147), command=self.__updateCheckBoxen, extraArgs=[2])
self.dcb3 = HackedDirectRadioButton(parent=self.activateChatGui, relief=None, scale=0.1, boxImage=innerCircle, boxImageScale=2.5, boxImageColor=VBase4(0, 0.25, 0.5, 1), boxRelief=None, pos=(-0.745, 0, -0.003), command=self.__updateCheckBoxen, extraArgs=[3])
DirectButton(self.activateChatGui, image=okButtonImage, relief=None, text=OTPLocalizer.ActivateChatYes, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(-0.35, 0.0, -0.27), command=self.__handleActivateChatYes)
DirectButton(self.activateChatGui, image=cancelButtonImage, relief=None, text=OTPLocalizer.ActivateChatNo, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.35, 0.0, -0.27), command=self.__handleActivateChatNo)
guiButton.removeNode()
buttons.removeNode()
nameShopGui.removeNode()
innerCircle.removeNode()
self.__initializeCheckBoxen()
self.activateChatGui.show()
return
def __initializeCheckBoxen(self):
if base.cr.secretChatAllowed and not base.cr.secretChatNeedsParentPassword:
self.dcb1['indicatorValue'] = 0
self.dcb2['indicatorValue'] = 0
self.dcb3['indicatorValue'] = 1
elif base.cr.secretChatAllowed and base.cr.secretChatNeedsParentPassword:
self.dcb1['indicatorValue'] = 0
self.dcb2['indicatorValue'] = 1
self.dcb3['indicatorValue'] = 0
else:
self.dcb1['indicatorValue'] = 1
self.dcb2['indicatorValue'] = 0
self.dcb3['indicatorValue'] = 0
def __updateCheckBoxen(self, value, checkBox):
if value == 0:
return
if checkBox == 1:
self.dcb2['indicatorValue'] = 0
self.dcb3['indicatorValue'] = 0
elif checkBox == 2:
self.dcb1['indicatorValue'] = 0
self.dcb3['indicatorValue'] = 0
else:
self.dcb1['indicatorValue'] = 0
self.dcb2['indicatorValue'] = 0
def exitActivateChat(self):
self.activateChatGui.hide()
def enterSecretChatActivated(self, mode = 2):
if mode == 0:
modeText = OTPLocalizer.SecretChatDeactivated
elif mode == 1:
modeText = OTPLocalizer.RestrictedSecretChatActivated
else:
modeText = OTPLocalizer.SecretChatActivated
if self.secretChatActivated == None:
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
optionsButtonImage = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR'))
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
buttonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
self.secretChatActivated = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.4), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.0, 1.0, 0.8), text=modeText, text_align=TextNode.ACenter, text_wordwrap=14, text_scale=TTLocalizer.TCMsecretChatActivated, text_pos=(0, 0.25))
DirectButton(self.secretChatActivated, image=buttonImage, relief=None, text=OTPLocalizer.SecretChatActivatedOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.0, 0.0, -0.1), command=self.__handleSecretChatActivatedOK)
buttons.removeNode()
guiButton.removeNode()
else:
self.secretChatActivated['text'] = modeText
self.secretChatActivated.show()
return
def exitSecretChatActivated(self):
self.secretChatActivated.hide()
def enterProblemActivatingChat(self):
if self.problemActivatingChat == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
buttonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
self.problemActivatingChat = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.4), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.2, 1.0, 0.9), text='', text_align=TextNode.ALeft, text_wordwrap=18, text_scale=0.06, text_pos=(-0.5, 0.28), textMayChange=1)
DirectButton(self.problemActivatingChat, image=buttonImage, relief=None, text=OTPLocalizer.ProblemActivatingChatOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.0, 0.0, -0.28), command=self.__handleProblemActivatingChatOK)
buttons.removeNode()
self.problemActivatingChat.show()
return
def exitProblemActivatingChat(self):
self.problemActivatingChat.hide()
def __normalButtonPressed(self):
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: CHAT: Speedchat Plus')
messenger.send('wakeup')
self.fsm.request('normalChat')
def __scButtonPressed(self):
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: CHAT: Speedchat')
messenger.send('wakeup')
if self.fsm.getCurrentState().getName() == 'speedChat':
self.fsm.request('mainMenu')
else:
self.fsm.request('speedChat')
def __whisperButtonPressed(self, avatarName, avatarId, playerId):
messenger.send('wakeup')
if playerId:
playerInfo = base.cr.playerFriendsManager.getFriendInfo(playerId)
if avatarId:
self.enterWhisperChat(avatarName, avatarId)
self.whisperFrame.hide()
return
def enterNormalChat(self):
result = ChatManager.ChatManager.enterNormalChat(self)
if result == None:
self.notify.warning('something went wrong in enterNormalChat, falling back to main menu')
self.fsm.request('mainMenu')
return
def enterWhisperChatPlayer(self, avatarName, playerId):
result = ChatManager.ChatManager.enterWhisperChatPlayer(self, avatarName, playerId)
self.chatInputNormal.setPos(self.whisperPos)
if result == None:
self.notify.warning('something went wrong in enterWhisperChatPlayer, falling back to main menu')
self.fsm.request('mainMenu')
return
def enterWhisperChat(self, avatarName, avatarId):
result = ChatManager.ChatManager.enterWhisperChat(self, avatarName, avatarId)
self.chatInputNormal.reparentTo(base.a2dTopCenter)
self.chatInputNormal.setPos(self.whisperPos)
if result == None:
self.notify.warning('something went wrong in enterWhisperChat, falling back to main menu')
self.fsm.request('mainMenu')
return
def enterNoSecretChatAtAllAndNoWhitelist(self):
if self.noSecretChatAtAllAndNoWhitelist == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
okButtonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
self.noSecretChatAtAllAndNoWhitelist = DirectFrame(parent=aspect2dp, pos=(0.0, 0.1, 0.05), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(1.4, 1.0, 1.58), text=OTPLocalizer.NoSecretChatAtAllAndNoWhitelist, text_wordwrap=20, textMayChange=0, text_scale=0.06, text_pos=(0, 0.55))
DirectLabel(parent=self.noSecretChatAtAllAndNoWhitelist, relief=None, pos=(0, 0, 0.67), text=OTPLocalizer.NoSecretChatAtAllAndNoWhitelistTitle, textMayChange=0, text_scale=0.08)
DirectButton(self.noSecretChatAtAllAndNoWhitelist, image=okButtonImage, relief=None, text=OTPLocalizer.NoSecretChatAtAllOK, text_scale=0.05, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.0, 0.0, -0.64), command=self.__handleNoSecretChatAtAllOK)
buttons.removeNode()
self.noSecretChatAtAllAndNoWhitelist.show()
return
def exitNoSecretChatAtAllAndNoWhitelist(self):
self.noSecretChatAtAllAndNoWhitelist.hide()
def __whisperScButtonPressed(self, avatarName, avatarId, playerId):
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: CHAT: Whisper')
messenger.send('wakeup')
hasManager = hasattr(base.cr, 'playerFriendsManager')
transientFriend = 0
if hasManager:
transientFriend = base.cr.playerFriendsManager.askTransientFriend(avatarId)
if transientFriend:
playerId = base.cr.playerFriendsManager.findPlayerIdFromAvId(avatarId)
if avatarId and not transientFriend:
if self.fsm.getCurrentState().getName() == 'whisperSpeedChat':
self.fsm.request('whisper', [avatarName, avatarId, playerId])
else:
self.fsm.request('whisperSpeedChat', [avatarId])
elif playerId:
if self.fsm.getCurrentState().getName() == 'whisperSpeedChatPlayer':
self.fsm.request('whisper', [avatarName, avatarId, playerId])
else:
self.fsm.request('whisperSpeedChatPlayer', [playerId])
# Do more work here for position of SCWhisperpos
def __whisperCancelPressed(self):
self.fsm.request('mainMenu')
def __handleOpenChatWarningOK(self):
self.fsm.request('mainMenu')
def __handleUnpaidChatWarningDone(self):
place = base.cr.playGame.getPlace()
if place:
place.handleBookClose()
self.fsm.request('mainMenu')
def __handleUnpaidChatWarningContinue(self):
self.fsm.request('mainMenu')
def __handleUnpaidChatWarningPay(self):
self.fsm.request('mainMenu')
2015-03-03 22:10:12 +00:00
def __handleNoSecretChatAtAllOK(self):
self.fsm.request('mainMenu')
def __handleNoSecretChatWarningOK(self, *args):
password = self.passwordEntry.get()
tt = base.cr.loginInterface
okflag, message = tt.authenticateParentPassword(base.cr.userName, base.cr.password, password)
if okflag:
self.fsm.request('activateChat')
elif message:
self.fsm.request('problemActivatingChat')
self.problemActivatingChat['text'] = OTPLocalizer.ProblemActivatingChat % message
else:
self.noSecretChatWarning['text'] = OTPLocalizer.NoSecretChatWarningWrongPassword
self.passwordEntry['focus'] = 1
self.passwordEntry.enterText('')
def __handleNoSecretChatWarningCancel(self):
self.fsm.request('mainMenu')
def __handleActivateChatYes(self):
password = self.passwordEntry.get()
tt = base.cr.loginInterface
if self.dcb1['indicatorValue']:
base.cr.secretChatAllowed = 0
mode = 0
elif self.dcb2['indicatorValue']:
base.cr.secretChatAllowed = 1
base.cr.secretChatNeedsParentPassword = 1
mode = 1
else:
base.cr.secretChatAllowed = 1
base.cr.secretChatNeedsParentPassword = 0
mode = 2
okflag, message = tt.enableSecretFriends(base.cr.userName, base.cr.password, password)
if okflag:
tt.resendPlayToken()
self.fsm.request('secretChatActivated', [mode])
else:
if message == None:
message = 'Parent Password was invalid.'
self.fsm.request('problemActivatingChat')
self.problemActivatingChat['text'] = OTPLocalizer.ProblemActivatingChat % message
return
def __handleActivateChatMoreInfo(self):
self.fsm.request('chatMoreInfo')
def __handleActivateChatNo(self):
self.fsm.request('mainMenu')
def __handleSecretChatActivatedOK(self):
self.fsm.request('mainMenu')
def __handleSecretChatActivatedChangeOptions(self):
self.fsm.request('activateChat')
def __handleProblemActivatingChatOK(self):
self.fsm.request('mainMenu')
def messageSent(self):
pass
def deactivateChat(self):
pass