77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
from otp.nametag.NametagConstants import CFSpeech, CFTimeout
|
|
from toontown.toonbase import TTLocalizer, ToontownGlobals
|
|
from toontown.toon import NPCToons
|
|
from DistributedNPCToonBase import DistributedNPCToonBase
|
|
import GloveNPCGlobals, GloveShopGui, time
|
|
|
|
class DistributedNPCGlove(DistributedNPCToonBase):
|
|
|
|
def __init__(self, cr):
|
|
DistributedNPCToonBase.__init__(self, cr)
|
|
self.lastCollision = 0
|
|
self.gloveDialog = None
|
|
|
|
def disable(self):
|
|
self.ignoreAll()
|
|
self.destroyDialog()
|
|
DistributedNPCToonBase.disable(self)
|
|
|
|
def destroyDialog(self):
|
|
self.clearChat()
|
|
|
|
if self.gloveDialog:
|
|
self.gloveDialog.destroy()
|
|
self.gloveDialog = None
|
|
|
|
def initToonState(self):
|
|
self.setAnimState('neutral', 0.9, None, None)
|
|
|
|
if self.name in NPCToons.GlovePositions:
|
|
pos = NPCToons.GlovePositions[self.name]
|
|
self.setPos(*pos[0])
|
|
self.setH(pos[1])
|
|
|
|
def getCollSphereRadius(self):
|
|
return 1.25
|
|
|
|
def handleCollisionSphereEnter(self, collEntry):
|
|
if self.lastCollision > time.time():
|
|
return
|
|
|
|
self.lastCollision = time.time() + ToontownGlobals.NPCCollisionDelay
|
|
|
|
if base.localAvatar.getTotalMoney() < ToontownGlobals.GloveCost:
|
|
self.setChatAbsolute(TTLocalizer.GloveMoreMoneyMessage % ToontownGlobals.GloveCost, CFSpeech|CFTimeout)
|
|
return
|
|
|
|
base.cr.playGame.getPlace().fsm.request('stopped')
|
|
base.setCellsAvailable(base.bottomCells, 0)
|
|
self.setChatAbsolute(TTLocalizer.GlovePickColorMessage, CFSpeech|CFTimeout)
|
|
self.acceptOnce('gloveShopDone', self.__gloveShopDone)
|
|
self.gloveDialog = GloveShopGui.GloveShopGui()
|
|
|
|
def freeAvatar(self):
|
|
base.cr.playGame.getPlace().fsm.request('walk')
|
|
base.setCellsAvailable(base.bottomCells, 1)
|
|
|
|
def __gloveShopDone(self, state, glove):
|
|
self.freeAvatar()
|
|
|
|
if state == GloveNPCGlobals.TIMER_END:
|
|
self.setChatAbsolute(TTLocalizer.STOREOWNER_TOOKTOOLONG, CFSpeech|CFTimeout)
|
|
return
|
|
elif state == GloveNPCGlobals.USER_CANCEL:
|
|
self.setChatAbsolute(TTLocalizer.STOREOWNER_GOODBYE, CFSpeech|CFTimeout)
|
|
return
|
|
elif state == GloveNPCGlobals.CHANGE:
|
|
self.sendUpdate('changeGlove', [glove])
|
|
|
|
def changeGloveResult(self, avId, state):
|
|
if state in GloveNPCGlobals.ChangeMessages:
|
|
self.setChatAbsolute(GloveNPCGlobals.ChangeMessages[state], CFSpeech|CFTimeout)
|
|
|
|
if state == GloveNPCGlobals.CHANGE_SUCCESSFUL:
|
|
av = self.cr.doId2do.get(avId)
|
|
|
|
if av:
|
|
av.getDustCloud().start()
|