mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2025-01-09 17:53:50 +00:00
Fix party bugs
but def not all
This commit is contained in:
parent
9c013c70cd
commit
913f29b745
7 changed files with 140 additions and 35 deletions
|
@ -1,4 +1,4 @@
|
||||||
# src #
|
# Toontown Stride - src #
|
||||||
|
|
||||||
The source code for Toontown Stride.
|
The source code for Toontown Stride.
|
||||||
|
|
||||||
|
|
|
@ -123,6 +123,26 @@ class Decoration(NodePath):
|
||||||
balloonRight.reparentTo(balloonRightLocator)
|
balloonRight.reparentTo(balloonRightLocator)
|
||||||
self.heartBanner.loop('idle')
|
self.heartBanner.loop('idle')
|
||||||
self.heartBanner.reparentTo(self)
|
self.heartBanner.reparentTo(self)
|
||||||
|
elif self.name == 'Hydra' or self.name == 'StageWinter':
|
||||||
|
if self.name == 'StageWinter':
|
||||||
|
self.hydra = Actor.Actor('phase_13/models/parties/tt_r_ara_pty_winterProps', {'dance': 'phase_13/models/parties/tt_a_ara_pty_hydra_dance'})
|
||||||
|
else:
|
||||||
|
self.hydra = Actor.Actor('phase_13/models/parties/tt_a_ara_pty_hydra_default', {'dance': 'phase_13/models/parties/tt_a_ara_pty_hydra_dance'})
|
||||||
|
st = random.randint(0, 10)
|
||||||
|
animIval = ActorInterval(self.hydra, 'dance')
|
||||||
|
animIvalDur = animIval.getDuration()
|
||||||
|
self.decSfx = loader.loadSfx('phase_13/audio/sfx/tt_s_ara_pty_propsShow_dance.ogg')
|
||||||
|
soundIval = SoundInterval(self.decSfx, node=self.hydra, listenerNode=base.localAvatar, volume=PartyGlobals.DECORATION_VOLUME, cutOff=PartyGlobals.DECORATION_CUTOFF, duration=animIvalDur)
|
||||||
|
self.animSeq = Parallel(animIval, soundIval)
|
||||||
|
self.animSeq.loop(st)
|
||||||
|
collisions = self.hydra.find('**/*collision*')
|
||||||
|
collisions.setPos(0, 0, -5)
|
||||||
|
self.hydra.flattenStrong()
|
||||||
|
self.hydra.reparentTo(self)
|
||||||
|
if self.name == 'StageWinter':
|
||||||
|
stageBounds = self.hydra.find('**/stage').node().getBounds()
|
||||||
|
self.hydra.node().setBounds(stageBounds)
|
||||||
|
self.hydra.node().setFinal(1)
|
||||||
elif self.name == 'TubeCogVictory':
|
elif self.name == 'TubeCogVictory':
|
||||||
self.tubeCog = Actor.Actor('phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_default', {'wave': 'phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_wave'})
|
self.tubeCog = Actor.Actor('phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_default', {'wave': 'phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_wave'})
|
||||||
st = random.randint(0, 10)
|
st = random.randint(0, 10)
|
||||||
|
@ -159,6 +179,10 @@ class Decoration(NodePath):
|
||||||
self.decorationModel = loader.loadModel('phase_13/models/parties/tt_m_ara_pty_cogDoodleVictory')
|
self.decorationModel = loader.loadModel('phase_13/models/parties/tt_m_ara_pty_cogDoodleVictory')
|
||||||
self.decorationModel.reparentTo(self)
|
self.decorationModel.reparentTo(self)
|
||||||
self.decorationShadow = self.setupAnimSeq()
|
self.decorationShadow = self.setupAnimSeq()
|
||||||
|
elif self.name == 'CogIceCreamVictory':
|
||||||
|
self.decorationModel = loader.loadModel('phase_13/models/parties/tt_m_ara_pty_cogIceCreamVictory')
|
||||||
|
self.decorationModel.reparentTo(self)
|
||||||
|
self.decorationShadow = self.setupAnimSeq()
|
||||||
elif self.name == 'cogIceCreamWinter':
|
elif self.name == 'cogIceCreamWinter':
|
||||||
self.decorationModel = loader.loadModel('phase_13/models/parties/tt_m_ara_pty_cogIceCreamWinter')
|
self.decorationModel = loader.loadModel('phase_13/models/parties/tt_m_ara_pty_cogIceCreamWinter')
|
||||||
self.decorationModel.reparentTo(self)
|
self.decorationModel.reparentTo(self)
|
||||||
|
@ -223,6 +247,12 @@ class Decoration(NodePath):
|
||||||
del self.globeSphere
|
del self.globeSphere
|
||||||
self.partyGlobe.removeNode()
|
self.partyGlobe.removeNode()
|
||||||
del self.partyGlobe
|
del self.partyGlobe
|
||||||
|
elif self.name == 'Hydra' or self.name == 'StageWinter':
|
||||||
|
self.cleanUpAnimSequences()
|
||||||
|
self.hydra.removeNode()
|
||||||
|
del self.hydra
|
||||||
|
if hasattr(self, 'decSfx'):
|
||||||
|
del self.decSfx
|
||||||
elif self.name == 'TubeCogVictory':
|
elif self.name == 'TubeCogVictory':
|
||||||
self.cleanUpAnimSequences()
|
self.cleanUpAnimSequences()
|
||||||
self.tubeCog.removeNode()
|
self.tubeCog.removeNode()
|
||||||
|
@ -244,7 +274,7 @@ class Decoration(NodePath):
|
||||||
elif self.name == 'CannonVictory':
|
elif self.name == 'CannonVictory':
|
||||||
self.cannonVictory.removeNode()
|
self.cannonVictory.removeNode()
|
||||||
del self.cannonVictory
|
del self.cannonVictory
|
||||||
elif self.name == 'CogStatueVictory' or self.name == 'cogIceCreamWinter' or self.name == 'CogStatueWinter':
|
elif self.name == 'CogIceCreamVictory' or self.name == 'CogStatueVictory' or self.name == 'cogIceCreamWinter' or self.name == 'CogStatueWinter':
|
||||||
self.cleanUpAnimSequences()
|
self.cleanUpAnimSequences()
|
||||||
self.decorationModel.removeNode()
|
self.decorationModel.removeNode()
|
||||||
self.decorationShadow.removeNode()
|
self.decorationShadow.removeNode()
|
||||||
|
|
|
@ -258,10 +258,6 @@ class DistributedPartyActivity(DistributedObject.DistributedObject):
|
||||||
self.signFlatWithNote.stash()
|
self.signFlatWithNote.stash()
|
||||||
self.signTextLocator.stash()
|
self.signTextLocator.stash()
|
||||||
|
|
||||||
def unloadSign(self):
|
|
||||||
self.sign.removeNode()
|
|
||||||
del self.sign
|
|
||||||
|
|
||||||
def loadLever(self):
|
def loadLever(self):
|
||||||
self.lever = self.root.attachNewNode('%sLever' % self.activityName)
|
self.lever = self.root.attachNewNode('%sLever' % self.activityName)
|
||||||
self.leverModel = self.party.defaultLeverModel.copyTo(self.lever)
|
self.leverModel = self.party.defaultLeverModel.copyTo(self.lever)
|
||||||
|
@ -413,9 +409,8 @@ class DistributedPartyActivity(DistributedObject.DistributedObject):
|
||||||
self._disableCollisions()
|
self._disableCollisions()
|
||||||
self.signModel.removeNode()
|
self.signModel.removeNode()
|
||||||
del self.signModel
|
del self.signModel
|
||||||
if hasattr(self, 'sign'):
|
self.sign.removeNode()
|
||||||
self.sign.removeNode()
|
del self.sign
|
||||||
del self.sign
|
|
||||||
self.ignoreAll()
|
self.ignoreAll()
|
||||||
if self.wantLever:
|
if self.wantLever:
|
||||||
self.unloadLever()
|
self.unloadLever()
|
||||||
|
|
|
@ -47,15 +47,30 @@ class PartyEditor(DirectObject, FSM):
|
||||||
self.partyPlanner.gui.find('**/activitiesButtonDown_rollover'),
|
self.partyPlanner.gui.find('**/activitiesButtonDown_rollover'),
|
||||||
self.partyPlanner.gui.find('**/activitiesButtonDown_inactive')), incButton_relief=None, incButton_pos=(-0.05, 0.0, -0.94), itemFrame_pos=(pos[0], pos[1], pos[2] + 0.04), itemFrame_relief=None, numItemsVisible=1, items=[])
|
self.partyPlanner.gui.find('**/activitiesButtonDown_inactive')), incButton_relief=None, incButton_pos=(-0.05, 0.0, -0.94), itemFrame_pos=(pos[0], pos[1], pos[2] + 0.04), itemFrame_relief=None, numItemsVisible=1, items=[])
|
||||||
holidayIds = base.cr.newsManager.getHolidayIdList()
|
holidayIds = base.cr.newsManager.getHolidayIdList()
|
||||||
|
isWinter = ToontownGlobals.WINTER_DECORATIONS in holidayIds or ToontownGlobals.WACKY_WINTER_DECORATIONS in holidayIds
|
||||||
|
isVictory = ToontownGlobals.VICTORY_PARTY_HOLIDAY in holidayIds
|
||||||
|
isValentine = ToontownGlobals.VALENTINES_DAY in holidayIds
|
||||||
for activityId in PartyGlobals.PartyEditorActivityOrder:
|
for activityId in PartyGlobals.PartyEditorActivityOrder:
|
||||||
pele = PartyEditorListElement(self, activityId)
|
if not isVictory and activityId in PartyGlobals.VictoryPartyActivityIds or not isWinter and activityId in PartyGlobals.WinterPartyActivityIds or not isValentine and activityId in PartyGlobals.ValentinePartyActivityIds:
|
||||||
self.elementList.addItem(pele)
|
pass
|
||||||
if activityId == PartyGlobals.ActivityIds.PartyClock:
|
elif isVictory and activityId in PartyGlobals.VictoryPartyReplacementActivityIds or isWinter and activityId in PartyGlobals.WinterPartyReplacementActivityIds or isValentine and activityId in PartyGlobals.ValentinePartyReplacementActivityIds:
|
||||||
self.partyClockElement = pele
|
pass
|
||||||
|
else:
|
||||||
|
pele = PartyEditorListElement(self, activityId)
|
||||||
|
self.elementList.addItem(pele)
|
||||||
|
if activityId == PartyGlobals.ActivityIds.PartyClock:
|
||||||
|
self.partyClockElement = pele
|
||||||
|
|
||||||
for decorationId in PartyGlobals.DecorationIds:
|
for decorationId in PartyGlobals.DecorationIds:
|
||||||
pele = PartyEditorListElement(self, decorationId, isDecoration=True)
|
if not isVictory and decorationId in PartyGlobals.VictoryPartyDecorationIds or not isWinter and decorationId in PartyGlobals.WinterPartyDecorationIds or not isValentine and decorationId in PartyGlobals.ValentinePartyDecorationIds:
|
||||||
self.elementList.addItem(pele)
|
pass
|
||||||
|
elif isVictory and decorationId in PartyGlobals.VictoryPartyReplacementDecorationIds or isValentine and decorationId in PartyGlobals.ValentinePartyReplacementDecorationIds:
|
||||||
|
pass
|
||||||
|
elif decorationId in PartyGlobals.TTSUnreleasedDecor:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
pele = PartyEditorListElement(self, decorationId, isDecoration=True)
|
||||||
|
self.elementList.addItem(pele)
|
||||||
|
|
||||||
self.elementList.refresh()
|
self.elementList.refresh()
|
||||||
self.elementList['command'] = self.scrollItemChanged
|
self.elementList['command'] = self.scrollItemChanged
|
||||||
|
@ -105,7 +120,7 @@ class PartyEditor(DirectObject, FSM):
|
||||||
|
|
||||||
self.initPartyClock()
|
self.initPartyClock()
|
||||||
if self.currentElement:
|
if self.currentElement:
|
||||||
self.currentElement.checkSoldOutAndAffordability()
|
self.currentElement.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
|
|
||||||
def buyCurrentElement(self):
|
def buyCurrentElement(self):
|
||||||
if self.currentElement:
|
if self.currentElement:
|
||||||
|
@ -136,7 +151,7 @@ class PartyEditor(DirectObject, FSM):
|
||||||
self.elementList.scrollTo(0)
|
self.elementList.scrollTo(0)
|
||||||
self.elementList['items'][0].elementSelectedFromList()
|
self.elementList['items'][0].elementSelectedFromList()
|
||||||
self.currentElement = self.elementList['items'][self.elementList.getSelectedIndex()]
|
self.currentElement = self.elementList['items'][self.elementList.getSelectedIndex()]
|
||||||
self.currentElement.checkSoldOutAndAffordability()
|
self.currentElement.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
self.partyPlanner.instructionLabel['text'] = TTLocalizer.PartyPlannerEditorInstructionsIdle
|
self.partyPlanner.instructionLabel['text'] = TTLocalizer.PartyPlannerEditorInstructionsIdle
|
||||||
self.updateCostsAndBank()
|
self.updateCostsAndBank()
|
||||||
self.handleMutuallyExclusiveActivities()
|
self.handleMutuallyExclusiveActivities()
|
||||||
|
|
|
@ -13,11 +13,11 @@ from toontown.parties import PartyUtils
|
||||||
class PartyEditorGridElement(DirectButton):
|
class PartyEditorGridElement(DirectButton):
|
||||||
notify = directNotify.newCategory('PartyEditorGridElement')
|
notify = directNotify.newCategory('PartyEditorGridElement')
|
||||||
|
|
||||||
def __init__(self, partyEditor, id, isDecoration, checkSoldOutAndAffordability, **kw):
|
def __init__(self, partyEditor, id, isDecoration, checkSoldOutAndPaidStatusAndAffordability, **kw):
|
||||||
self.partyEditor = partyEditor
|
self.partyEditor = partyEditor
|
||||||
self.id = id
|
self.id = id
|
||||||
self.isDecoration = isDecoration
|
self.isDecoration = isDecoration
|
||||||
self.checkSoldOutAndAffordability = checkSoldOutAndAffordability
|
self.checkSoldOutAndPaidStatusAndAffordability = checkSoldOutAndPaidStatusAndAffordability
|
||||||
if self.isDecoration:
|
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),
|
colorList = ((1.0, 1.0, 1.0, 1.0),
|
||||||
|
@ -218,7 +218,7 @@ class PartyEditorGridElement(DirectButton):
|
||||||
self.partyEditor.handleMutuallyExclusiveActivities()
|
self.partyEditor.handleMutuallyExclusiveActivities()
|
||||||
else:
|
else:
|
||||||
self.stash()
|
self.stash()
|
||||||
self.checkSoldOutAndAffordability()
|
self.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
return
|
return
|
||||||
|
|
||||||
def placeInPartyGrounds(self, desiredXY = None):
|
def placeInPartyGrounds(self, desiredXY = None):
|
||||||
|
@ -230,7 +230,7 @@ class PartyEditorGridElement(DirectButton):
|
||||||
self.partyEditor.partyEditorGrid.registerNewElement(self, self.centerGridSquare, self.getGridSize())
|
self.partyEditor.partyEditorGrid.registerNewElement(self, self.centerGridSquare, self.getGridSize())
|
||||||
self.partyEditor.updateCostsAndBank()
|
self.partyEditor.updateCostsAndBank()
|
||||||
self.partyEditor.partyPlanner.instructionLabel['text'] = TTLocalizer.PartyPlannerEditorInstructionsPartyGrounds
|
self.partyEditor.partyPlanner.instructionLabel['text'] = TTLocalizer.PartyPlannerEditorInstructionsPartyGrounds
|
||||||
self.checkSoldOutAndAffordability()
|
self.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -13,6 +13,8 @@ class PartyEditorListElement(DirectButton):
|
||||||
self.partyEditor = partyEditor
|
self.partyEditor = partyEditor
|
||||||
self.id = id
|
self.id = id
|
||||||
self.isDecoration = isDecoration
|
self.isDecoration = isDecoration
|
||||||
|
self.unreleased = self.calcUnreleased(id)
|
||||||
|
self.comingSoonTextScale = 1.0
|
||||||
if self.isDecoration:
|
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),
|
colorList = ((1.0, 0.0, 1.0, 1.0),
|
||||||
|
@ -20,8 +22,10 @@ class PartyEditorListElement(DirectButton):
|
||||||
(0.0, 1.0, 1.0, 1.0),
|
(0.0, 1.0, 1.0, 1.0),
|
||||||
(0.5, 0.5, 0.5, 1.0))
|
(0.5, 0.5, 0.5, 1.0))
|
||||||
assetName = PartyGlobals.DecorationIds.getString(self.id)
|
assetName = PartyGlobals.DecorationIds.getString(self.id)
|
||||||
|
if assetName == 'Hydra':
|
||||||
|
assetName = 'StageSummer'
|
||||||
geom = self.partyEditor.decorationModels.find('**/partyDecoration_%s' % assetName)
|
geom = self.partyEditor.decorationModels.find('**/partyDecoration_%s' % assetName)
|
||||||
if geom.isEmpty():
|
if geom.isEmpty() or self.unreleased:
|
||||||
helpGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_help')
|
helpGui = loader.loadModel('phase_3.5/models/gui/tt_m_gui_brd_help')
|
||||||
helpImageList = (helpGui.find('**/tt_t_gui_brd_helpUp'),
|
helpImageList = (helpGui.find('**/tt_t_gui_brd_helpUp'),
|
||||||
helpGui.find('**/tt_t_gui_brd_helpDown'),
|
helpGui.find('**/tt_t_gui_brd_helpDown'),
|
||||||
|
@ -31,11 +35,12 @@ class PartyEditorListElement(DirectButton):
|
||||||
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
||||||
scale = Vec3(2.5, 2.5, 2.5)
|
scale = Vec3(2.5, 2.5, 2.5)
|
||||||
geom_pos = (0.0, 0.0, 0.0)
|
geom_pos = (0.0, 0.0, 0.0)
|
||||||
|
self.comingSoonTextScale = 0.035
|
||||||
else:
|
else:
|
||||||
geom_pos = (0.0, 0.0, -3.0)
|
geom_pos = (0.0, 0.0, -3.0)
|
||||||
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
||||||
scale = Vec3(0.06, 0.0001, 0.06)
|
scale = Vec3(0.06, 0.0001, 0.06)
|
||||||
if self.id in [PartyGlobals.DecorationIds.CogStatueVictory, PartyGlobals.DecorationIds.TubeCogVictory]:
|
if self.id in [PartyGlobals.DecorationIds.CogStatueVictory, PartyGlobals.DecorationIds.TubeCogVictory, PartyGlobals.DecorationIds.CogIceCreamVictory]:
|
||||||
geom_pos = (0.0, 0.0, -3.9)
|
geom_pos = (0.0, 0.0, -3.9)
|
||||||
scale = Vec3(0.05, 0.0001, 0.05)
|
scale = Vec3(0.05, 0.0001, 0.05)
|
||||||
else:
|
else:
|
||||||
|
@ -53,6 +58,7 @@ class PartyEditorListElement(DirectButton):
|
||||||
scale = 0.35
|
scale = 0.35
|
||||||
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
geom3_color = (0.5, 0.5, 0.5, 1.0)
|
||||||
geom_pos = (0.0, 0.0, 0.0)
|
geom_pos = (0.0, 0.0, 0.0)
|
||||||
|
self.comingSoonTextScale = 0.25
|
||||||
optiondefs = (('geom', geom, None),
|
optiondefs = (('geom', geom, None),
|
||||||
('geom3_color', geom3_color, None),
|
('geom3_color', geom3_color, None),
|
||||||
('geom_pos', geom_pos, None),
|
('geom_pos', geom_pos, None),
|
||||||
|
@ -67,13 +73,30 @@ class PartyEditorListElement(DirectButton):
|
||||||
self.partyEditorGridElements = []
|
self.partyEditorGridElements = []
|
||||||
if self.isDecoration:
|
if self.isDecoration:
|
||||||
for i in xrange(PartyGlobals.DecorationInformationDict[self.id]['limitPerParty']):
|
for i in xrange(PartyGlobals.DecorationInformationDict[self.id]['limitPerParty']):
|
||||||
self.partyEditorGridElements.append(PartyEditorGridElement(self.partyEditor, self.id, self.isDecoration, self.checkSoldOutAndAffordability))
|
self.partyEditorGridElements.append(PartyEditorGridElement(self.partyEditor, self.id, self.isDecoration, self.checkSoldOutAndPaidStatusAndAffordability))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
for i in xrange(PartyGlobals.ActivityInformationDict[self.id]['limitPerParty']):
|
for i in xrange(PartyGlobals.ActivityInformationDict[self.id]['limitPerParty']):
|
||||||
self.partyEditorGridElements.append(PartyEditorGridElement(self.partyEditor, self.id, self.isDecoration, self.checkSoldOutAndAffordability))
|
self.partyEditorGridElements.append(PartyEditorGridElement(self.partyEditor, self.id, self.isDecoration, self.checkSoldOutAndPaidStatusAndAffordability))
|
||||||
|
|
||||||
self.activeGridElementIndex = -1
|
self.activeGridElementIndex = -1
|
||||||
|
self.adjustForUnreleased()
|
||||||
|
return
|
||||||
|
|
||||||
|
def calcUnreleased(self, id):
|
||||||
|
if base.cr.partyManager.allowUnreleasedClient():
|
||||||
|
self.unreleased = False
|
||||||
|
elif self.isDecoration:
|
||||||
|
self.unreleased = id in PartyGlobals.UnreleasedDecorationIds
|
||||||
|
else:
|
||||||
|
self.unreleased = id in PartyGlobals.UnreleasedActivityIds
|
||||||
|
return self.unreleased
|
||||||
|
|
||||||
|
def adjustForUnreleased(self):
|
||||||
|
if self.unreleased:
|
||||||
|
textScale = self.comingSoonTextScale
|
||||||
|
comingSoon = DirectLabel(parent=self, text=TTLocalizer.PartyPlannerComingSoon, text_scale=textScale, text_fg=(1.0, 0, 0, 1.0), text_shadow=(0, 0, 0, 1), relief=None)
|
||||||
|
self['state'] = DirectGuiGlobals.DISABLED
|
||||||
return
|
return
|
||||||
|
|
||||||
def clearPartyGrounds(self):
|
def clearPartyGrounds(self):
|
||||||
|
@ -90,12 +113,12 @@ class PartyEditorListElement(DirectButton):
|
||||||
self.partyEditor.partyPlanner.elementDescriptionNode.setText(TTLocalizer.PartyActivityNameDict[self.id]['description'])
|
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.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.checkSoldOutAndAffordability()
|
self.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
|
|
||||||
def checkSoldOutAndAffordability(self):
|
def checkSoldOutAndPaidStatusAndAffordability(self):
|
||||||
if self.partyEditor.currentElement != self:
|
if self.partyEditor.currentElement != self:
|
||||||
if self.partyEditor.currentElement is not None:
|
if self.partyEditor.currentElement is not None:
|
||||||
self.partyEditor.currentElement.checkSoldOutAndAffordability()
|
self.partyEditor.currentElement.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
return
|
return
|
||||||
if self.isDecoration:
|
if self.isDecoration:
|
||||||
infoDict = PartyGlobals.DecorationInformationDict
|
infoDict = PartyGlobals.DecorationInformationDict
|
||||||
|
@ -134,6 +157,10 @@ class PartyEditorListElement(DirectButton):
|
||||||
self['state'] = DirectGuiGlobals.NORMAL
|
self['state'] = DirectGuiGlobals.NORMAL
|
||||||
self.partyEditor.partyPlanner.elementBuyButton['text'] = TTLocalizer.PartyPlannerBuy
|
self.partyEditor.partyPlanner.elementBuyButton['text'] = TTLocalizer.PartyPlannerBuy
|
||||||
self.partyEditor.partyPlanner.elementBuyButton['state'] = DirectGuiGlobals.NORMAL
|
self.partyEditor.partyPlanner.elementBuyButton['state'] = DirectGuiGlobals.NORMAL
|
||||||
|
if self.unreleased:
|
||||||
|
self['state'] = DirectGuiGlobals.DISABLED
|
||||||
|
self.partyEditor.partyPlanner.elementBuyButton['text'] = TTLocalizer.PartyPlannerCantBuy
|
||||||
|
self.partyEditor.partyPlanner.elementBuyButton['state'] = DirectGuiGlobals.DISABLED
|
||||||
|
|
||||||
def clicked(self, mouseEvent):
|
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)
|
||||||
|
@ -151,7 +178,7 @@ class PartyEditorListElement(DirectButton):
|
||||||
self.activeGridElementIndex = i
|
self.activeGridElementIndex = i
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
self.checkSoldOutAndAffordability()
|
self.checkSoldOutAndPaidStatusAndAffordability()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def released(self, mouseEvent):
|
def released(self, mouseEvent):
|
||||||
|
|
|
@ -70,10 +70,10 @@ ChangePartyFieldErrorCode = PythonUtil.Enum(('AllOk',
|
||||||
'AlreadyRefunded'))
|
'AlreadyRefunded'))
|
||||||
ActivityTypes = PythonUtil.Enum(('HostInitiated', 'GuestInitiated', 'Continuous'))
|
ActivityTypes = PythonUtil.Enum(('HostInitiated', 'GuestInitiated', 'Continuous'))
|
||||||
PartyGateDenialReasons = PythonUtil.Enum(('Unavailable', 'Full'))
|
PartyGateDenialReasons = PythonUtil.Enum(('Unavailable', 'Full'))
|
||||||
ActivityIds = PythonUtil.Enum(('PartyCatch',
|
ActivityIds = PythonUtil.Enum(('PartyJukebox',
|
||||||
'PartyJukebox',
|
|
||||||
'PartyCannon',
|
'PartyCannon',
|
||||||
'PartyTrampoline',
|
'PartyTrampoline',
|
||||||
|
'PartyCatch',
|
||||||
'PartyDance',
|
'PartyDance',
|
||||||
'PartyTugOfWar',
|
'PartyTugOfWar',
|
||||||
'PartyFireworks',
|
'PartyFireworks',
|
||||||
|
@ -110,6 +110,14 @@ PartyEditorActivityOrder = [ ActivityIds.PartyClock,
|
||||||
ActivityIds.PartyCog,
|
ActivityIds.PartyCog,
|
||||||
ActivityIds.PartyWinterCog,
|
ActivityIds.PartyWinterCog,
|
||||||
ActivityIds.PartyFireworks]
|
ActivityIds.PartyFireworks]
|
||||||
|
UnreleasedActivityIds = (ActivityIds.PartyWinterCog,
|
||||||
|
ActivityIds.PartyValentineJukebox,
|
||||||
|
ActivityIds.PartyValentineJukebox40,
|
||||||
|
ActivityIds.PartyValentineTrampoline,
|
||||||
|
ActivityIds.PartyWinterTrampoline,
|
||||||
|
ActivityIds.PartyWinterCatch,
|
||||||
|
ActivityIds.PartyValentineDance,
|
||||||
|
ActivityIds.PartyValentineDance20)
|
||||||
MutuallyExclusiveActivities = ((ActivityIds.PartyJukebox, ActivityIds.PartyJukebox40),
|
MutuallyExclusiveActivities = ((ActivityIds.PartyJukebox, ActivityIds.PartyJukebox40),
|
||||||
(ActivityIds.PartyValentineJukebox, ActivityIds.PartyValentineJukebox40),
|
(ActivityIds.PartyValentineJukebox, ActivityIds.PartyValentineJukebox40),
|
||||||
(ActivityIds.PartyDance, ActivityIds.PartyDance20),
|
(ActivityIds.PartyDance, ActivityIds.PartyDance20),
|
||||||
|
@ -144,22 +152,41 @@ DecorationIds = PythonUtil.Enum(('BalloonAnvil',
|
||||||
'HeartTarget',
|
'HeartTarget',
|
||||||
'HeartBanner',
|
'HeartBanner',
|
||||||
'FlyingHeart',
|
'FlyingHeart',
|
||||||
|
'Hydra',
|
||||||
'BannerVictory',
|
'BannerVictory',
|
||||||
'CannonVictory',
|
'CannonVictory',
|
||||||
'CogStatueVictory',
|
'CogStatueVictory',
|
||||||
'TubeCogVictory',
|
'TubeCogVictory',
|
||||||
|
'CogIceCreamVictory',
|
||||||
'cogIceCreamWinter',
|
'cogIceCreamWinter',
|
||||||
'StageWinter',
|
'StageWinter',
|
||||||
'CogStatueWinter',
|
'CogStatueWinter',
|
||||||
'snowman',
|
'snowman',
|
||||||
'snowDoodle',
|
'snowDoodle',
|
||||||
'BalloonAnvilValentine'))
|
'BalloonAnvilValentine'))
|
||||||
DECORATION_VOLUME = 1.0
|
TTSUnreleasedDecor = [DecorationIds.HeartTarget,
|
||||||
DECORATION_CUTOFF = 45
|
DecorationIds.HeartBanner,
|
||||||
VictoryPartyDecorationIds = frozenset([DecorationIds.BannerVictory,
|
DecorationIds.FlyingHeart,
|
||||||
|
DecorationIds.Hydra,
|
||||||
|
DecorationIds.BannerVictory,
|
||||||
DecorationIds.CannonVictory,
|
DecorationIds.CannonVictory,
|
||||||
DecorationIds.CogStatueVictory,
|
DecorationIds.CogStatueVictory,
|
||||||
DecorationIds.TubeCogVictory])
|
DecorationIds.TubeCogVictory,
|
||||||
|
DecorationIds.CogIceCreamVictory,
|
||||||
|
DecorationIds.cogIceCreamWinter,
|
||||||
|
DecorationIds.StageWinter,
|
||||||
|
DecorationIds.CogStatueWinter,
|
||||||
|
DecorationIds.snowman,
|
||||||
|
DecorationIds.snowDoodle,
|
||||||
|
DecorationIds.BalloonAnvilValentine]
|
||||||
|
DECORATION_VOLUME = 1.0
|
||||||
|
DECORATION_CUTOFF = 45
|
||||||
|
VictoryPartyDecorationIds = frozenset([DecorationIds.Hydra,
|
||||||
|
DecorationIds.BannerVictory,
|
||||||
|
DecorationIds.CannonVictory,
|
||||||
|
DecorationIds.CogStatueVictory,
|
||||||
|
DecorationIds.TubeCogVictory,
|
||||||
|
DecorationIds.CogIceCreamVictory])
|
||||||
WinterPartyDecorationIds = frozenset([DecorationIds.cogIceCreamWinter,
|
WinterPartyDecorationIds = frozenset([DecorationIds.cogIceCreamWinter,
|
||||||
DecorationIds.StageWinter,
|
DecorationIds.StageWinter,
|
||||||
DecorationIds.CogStatueWinter,
|
DecorationIds.CogStatueWinter,
|
||||||
|
@ -171,6 +198,7 @@ ValentinePartyDecorationIds = frozenset([DecorationIds.BalloonAnvilValentine,
|
||||||
DecorationIds.HeartTarget,
|
DecorationIds.HeartTarget,
|
||||||
DecorationIds.FlyingHeart])
|
DecorationIds.FlyingHeart])
|
||||||
ValentinePartyReplacementDecorationIds = frozenset([DecorationIds.BalloonAnvil, DecorationIds.BannerJellyBean])
|
ValentinePartyReplacementDecorationIds = frozenset([DecorationIds.BalloonAnvil, DecorationIds.BannerJellyBean])
|
||||||
|
UnreleasedDecorationIds = ()
|
||||||
GoToPartyStatus = PythonUtil.Enum(('AllowedToGo',
|
GoToPartyStatus = PythonUtil.Enum(('AllowedToGo',
|
||||||
'PartyFull',
|
'PartyFull',
|
||||||
'PrivateParty',
|
'PrivateParty',
|
||||||
|
@ -390,6 +418,11 @@ DecorationInformationDict = {DecorationIds.BalloonAnvil: {'cost': int(10 * Party
|
||||||
'numberPerPurchase': 1,
|
'numberPerPurchase': 1,
|
||||||
'limitPerParty': 5,
|
'limitPerParty': 5,
|
||||||
'gridAsset': 'decoration_1x1'},
|
'gridAsset': 'decoration_1x1'},
|
||||||
|
DecorationIds.Hydra: {'cost': int(25 * PartyCostMultiplier),
|
||||||
|
'gridsize': (2, 2),
|
||||||
|
'numberPerPurchase': 1,
|
||||||
|
'limitPerParty': 5,
|
||||||
|
'gridAsset': 'decoration_propStage_2x2'},
|
||||||
DecorationIds.BannerVictory: {'cost': int(25 * PartyCostMultiplier),
|
DecorationIds.BannerVictory: {'cost': int(25 * PartyCostMultiplier),
|
||||||
'gridsize': (1, 1),
|
'gridsize': (1, 1),
|
||||||
'numberPerPurchase': 1,
|
'numberPerPurchase': 1,
|
||||||
|
@ -410,6 +443,11 @@ DecorationInformationDict = {DecorationIds.BalloonAnvil: {'cost': int(10 * Party
|
||||||
'numberPerPurchase': 1,
|
'numberPerPurchase': 1,
|
||||||
'limitPerParty': 5,
|
'limitPerParty': 5,
|
||||||
'gridAsset': 'decoration_1x1'},
|
'gridAsset': 'decoration_1x1'},
|
||||||
|
DecorationIds.CogIceCreamVictory: {'cost': int(25 * PartyCostMultiplier),
|
||||||
|
'gridsize': (1, 1),
|
||||||
|
'numberPerPurchase': 1,
|
||||||
|
'limitPerParty': 5,
|
||||||
|
'gridAsset': 'decoration_1x1'},
|
||||||
DecorationIds.cogIceCreamWinter: {'cost': int(25 * PartyCostMultiplier),
|
DecorationIds.cogIceCreamWinter: {'cost': int(25 * PartyCostMultiplier),
|
||||||
'gridsize': (1, 1),
|
'gridsize': (1, 1),
|
||||||
'numberPerPurchase': 1,
|
'numberPerPurchase': 1,
|
||||||
|
|
Loading…
Reference in a new issue