mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-25 04:32:33 -06:00
597 lines
No EOL
26 KiB
Python
Executable file
597 lines
No EOL
26 KiB
Python
Executable file
from pandac.PandaModules import *
|
|
from direct.gui.DirectGui import *
|
|
from pandac.PandaModules import *
|
|
from direct.showbase import DirectObject
|
|
import ToonHead
|
|
import LaffMeter
|
|
from otp.avatar import Avatar
|
|
from direct.distributed import DistributedObject
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from toontown.toonbase import ToontownGlobals
|
|
from toontown.toonbase import TTLocalizer
|
|
import ToonAvatarDetailPanel
|
|
import AvatarPanelBase
|
|
from toontown.toontowngui import TTDialog
|
|
from otp.otpbase import OTPGlobals
|
|
|
|
class ToonAvatarPanel(AvatarPanelBase.AvatarPanelBase):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('ToonAvatarPanel')
|
|
|
|
def __init__(self, avatar):
|
|
from toontown.friends import FriendsListPanel
|
|
|
|
if base.cr.doId2do.get(avatar.getDoId()):
|
|
avatar = base.cr.doId2do.get(avatar.getDoId())
|
|
AvatarPanelBase.AvatarPanelBase.__init__(self, avatar, FriendsListPanel=FriendsListPanel)
|
|
|
|
self.notify.debug('Opening toon panel, avId=%d' % self.avId)
|
|
|
|
self.laffMeter = None
|
|
wantsLaffMeter = hasattr(avatar, 'hp')
|
|
|
|
if not hasattr(avatar, 'style'):
|
|
self.notify.warning("Avatar has no 'style'. Abort initialization.")
|
|
AvatarPanelBase.AvatarPanelBase.cleanup(self)
|
|
return
|
|
|
|
base.localAvatar.obscureFriendsListButton(1)
|
|
|
|
gui = loader.loadModel('phase_3.5/models/gui/avatar_panel_gui')
|
|
self.frame = DirectFrame(
|
|
image=gui.find('**/avatar_panel'),
|
|
relief=None,
|
|
pos=(-0.22, 0, -0.47),
|
|
parent=base.a2dTopRight)
|
|
|
|
self.disabledImageColor = Vec4(1, 1, 1, 0.4)
|
|
self.text0Color = Vec4(1, 1, 1, 1)
|
|
self.text1Color = Vec4(0.5, 1, 0.5, 1)
|
|
self.text2Color = Vec4(1, 1, 0.5, 1)
|
|
self.text3Color = Vec4(0.6, 0.6, 0.6, 1)
|
|
|
|
self.head = self.frame.attachNewNode('head')
|
|
self.head.setPos(0.02, 0, 0.31)
|
|
self.headModel = ToonHead.ToonHead()
|
|
self.headModel.setupHead(avatar.style, forGui=1)
|
|
self.headModel.fitAndCenterHead(0.175, forGui=1)
|
|
self.headModel.reparentTo(self.head)
|
|
|
|
self.headModel.startBlink()
|
|
self.headModel.startLookAround()
|
|
|
|
self.healthText = DirectLabel(
|
|
parent=self.frame,
|
|
text='',
|
|
pos=(0.06, 0, 0.2),
|
|
text_pos=(0, 0),
|
|
text_scale=0.05)
|
|
|
|
self.healthText.hide()
|
|
|
|
self.nameLabel = DirectLabel(
|
|
parent=self.frame,
|
|
pos=(0.0125, 0, 0.4),
|
|
relief=None,
|
|
text=self.avName,
|
|
text_font=avatar.getFont(),
|
|
text_fg=Vec4(0, 0, 0, 1),
|
|
text_pos=(0, 0),
|
|
text_scale=0.042,
|
|
text_wordwrap=7.5,
|
|
text_shadow=(1, 1, 1, 1))
|
|
|
|
self.closeButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/CloseBtn_UP'),
|
|
gui.find('**/CloseBtn_DN'),
|
|
gui.find('**/CloseBtn_Rllvr'),
|
|
gui.find('**/CloseBtn_UP')),
|
|
relief=None,
|
|
pos=(0.157644, 0, -0.379167),
|
|
command=self.__handleClose)
|
|
|
|
self.friendButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/Frnds_Btn_UP'),
|
|
gui.find('**/Frnds_Btn_DN'),
|
|
gui.find('**/Frnds_Btn_RLVR'),
|
|
gui.find('**/Frnds_Btn_UP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.9,
|
|
relief=None,
|
|
text=TTLocalizer.AvatarPanelFriends,
|
|
text_scale=0.06,
|
|
pos=(-0.103, 0, 0.133),
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_pos=(0.06, -0.02),
|
|
text_align=TextNode.ALeft,
|
|
command=self.__handleFriend)
|
|
|
|
self.goToButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/Go2_Btn_UP'),
|
|
gui.find('**/Go2_Btn_DN'),
|
|
gui.find('**/Go2_Btn_RLVR'),
|
|
gui.find('**/Go2_Btn_UP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.9,
|
|
relief=None,
|
|
pos=(-0.103, 0, 0.045),
|
|
text=TTLocalizer.AvatarPanelGoTo,
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_scale=0.06,
|
|
text_pos=(0.06, -0.015),
|
|
text_align=TextNode.ALeft,
|
|
command=self.__handleGoto)
|
|
|
|
self.whisperButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/ChtBx_ChtBtn_UP'),
|
|
gui.find('**/ChtBx_ChtBtn_DN'),
|
|
gui.find('**/ChtBx_ChtBtn_RLVR'),
|
|
gui.find('**/ChtBx_ChtBtn_UP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.9,
|
|
relief=None,
|
|
pos=(-0.103, 0, -0.0375),
|
|
text=TTLocalizer.AvatarPanelWhisper,
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_scale=TTLocalizer.TAPwhisperButton,
|
|
text_pos=(0.06, -0.0125),
|
|
text_align=TextNode.ALeft,
|
|
command=self.__handleWhisper)
|
|
|
|
self.trueFriendsButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/Amuse_Btn_UP'),
|
|
gui.find('**/Amuse_Btn_DN'),
|
|
gui.find('**/Amuse_Btn_RLVR'),
|
|
gui.find('**/Amuse_Btn_UP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.9,
|
|
relief=None,
|
|
pos=(-0.103, 0, -0.13),
|
|
text=TTLocalizer.AvatarPanelTrueFriends,
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_scale=TTLocalizer.TAPtruefriendsButton,
|
|
text_pos=(0.055, -0.01),
|
|
text_align=TextNode.ALeft,
|
|
command=self.__handleTrueFriends)
|
|
|
|
ignoreStr, ignoreCmd, ignoreScale = self.getIgnoreButtonInfo()
|
|
|
|
self.ignoreButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/Ignore_Btn_UP'),
|
|
gui.find('**/Ignore_Btn_DN'),
|
|
gui.find('**/Ignore_Btn_RLVR'),
|
|
gui.find('**/Ignore_Btn_UP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.9,
|
|
relief=None,
|
|
pos=(-0.103697, 0, -0.21),
|
|
text=ignoreStr,
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_scale=ignoreScale,
|
|
text_pos=(0.06, -0.015),
|
|
text_align=TextNode.ALeft,
|
|
command=ignoreCmd)
|
|
self.reportButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/report_BtnUP'),
|
|
gui.find('**/report_BtnDN'),
|
|
gui.find('**/report_BtnRLVR'),
|
|
gui.find('**/report_BtnUP')),
|
|
image3_color=self.disabledImageColor,
|
|
image_scale=0.65,
|
|
relief=None,
|
|
pos=(-0.103, 0, -0.29738),
|
|
text=TTLocalizer.AvatarPanelReport,
|
|
text0_fg=self.text0Color,
|
|
text1_fg=self.text1Color,
|
|
text2_fg=self.text2Color,
|
|
text3_fg=self.text3Color,
|
|
text_scale=0.06,
|
|
text_pos=(0.06, -0.015),
|
|
text_align=TextNode.ALeft,
|
|
command=self.handleReport)
|
|
|
|
if avatar.isAdmin():
|
|
self.trueFriendsButton['state'] = DGG.DISABLED
|
|
self.ignoreButton['state'] = DGG.DISABLED
|
|
self.reportButton['state'] = DGG.DISABLED
|
|
elif base.localAvatar.isIgnored(self.avId):
|
|
self.friendButton['state'] = DGG.DISABLED
|
|
self.goToButton['state'] = DGG.DISABLED
|
|
self.whisperButton['state'] = DGG.DISABLED
|
|
self.trueFriendsButton['state'] = DGG.DISABLED
|
|
|
|
if not base.localAvatar.isTeleportAllowed():
|
|
self.goToButton['state'] = DGG.DISABLED
|
|
|
|
self.detailButton = DirectButton(
|
|
parent=self.frame,
|
|
image=(
|
|
gui.find('**/ChtBx_BackBtn_UP'),
|
|
gui.find('**/ChtBx_BackBtn_DN'),
|
|
gui.find('**/ChtBx_BackBtn_Rllvr'),
|
|
gui.find('**/ChtBx_BackBtn_UP')),
|
|
relief=None,
|
|
text=('', TTLocalizer.AvatarPanelDetail,
|
|
TTLocalizer.AvatarPanelDetail, ''),
|
|
text_fg=self.text2Color,
|
|
text_shadow=(0, 0, 0, 1),
|
|
text_scale=0.055,
|
|
text_pos=(-0.075, -0.01),
|
|
text_align=TextNode.ARight,
|
|
pos=(-0.133773, 0, -0.395),
|
|
command=self.__handleDetails)
|
|
|
|
|
|
self.__makeBoardingGui()
|
|
self.__makePetGui(avatar)
|
|
|
|
self.__checkGroupStatus()
|
|
|
|
gui.removeNode()
|
|
|
|
|
|
if wantsLaffMeter:
|
|
self.__makeLaffMeter(avatar)
|
|
self.__updateHp(avatar.hp, avatar.maxHp)
|
|
self.healthText.show()
|
|
self.laffMeter.show()
|
|
|
|
menuX = -0.05
|
|
menuScale = 0.064
|
|
|
|
if self.avGenerateName:
|
|
self.accept(self.avGenerateName, self.__handleGenerateAvatar)
|
|
if self.avHpChangeName:
|
|
self.accept(self.avHpChangeName, self.__updateHp)
|
|
self.accept('updateLaffMeter', self.__updateLaffMeter)
|
|
|
|
self.accept('updateGroupStatus', self.__checkGroupStatus)
|
|
|
|
self.frame.show()
|
|
messenger.send('avPanelDone')
|
|
|
|
def disableAll(self):
|
|
self.detailButton['state'] = DGG.DISABLED
|
|
self.reportButton['state'] = DGG.DISABLED
|
|
self.ignoreButton['state'] = DGG.DISABLED
|
|
self.goToButton['state'] = DGG.DISABLED
|
|
self.trueFriendsButton['state'] = DGG.DISABLED
|
|
self.whisperButton['state'] = DGG.DISABLED
|
|
self.petButton['state'] = DGG.DISABLED
|
|
self.friendButton['state'] = DGG.DISABLED
|
|
self.closeButton['state'] = DGG.DISABLED
|
|
self.groupButton['state'] = DGG.DISABLED
|
|
self.boardingInfoButton['state'] = DGG.DISABLED
|
|
|
|
def cleanup(self):
|
|
if not hasattr(self, 'frame') or self.frame == None:
|
|
return
|
|
self.notify.debug('Clean up toon panel, avId=%d' % self.avId)
|
|
if self.frame:
|
|
self.frame.destroy()
|
|
del self.frame
|
|
self.frame = None
|
|
ToonAvatarDetailPanel.unloadAvatarDetail()
|
|
if self.groupButton:
|
|
self.groupButton.destroy()
|
|
del self.groupButton
|
|
self.groupButton = None
|
|
if self.boardingInfoButton:
|
|
self.boardingInfoButton.destroy()
|
|
del self.boardingInfoButton
|
|
self.boardingInfoButton = None
|
|
if self.boardingInfoText:
|
|
self.boardingInfoText.destroy()
|
|
del self.boardingInfoText
|
|
self.boardingInfoText = None
|
|
if self.groupFrame:
|
|
self.groupFrame.destroy()
|
|
del self.groupFrame
|
|
self.groupFrame = None
|
|
self.head.removeNode()
|
|
del self.head
|
|
self.headModel.stopBlink()
|
|
self.headModel.stopLookAroundNow()
|
|
self.headModel.delete()
|
|
del self.headModel
|
|
base.localAvatar.obscureFriendsListButton(-1)
|
|
self.laffMeter = None
|
|
self.ignore('updateLaffMeter')
|
|
self.ignoreAll()
|
|
if hasattr(self.avatar, 'bFake') and self.avatar.bFake:
|
|
self.avatar.delete()
|
|
base.setCellsActive([base.rightCells[0]], 1)
|
|
AvatarPanelBase.AvatarPanelBase.cleanup(self)
|
|
return
|
|
|
|
def __handleGoto(self):
|
|
if base.localAvatar.isTeleportAllowed():
|
|
base.localAvatar.chatMgr.noWhisper()
|
|
messenger.send('gotoAvatar', [self.avId, self.avName, self.avDisableName])
|
|
|
|
def __handleToPet(self):
|
|
toonAvatar = self.avatar
|
|
if base.cr.doId2do.get(toonAvatar.getDoId()):
|
|
toonAvatar = base.cr.doId2do.get(toonAvatar.getDoId())
|
|
petAvatar = base.cr.doId2do.get(toonAvatar.getPetId())
|
|
self.disableAll()
|
|
from toontown.pets import PetDetail
|
|
PetDetail.PetDetail(toonAvatar.getPetId(), self.__petDetailsLoaded)
|
|
|
|
def __petDetailsLoaded(self, avatar):
|
|
self.cleanup()
|
|
if avatar:
|
|
self.notify.debug("Looking at someone's pet. pet doId = %s" % avatar.doId)
|
|
messenger.send('clickedNametag', [avatar])
|
|
|
|
def __handleWhisper(self):
|
|
base.localAvatar.chatMgr.whisperTo(self.avName, self.avId)
|
|
|
|
def __handleFriend(self):
|
|
base.localAvatar.chatMgr.noWhisper()
|
|
messenger.send('friendAvatar', [self.avId, self.avName, self.avDisableName])
|
|
|
|
def __handleDetails(self):
|
|
base.localAvatar.chatMgr.noWhisper()
|
|
messenger.send('avatarDetails', [self.avId, self.avName])
|
|
|
|
def __handleDisableAvatar(self):
|
|
if not base.cr.isFriend(self.avId):
|
|
self.cleanup()
|
|
AvatarPanelBase.currentAvatarPanel = None
|
|
else:
|
|
self.healthText.hide()
|
|
if self.laffMeter != None:
|
|
self.laffMeter.stop()
|
|
self.laffMeter.destroy()
|
|
self.laffMeter = None
|
|
return
|
|
|
|
def __handleGenerateAvatar(self, avatar):
|
|
newAvatar = base.cr.doId2do.get(self.avatar.doId)
|
|
if newAvatar:
|
|
self.avatar = newAvatar
|
|
self.__updateLaffMeter(avatar, avatar.hp, avatar.maxHp)
|
|
self.__checkGroupStatus()
|
|
|
|
def __updateLaffMeter(self, avatar, hp, maxHp):
|
|
if self.laffMeter == None:
|
|
self.__makeLaffMeter(avatar)
|
|
self.__updateHp(avatar.hp, avatar.maxHp)
|
|
self.laffMeter.show()
|
|
self.healthText.show()
|
|
return
|
|
|
|
def __makeLaffMeter(self, avatar):
|
|
self.laffMeter = LaffMeter.LaffMeter(avatar.style, avatar.hp, avatar.maxHp)
|
|
self.laffMeter.reparentTo(self.frame)
|
|
self.laffMeter.setPos(-0.1, 0, 0.24)
|
|
self.laffMeter.setScale(0.03)
|
|
|
|
def __updateHp(self, hp, maxHp, quietly = 0):
|
|
if self.laffMeter != None and hp != None and maxHp != None:
|
|
self.laffMeter.adjustFace(hp, maxHp)
|
|
self.healthText['text'] = '%d / %d' % (hp, maxHp)
|
|
return
|
|
|
|
def __handleClose(self):
|
|
self.cleanup()
|
|
AvatarPanelBase.currentAvatarPanel = None
|
|
if self.friendsListShown:
|
|
self.FriendsListPanel.showFriendsList()
|
|
return
|
|
|
|
def getAvId(self):
|
|
if hasattr(self, 'avatar'):
|
|
if self.avatar:
|
|
return self.avatar.doId
|
|
return None
|
|
|
|
def isHidden(self):
|
|
if not hasattr(self, 'frame') or not self.frame:
|
|
return 1
|
|
return self.frame.isHidden()
|
|
|
|
def getType(self):
|
|
return 'toon'
|
|
|
|
def handleInvite(self):
|
|
if localAvatar.boardingParty.isInviteePanelUp():
|
|
localAvatar.boardingParty.showMe(TTLocalizer.BoardingPendingInvite, pos=(0, 0, 0))
|
|
else:
|
|
self.groupButton['state'] = DGG.DISABLED
|
|
localAvatar.boardingParty.requestInvite(self.avId)
|
|
|
|
def handleKick(self):
|
|
if not base.cr.playGame.getPlace().getState() == 'elevator':
|
|
self.confirmKickOutDialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.BoardingKickOutConfirm % self.avName, command=self.__confirmKickOutCallback)
|
|
self.confirmKickOutDialog.show()
|
|
|
|
def __confirmKickOutCallback(self, value):
|
|
if self.confirmKickOutDialog:
|
|
self.confirmKickOutDialog.destroy()
|
|
self.confirmKickOutDialog = None
|
|
if value > 0:
|
|
if self.groupButton:
|
|
self.groupButton['state'] = DGG.DISABLED
|
|
localAvatar.boardingParty.requestKick(self.avId)
|
|
return
|
|
|
|
def __checkGroupStatus(self):
|
|
self.groupFrame.hide()
|
|
if hasattr(self, 'avatar'):
|
|
if self.avatar and hasattr(self.avatar, 'getZoneId') and localAvatar.getZoneId() == self.avatar.getZoneId():
|
|
if localAvatar.boardingParty:
|
|
if self.avId in localAvatar.boardingParty.getGroupMemberList(localAvatar.doId):
|
|
if localAvatar.boardingParty.getGroupLeader(localAvatar.doId) == localAvatar.doId:
|
|
self.groupButton['text'] = ('', TTLocalizer.AvatarPanelGroupMemberKick, TTLocalizer.AvatarPanelGroupMemberKick)
|
|
self.groupButton['image'] = self.kickOutImageList
|
|
self.groupButton['command'] = self.handleKick
|
|
self.groupButton['state'] = DGG.NORMAL
|
|
else:
|
|
self.groupButton['text'] = ('', TTLocalizer.AvatarPanelGroupMember, TTLocalizer.AvatarPanelGroupMember)
|
|
self.groupButton['command'] = None
|
|
self.groupButton['image'] = self.inviteImageDisabled
|
|
self.groupButton['image_color'] = Vec4(1, 1, 1, 0.4)
|
|
self.groupButton['state'] = DGG.NORMAL
|
|
else:
|
|
g1 = localAvatar.boardingParty.countInGroup(self.avId)
|
|
g2 = localAvatar.boardingParty.countInGroup(localAvatar.doId)
|
|
if (g1 + g2) > localAvatar.boardingParty.maxSize:
|
|
self.groupButton['text'] = ('', TTLocalizer.AvatarPanelGroupMember, TTLocalizer.AvatarPanelGroupMember)
|
|
self.groupButton['command'] = None
|
|
self.groupButton['image'] = self.inviteImageDisabled
|
|
self.groupButton['image_color'] = Vec4(1, 1, 1, 0.4)
|
|
else:
|
|
if g1 > 0 and g2 > 0:
|
|
self.groupButton['text'] = ('', TTLocalizer.AvatarPanelGroupInvite, "%s %d"%(TTLocalizer.AvatarPanelGroupMerge, (g1+g2)))
|
|
self.groupFrame['text']=TTLocalizer.BoardingPartyTitleMerge;
|
|
else:
|
|
self.groupButton['text'] = ('', TTLocalizer.AvatarPanelGroupInvite, TTLocalizer.AvatarPanelGroupInvite)
|
|
self.groupFrame['text']=TTLocalizer.BoardingPartyTitle;
|
|
self.groupButton['command'] = self.handleInvite
|
|
self.groupButton['image'] = self.inviteImageList
|
|
self.groupButton['state'] = DGG.NORMAL
|
|
if base.config.GetBool('want-boarding-groups', 1):
|
|
base.setCellsActive([base.rightCells[0]], 0)
|
|
self.groupFrame.show()
|
|
return
|
|
|
|
def handleReadInfo(self, task = None):
|
|
self.boardingInfoButton['state'] = DGG.DISABLED
|
|
if self.boardingInfoText:
|
|
self.boardingInfoText.destroy()
|
|
self.boardingInfoText = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.BoardingPartyInform % localAvatar.boardingParty.maxSize, command=self.handleCloseInfo)
|
|
|
|
def handleCloseInfo(self, *extraArgs):
|
|
self.boardingInfoButton['state'] = DGG.NORMAL
|
|
if self.boardingInfoText:
|
|
self.boardingInfoText.destroy()
|
|
del self.boardingInfoText
|
|
self.boardingInfoText = None
|
|
return
|
|
|
|
def __makePetGui(self, avatar):
|
|
if self.avatar.isAdmin():
|
|
helpGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_help')
|
|
image = (helpGui.find('**/tt_t_gui_brd_helpUp'), helpGui.find('**/tt_t_gui_brd_helpDown'), helpGui.find('**/tt_t_gui_brd_helpHover'), helpGui.find('**/tt_t_gui_brd_helpDown'))
|
|
text = ('', TTLocalizer.AvatarPanelCast, TTLocalizer.AvatarPanelCast, '')
|
|
self.petButton = DirectButton(parent=self.frame, image=image, relief=None, pos=(0.02, -0.2, -0.385), text=text, text_fg=self.text2Color, scale=0.8,
|
|
text_shadow=(0, 0, 0, 1), text_scale=0.07, text_pos=(0, -0.125), text_align=TextNode.ACenter, command=self.__handleCastDialog)
|
|
helpGui.removeNode()
|
|
return
|
|
|
|
petGui = loader.loadModel('phase_3.5/models/gui/PetControlPannel')
|
|
self.petButton = DirectButton(parent=self.frame, image=(petGui.find('**/PetControlToonButtonUp1'), petGui.find('**/PetControlToonButtonDown1'), petGui.find('**/PetControlToonButtonRollover1')), geom=petGui.find('**/PetBattleIcon'), geom3_color=self.disabledImageColor, relief=None, pos=(0.22, -0.2, -0.475), text=('',
|
|
TTLocalizer.AvatarPanelPet,
|
|
TTLocalizer.AvatarPanelPet,
|
|
''), text_fg=self.text2Color, text_shadow=(0, 0, 0, 1), text_scale=0.325, text_pos=(-1.3, 0.05), text_align=TextNode.ACenter, command=self.__handleToPet)
|
|
self.petButton.setScale(0.15)
|
|
if not (base.wantPets and avatar.hasPet()):
|
|
self.petButton['state'] = DGG.DISABLED
|
|
self.petButton.hide()
|
|
petGui.removeNode()
|
|
|
|
def __handleCastDialog(self):
|
|
self.cleanupDialog()
|
|
base.cr.playGame.getPlace().setState('stopped')
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.AvatarPanelCastInfo % self.avatar.getName(), text_wordwrap=20, command=self.cleanupDialogAndWalk)
|
|
self.dialog.show()
|
|
|
|
def __makeBoardingGui(self):
|
|
self.confirmKickOutDialog = None
|
|
groupAvatarBgGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_avatarPanelBg')
|
|
boardingGroupBGImage = groupAvatarBgGui.find('**/tt_t_gui_brd_avatar_panel_party')
|
|
self.groupFrame = DirectFrame(parent=self.frame, relief=None, image=boardingGroupBGImage, image_scale=(0.5, 1, 0.5), textMayChange=1, text=TTLocalizer.BoardingPartyTitle, text_wordwrap=16, text_scale=TTLocalizer.TAPgroupFrame, text_pos=(0.01, 0.08), pos=(0, 0, -0.61))
|
|
groupInviteGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_inviteButton')
|
|
self.inviteImageList = (groupInviteGui.find('**/tt_t_gui_brd_inviteUp'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_inviteDown'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_inviteHover'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_inviteUp'))
|
|
self.kickOutImageList = (groupInviteGui.find('**/tt_t_gui_brd_kickoutUp'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_kickoutDown'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_kickoutHover'),
|
|
groupInviteGui.find('**/tt_t_gui_brd_kickoutUp'))
|
|
self.inviteImageDisabled = groupInviteGui.find('**/tt_t_gui_brd_inviteDisabled')
|
|
self.groupButton = DirectButton(parent=self.groupFrame, image=self.inviteImageList, image3_color=self.disabledImageColor, image_scale=0.85, relief=None, text=('', TTLocalizer.AvatarPanelGroupInvite, TTLocalizer.AvatarPanelGroupInvite), text0_fg=self.text0Color, text1_fg=self.text1Color, text2_fg=self.text2Color, text3_fg=self.text3Color, text_scale=TTLocalizer.TAPgroupButton, text_pos=(-0.0, -0.1), text_align=TextNode.ACenter, command=self.handleInvite, pos=(0.01013, 0, -0.05464))
|
|
helpGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_help')
|
|
helpImageList = (helpGui.find('**/tt_t_gui_brd_helpUp'),
|
|
helpGui.find('**/tt_t_gui_brd_helpDown'),
|
|
helpGui.find('**/tt_t_gui_brd_helpHover'),
|
|
helpGui.find('**/tt_t_gui_brd_helpDown'))
|
|
self.boardingInfoButton = DirectButton(parent=self.groupFrame, relief=None, text_pos=(-0.05, 0.05), text_scale=0.06, text_align=TextNode.ALeft, text_fg=Vec4(1, 1, 1, 1), text_shadow=Vec4(0, 0, 0, 1), image=helpImageList, image_scale=(0.5, 1, 0.5), image3_color=self.disabledImageColor, scale=1.05, command=self.handleReadInfo, pos=(0.1829, 0, 0.02405))
|
|
self.boardingInfoText = None
|
|
groupInviteGui.removeNode()
|
|
groupAvatarBgGui.removeNode()
|
|
helpGui.removeNode()
|
|
return
|
|
|
|
def __handleTrueFriends(self):
|
|
if not settings['trueFriends']:
|
|
base.localAvatar.chatMgr.fsm.request('noTrueFriends')
|
|
return
|
|
|
|
self.cleanupDialog()
|
|
base.cr.playGame.getPlace().fsm.request('stopped')
|
|
|
|
if base.localAvatar.isTrueFriends(self.avatar.doId):
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.TrueFriendsRemoveNotice % self.avatar.getName(), text_wordwrap=20, command=self.confirmTrueFriendsRemove)
|
|
self.dialog.show()
|
|
elif not base.cr.isFriend(self.avatar.doId):
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TrueFriendsNotFriends % self.avatar.getName(), text_wordwrap=20, command=self.cleanupDialogAndWalk)
|
|
self.dialog.show()
|
|
else:
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.TrueFriendsAddNotice % self.avatar.getName(), text_wordwrap=20, command=self.confirmTrueFriendsAdd)
|
|
self.dialog.show()
|
|
|
|
def confirmTrueFriendsAdd(self, state):
|
|
self.cleanupDialog()
|
|
|
|
if state > 0:
|
|
base.localAvatar.addTrueFriends(self.avatar.doId)
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TrueFriendsAdded.replace('%s', self.avatar.getName()), text_wordwrap=20, command=self.cleanupDialogAndWalk)
|
|
self.dialog.show()
|
|
else:
|
|
base.cr.playGame.getPlace().fsm.request('walk')
|
|
|
|
def confirmTrueFriendsRemove(self, state):
|
|
self.cleanupDialog()
|
|
|
|
if state > 0:
|
|
base.localAvatar.removeTrueFriends(self.avatar.doId)
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TrueFriendsRemoved % self.avatar.getName(), text_wordwrap=20, command=self.cleanupDialogAndWalk)
|
|
self.dialog.show()
|
|
else:
|
|
base.cr.playGame.getPlace().fsm.request('walk')
|
|
|
|
def cleanupDialogAndWalk(self, state=None):
|
|
self.cleanupDialog()
|
|
base.cr.playGame.getPlace().fsm.request('walk') |