a bunch of party fixes

This commit is contained in:
Open Toontown 2022-01-18 16:12:05 -05:00
parent 1f63c40772
commit 556ad03dab
8 changed files with 51 additions and 44 deletions

View file

@ -531,7 +531,7 @@ class MiniInviteVisual(DirectFrame):
DirectFrame.__init__(self, parent, pos=(0.1, 0, -0.018))
self.checkedHeight = True
self.partyInfo = partyInfo
self.parent = parent
self._parent = parent
self.inviteBackgrounds = loader.loadModel('phase_4/models/parties/partyStickerbook')
backgrounds = ['calendar_popup_birthday',
'calendar_popup_fun',
@ -547,9 +547,9 @@ class MiniInviteVisual(DirectFrame):
return
def show(self):
self.reparentTo(self.parent)
self.reparentTo(self._parent)
self.setPos(0.1, 0, -0.018)
newParent = self.parent.getParent().getParent()
newParent = self._parent.getParent().getParent()
self.wrtReparentTo(newParent)
if self.whosePartyLabel['text'] == ' ':
host = base.cr.identifyAvatar(self.partyInfo.hostId)
@ -575,7 +575,7 @@ class MiniInviteVisual(DirectFrame):
def destroy(self):
del self.checkedHeight
del self.partyInfo
del self.parent
del self._parent
del self.background
del self.whosePartyLabel
del self.whenTextLabel

View file

@ -1,11 +1,11 @@
import random
import time
import datetime
from pandac.PandaModules import Vec4, TextNode, CardMaker, NodePath
from panda3d.core import Vec4, TextNode, CardMaker, NodePath
from direct.distributed import DistributedObject
from direct.task.Task import Task
from direct.gui.DirectGui import DirectLabel
from direct.gui import OnscreenText
from direct.interval.IntervalGlobal import *
from toontown.toonbase import ToontownGlobals
from toontown.parties.PartyInfo import PartyInfo
from toontown.toonbase import TTLocalizer
@ -321,8 +321,8 @@ class DistributedParty(DistributedObject.DistributedObject):
False]]
def fillGrid(x, y, size):
for i in range(-size[1] / 2 + 1, size[1] / 2 + 1):
for j in range(-size[0] / 2 + 1, size[0] / 2 + 1):
for i in range(-size[1] // 2 + 1, size[1] // 2 + 1):
for j in range(-size[0] // 2 + 1, size[0] // 2 + 1):
self.grid[i + y][j + x] = False
for activityBase in self.partyInfo.activityList:
@ -572,12 +572,8 @@ class DistributedParty(DistributedObject.DistributedObject):
self.titleText.setColor(Vec4(*self.titleColor))
self.titleText.clearColorScale()
self.titleText.setFg(self.titleColor)
seq = Task.sequence(Task.pause(0.1), Task.pause(6.0), self.titleText.lerpColorScale(Vec4(1.0, 1.0, 1.0, 1.0), Vec4(1.0, 1.0, 1.0, 0.0), 0.5), Task(self.hideTitleTextTask))
taskMgr.add(seq, 'titleText')
def hideTitleTextTask(self, task):
self.titleText.hide()
return Task.done
seq = Sequence(Wait(0.1), Wait(6.0), self.titleText.colorScaleInterval(0.5, Vec4(1.0, 1.0, 1.0, 0.0)), Func(self.hideTitleText))
seq.start()
def hideTitleText(self):
if self.titleText:

View file

@ -262,7 +262,7 @@ class PartyCogActivity(DirectObject):
if not opening:
pos = self._doorStartPos[team]
else:
pos = (self._doorStartPos[team] + Point3(0, 0, -7.0),)
pos = (self._doorStartPos[team] + Point3(0, 0, -7.0))
ival = self._arenaDoors[team].posInterval(0.75, pos, blendType='easeIn')
self._arenaDoorIvals[team] = ival
ival.start()

View file

@ -19,14 +19,14 @@ class PartyEditorGridElement(DirectButton):
self.isDecoration = isDecoration
self.checkSoldOutAndPaidStatusAndAffordability = checkSoldOutAndPaidStatusAndAffordability
if self.isDecoration:
self.name = TTLocalizer.PartyDecorationNameDict[self.id]['editor']
self._name = TTLocalizer.PartyDecorationNameDict[self.id]['editor']
colorList = ((1.0, 1.0, 1.0, 1.0),
(0.0, 0.0, 1.0, 1.0),
(0.0, 1.0, 1.0, 1.0),
(0.5, 0.5, 0.5, 1.0))
self.geom = self.partyEditor.partyPlanner.gui.find('**/%s' % PartyGlobals.DecorationInformationDict[self.id]['gridAsset'])
else:
self.name = TTLocalizer.PartyActivityNameDict[self.id]['editor']
self._name = TTLocalizer.PartyActivityNameDict[self.id]['editor']
colorList = ((1.0, 1.0, 1.0, 1.0),
(0.0, 1.0, 0.0, 1.0),
(1.0, 1.0, 0.0, 1.0),
@ -42,15 +42,15 @@ class PartyEditorGridElement(DirectButton):
self.defineoptions(kw, optiondefs)
DirectButton.__init__(self, self.partyEditor.parent)
self.initialiseoptions(PartyEditorGridElement)
self.setName('%sGridElement' % self.name)
self.setName('%sGridElement' % self._name)
self.bind(DirectGuiGlobals.B1PRESS, self.clicked)
self.bind(DirectGuiGlobals.B1RELEASE, self.released)
self.bind(DirectGuiGlobals.ENTER, self.mouseEnter)
self.bind(DirectGuiGlobals.EXIT, self.mouseExit)
self.uprightNodePath = NodePath('%sUpright' % self.name)
self.uprightNodePath = NodePath('%sUpright' % self._name)
self.uprightNodePath.reparentTo(self)
rollOverZOffset = self.getGridSize()[1] / 30.0
self.rolloverTitle = DirectLabel(relief=None, parent=self.uprightNodePath, pos=Point3(0.0, 0.0, rollOverZOffset), text=self.name, text_fg=(1.0, 1.0, 1.0, 1.0), text_shadow=(0.0, 0.0, 0.0, 1.0), text_scale=0.075)
self.rolloverTitle = DirectLabel(relief=None, parent=self.uprightNodePath, pos=Point3(0.0, 0.0, rollOverZOffset), text=self._name, text_fg=(1.0, 1.0, 1.0, 1.0), text_shadow=(0.0, 0.0, 0.0, 1.0), text_scale=0.075)
self.rolloverTitle.stash()
self.stash()
self.overValidSquare = False
@ -84,11 +84,11 @@ class PartyEditorGridElement(DirectButton):
self.getCorrectRotation())
def attach(self, mouseEvent):
PartyEditorGridElement.notify.debug('attached grid element %s' % self.name)
taskMgr.remove('gridElementDragTask%s' % self.name)
PartyEditorGridElement.notify.debug('attached grid element %s' % self._name)
taskMgr.remove('gridElementDragTask%s' % self._name)
vWidget2render2d = self.getPos(render2d)
vMouse2render2d = Point3(mouseEvent.getMouse()[0], 0, mouseEvent.getMouse()[1])
taskMgr.add(self.elementDragTask, 'gridElementDragTask%s' % self.name)
taskMgr.add(self.elementDragTask, 'gridElementDragTask%s' % self._name)
self.unstash()
self.rolloverTitle.unstash()
self.uprightNodePath.reparentTo(self)
@ -198,7 +198,7 @@ class PartyEditorGridElement(DirectButton):
return self.partyEditor.partyEditorGrid.getGridSquare(x, y)
def detach(self, mouseEvent):
taskMgr.remove('gridElementDragTask%s' % self.name)
taskMgr.remove('gridElementDragTask%s' % self._name)
self.rolloverTitle.stash()
if self.overValidSquare:
self.partyEditor.partyEditorGrid.registerNewElement(self, self.centerGridSquare, self.getGridSize())
@ -237,14 +237,14 @@ class PartyEditorGridElement(DirectButton):
return
def clicked(self, mouseEvent):
PartyEditorGridElement.notify.debug('clicked grid element %s' % self.name)
PartyEditorGridElement.notify.debug('clicked grid element %s' % self._name)
if self.centerGridSquare is not None:
self.attach(mouseEvent)
self.partyEditor.partyEditorGrid.removeElement(self.centerGridSquare, self.getGridSize())
return
def released(self, mouseEvent):
PartyEditorGridElement.notify.debug('released grid element %s' % self.name)
PartyEditorGridElement.notify.debug('released grid element %s' % self._name)
self.detach(mouseEvent)
def mouseEnter(self, mouseEvent):

View file

@ -16,7 +16,7 @@ class PartyEditorListElement(DirectButton):
self.unreleased = self.calcUnreleased(id)
self.comingSoonTextScale = 1.0
if self.isDecoration:
self.name = TTLocalizer.PartyDecorationNameDict[self.id]['editor']
self._name = TTLocalizer.PartyDecorationNameDict[self.id]['editor']
colorList = ((1.0, 0.0, 1.0, 1.0),
(0.0, 0.0, 1.0, 1.0),
(0.0, 1.0, 1.0, 1.0),
@ -44,7 +44,7 @@ class PartyEditorListElement(DirectButton):
geom_pos = (0.0, 0.0, -3.9)
scale = Vec3(0.05, 0.0001, 0.05)
else:
self.name = TTLocalizer.PartyActivityNameDict[self.id]['editor']
self._name = TTLocalizer.PartyActivityNameDict[self.id]['editor']
colorList = ((0.0, 0.0, 0.0, 1.0),
(0.0, 1.0, 0.0, 1.0),
(1.0, 1.0, 0.0, 1.0),
@ -66,7 +66,7 @@ class PartyEditorListElement(DirectButton):
self.defineoptions(kw, optiondefs)
DirectButton.__init__(self, self.partyEditor.elementList)
self.initialiseoptions(PartyEditorListElement)
self.setName('%sListElement' % self.name)
self.setName('%sListElement' % self._name)
self.setScale(scale)
self.bind(DirectGuiGlobals.B1PRESS, self.clicked)
self.bind(DirectGuiGlobals.B1RELEASE, self.released)
@ -104,15 +104,15 @@ class PartyEditorListElement(DirectButton):
gridElement.removeFromGrid()
def elementSelectedFromList(self):
PartyEditorListElement.notify.debug('Element %s clicked' % self.name)
PartyEditorListElement.notify.debug('Element %s clicked' % self._name)
if self.isDecoration:
self.partyEditor.partyPlanner.elementDescriptionNode.setText(TTLocalizer.PartyDecorationNameDict[self.id]['description'])
self.partyEditor.partyPlanner.elementPriceNode.setText('%d %s' % (PartyGlobals.DecorationInformationDict[self.id]['cost'], TTLocalizer.PartyPlannerBeans))
self.partyEditor.partyPlanner.elementTitleLabel['text'] = self.name
self.partyEditor.partyPlanner.elementTitleLabel['text'] = self._name
else:
self.partyEditor.partyPlanner.elementDescriptionNode.setText(TTLocalizer.PartyActivityNameDict[self.id]['description'])
self.partyEditor.partyPlanner.elementPriceNode.setText('%d %s' % (PartyGlobals.ActivityInformationDict[self.id]['cost'], TTLocalizer.PartyPlannerBeans))
self.partyEditor.partyPlanner.elementTitleLabel['text'] = self.name
self.partyEditor.partyPlanner.elementTitleLabel['text'] = self._name
self.checkSoldOutAndPaidStatusAndAffordability()
def checkSoldOutAndPaidStatusAndAffordability(self):
@ -172,7 +172,7 @@ class PartyEditorListElement(DirectButton):
self.partyEditor.partyPlanner.elementBuyButton['state'] = DirectGuiGlobals.DISABLED
def clicked(self, mouseEvent):
PartyEditorListElement.notify.debug("Element %s's icon was clicked" % self.name)
PartyEditorListElement.notify.debug("Element %s's icon was clicked" % self._name)
self.partyEditor.listElementClicked()
for i in range(len(self.partyEditorGridElements)):
if not self.partyEditorGridElements[i].overValidSquare:
@ -191,7 +191,7 @@ class PartyEditorListElement(DirectButton):
return False
def released(self, mouseEvent):
PartyEditorListElement.notify.debug("Element %s's icon was released" % self.name)
PartyEditorListElement.notify.debug("Element %s's icon was released" % self._name)
self.partyEditor.listElementReleased()
if self.activeGridElementIndex != -1:
self.partyEditorGridElements[self.activeGridElementIndex].detach(mouseEvent)

View file

@ -8,6 +8,7 @@ from toontown.toonbase import TTLocalizer
from toontown.toontowngui import TTDialog
from toontown.parties import PartyGlobals
from toontown.parties import PartyUtils
import functools
class PublicPartyGui(DirectFrame):
notify = directNotify.newCategory('PublicPartyGui')
@ -80,7 +81,7 @@ class PublicPartyGui(DirectFrame):
else:
return 1
sortedList.sort(cmp, reverse=True)
sortedList.sort(key=functools.cmp_to_key(cmp), reverse=True)
indexToCut = -1
for index, partyTuple in enumerate(sortedList):
numberOfGuests = partyTuple[2]

View file

@ -10,12 +10,12 @@ class ScrolledFriendList(DirectScrolledList):
def __init__(self, parent, gui, clickCallback = None, makeItemsCheckBoxes = False):
self.makeItemsCheckBoxes = makeItemsCheckBoxes
self.clickCallback = clickCallback
self.parent = parent
self._parent = parent
self.gui = gui
self.scrollSpeed = 1
DirectScrolledList.__init__(self, parent=parent, relief=None, incButton_image=(self.gui.find('**/inviteButtonDown_up'), self.gui.find('**/inviteButtonDown_down'), self.gui.find('**/inviteButtonDown_rollover')), incButton_relief=None, incButton_pos=(0.0, 0.0, -0.03), incButton_image3_color=Vec4(0.6, 0.6, 0.6, 0.6), decButton_image=(self.gui.find('**/inviteButtonUp_up'), self.gui.find('**/inviteButtonUp_down'), self.gui.find('**/inviteButtonUp_rollover')), decButton_relief=None, decButton_pos=(0.0, 0.0, 0.02), decButton_image3_color=Vec4(0.6, 0.6, 0.6, 0.6), itemFrame_relief=None, forceHeight=0.084, numItemsVisible=8, items=[], incButtonCallback=self.scrollButtonPressed, decButtonCallback=self.scrollButtonPressed, itemFrame_pos=(0.0, 0.0, -0.01))
self.incButtonCallback = None
self.decButtonCallback = None
self._DirectScrolledList__incButtonCallback = None
self._DirectScrolledList__decButtonCallback = None
self.setForceHeight()
return

View file

@ -4,7 +4,7 @@ from toontown.toon import NPCToons
from toontown.toonbase import TTLocalizer
from direct.task.Task import Task
from direct.distributed import ClockDelta
from pandac.PandaModules import Point3
from panda3d.core import Point3, Quat
from panda3d.otp import CFSpeech, CFTimeout
from toontown.toontowngui import TTDialog
from otp.otpbase import OTPLocalizer
@ -21,12 +21,15 @@ class DistributedNPCPartyPerson(DistributedNPCToonBase):
self.button = None
self.askGui = None
self.teaserDialog = None
self.lerpCameraSeq = None
return
def disable(self):
self.ignoreAll()
taskMgr.remove(self.uniqueName('popupAskGUI'))
taskMgr.remove(self.uniqueName('lerpCamera'))
if self.lerpCameraSeq:
self.lerpCameraSeq.finish()
self.lerpCameraSeq = None
self.av = None
if self.isInteractingWithLocalToon:
base.localAvatar.posCamera(0, 0)
@ -85,7 +88,9 @@ class DistributedNPCPartyPerson(DistributedNPCToonBase):
def resetPartyPerson(self):
self.ignoreAll()
taskMgr.remove(self.uniqueName('popupAskGUI'))
taskMgr.remove(self.uniqueName('lerpCamera'))
if self.lerpCameraSeq:
self.lerpCameraSeq.finish()
self.lerpCameraSeq = None
if self.askGui:
self.askGui.hide()
self.show()
@ -105,7 +110,9 @@ class DistributedNPCPartyPerson(DistributedNPCToonBase):
if mode == NPCToons.PARTY_MOVIE_CLEAR:
return
if mode == NPCToons.PARTY_MOVIE_TIMEOUT:
taskMgr.remove(self.uniqueName('lerpCamera'))
if self.lerpCameraSeq:
self.lerpCameraSeq.finish()
self.lerpCameraSeq = None
if self.isInteractingWithLocalToon:
self.ignore(self.planPartyQuestionGuiDoneEvent)
if self.askGui:
@ -123,7 +130,10 @@ class DistributedNPCPartyPerson(DistributedNPCToonBase):
self.setupAvatars(self.av)
if self.isInteractingWithLocalToon:
camera.wrtReparentTo(render)
camera.lerpPosHpr(-5, 9, base.localAvatar.getHeight() - 0.5, -150, -2, 0, 1, other=self, blendType='easeOut', task=self.uniqueName('lerpCamera'))
quat = Quat()
quat.setHpr((-150, -2, 0))
self.lerpCameraSeq = camera.posQuatInterval(1, Point3(-5, 9, base.localAvatar.getHeight() - 0.5), quat, other=self, blendType='easeOut', name=self.uniqueName('lerpCamera'))
self.lerpCameraSeq.start()
taskMgr.doMethodLater(1.0, self.popupAskGUI, self.uniqueName('popupAskGUI'))
else:
self.setChatAbsolute(TTLocalizer.PartyDoYouWantToPlan, CFSpeech | CFTimeout)
@ -134,7 +144,7 @@ class DistributedNPCPartyPerson(DistributedNPCToonBase):
if self.isInteractingWithLocalToon:
base.localAvatar.aboutToPlanParty = True
base.cr.partyManager.setPartyPlannerStyle(self.style)
base.cr.partyManager.setPartyPlannerName(self.name)
base.cr.partyManager.setPartyPlannerName(self._name)
base.localAvatar.creatingNewPartyWithMagicWord = False
loaderId = 'safeZoneLoader'
whereId = 'party'