2015-05-12 00:06:23 -05:00
|
|
|
from pandac.PandaModules import *
|
|
|
|
from direct.distributed import ClockDelta
|
2015-05-11 11:21:07 -05:00
|
|
|
from toontown.chat.ChatGlobals import CFSpeech, CFTimeout
|
|
|
|
from toontown.toonbase import TTLocalizer, ToontownGlobals
|
|
|
|
from toontown.toontowngui import TTDialog
|
2015-05-11 15:36:31 -05:00
|
|
|
from toontown.toon import NPCToons
|
2015-05-11 11:21:07 -05:00
|
|
|
from DistributedNPCToonBase import DistributedNPCToonBase
|
|
|
|
import LaffRestockGlobals
|
2015-05-12 00:06:23 -05:00
|
|
|
from LaffShopGui import *
|
2015-05-11 11:21:07 -05:00
|
|
|
|
|
|
|
class DistributedNPCLaffRestock(DistributedNPCToonBase):
|
|
|
|
|
|
|
|
def __init__(self, cr):
|
|
|
|
DistributedNPCToonBase.__init__(self, cr)
|
2015-05-12 00:06:23 -05:00
|
|
|
self.isLocalToon = 0
|
|
|
|
self.av = None
|
|
|
|
self.laffGui = None
|
2015-05-11 11:21:07 -05:00
|
|
|
|
|
|
|
def disable(self):
|
|
|
|
self.ignoreAll()
|
2015-05-12 00:06:23 -05:00
|
|
|
if self.laffGui:
|
|
|
|
self.laffGui.destroy()
|
|
|
|
self.laffGui = None
|
|
|
|
self.av = None
|
2015-05-11 11:21:07 -05:00
|
|
|
DistributedNPCToonBase.disable(self)
|
|
|
|
|
2015-05-11 15:36:31 -05:00
|
|
|
def initToonState(self):
|
|
|
|
self.setAnimState('neutral', 0.9, None, None)
|
|
|
|
if self.name in NPCToons.LaffRestockPositions:
|
|
|
|
pos = NPCToons.LaffRestockPositions[self.name]
|
|
|
|
self.setPos(*pos[0])
|
|
|
|
self.setH(pos[1])
|
2015-05-11 14:05:59 -05:00
|
|
|
|
2015-05-11 11:21:07 -05:00
|
|
|
def getCollSphereRadius(self):
|
2015-05-12 00:06:23 -05:00
|
|
|
return 1.25
|
2015-05-11 11:21:07 -05:00
|
|
|
|
|
|
|
def handleCollisionSphereEnter(self, collEntry):
|
2015-05-12 00:06:23 -05:00
|
|
|
base.cr.playGame.getPlace().fsm.request('purchase')
|
|
|
|
self.sendUpdate('avatarEnter', [])
|
2015-05-11 11:21:07 -05:00
|
|
|
|
2015-05-12 00:06:23 -05:00
|
|
|
def __handleUnexpectedExit(self):
|
|
|
|
self.notify.warning('unexpected exit')
|
|
|
|
self.av = None
|
2015-05-11 11:21:07 -05:00
|
|
|
|
2015-05-12 00:06:23 -05:00
|
|
|
def resetLaffClerk(self):
|
|
|
|
self.ignoreAll()
|
|
|
|
if self.laffGui:
|
|
|
|
self.laffGui.destroy()
|
|
|
|
self.laffGui = None
|
|
|
|
self.show()
|
|
|
|
self.startLookAround()
|
|
|
|
self.detectAvatars()
|
|
|
|
if self.isLocalToon:
|
|
|
|
self.showNametag2d()
|
|
|
|
self.freeAvatar()
|
|
|
|
return Task.done
|
|
|
|
|
|
|
|
def setMovie(self, mode, npcId, avId, extraArgs, timestamp):
|
|
|
|
timeStamp = ClockDelta.globalClockDelta.localElapsedTime(timestamp)
|
|
|
|
self.remain = NPCToons.CLERK_COUNTDOWN_TIME - timeStamp
|
|
|
|
self.npcId = npcId
|
|
|
|
self.isLocalToon = avId == base.localAvatar.doId
|
|
|
|
if mode == NPCToons.SELL_MOVIE_CLEAR:
|
2015-05-11 11:21:07 -05:00
|
|
|
return
|
2015-05-12 00:06:23 -05:00
|
|
|
if mode == NPCToons.SELL_MOVIE_TIMEOUT:
|
|
|
|
if self.isLocalToon:
|
|
|
|
if self.laffGui:
|
|
|
|
self.laffGui.destroy()
|
|
|
|
self.laffGui = None
|
|
|
|
self.setChatAbsolute(TTLocalizer.STOREOWNER_TOOKTOOLONG, CFSpeech | CFTimeout)
|
|
|
|
self.resetLaffClerk()
|
|
|
|
elif mode == NPCToons.SELL_MOVIE_START:
|
|
|
|
self.av = base.cr.doId2do.get(avId)
|
|
|
|
if self.av is None:
|
|
|
|
self.notify.warning('Avatar %d not found in doId' % avId)
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
self.accept(self.av.uniqueName('disable'), self.__handleUnexpectedExit)
|
|
|
|
self.setupAvatars(self.av)
|
|
|
|
if self.isLocalToon:
|
|
|
|
self.hideNametag2d()
|
|
|
|
laff = self.av.getMaxHp() - self.av.getHp()
|
|
|
|
cost = laff * ToontownGlobals.CostPerLaffRestock
|
|
|
|
self.popupLaffGUI(laff, cost)
|
|
|
|
elif mode == NPCToons.SELL_MOVIE_COMPLETE:
|
|
|
|
self.setChatAbsolute(TTLocalizer.RestockLaffMessage, CFSpeech | CFTimeout)
|
|
|
|
self.resetLaffClerk()
|
|
|
|
elif mode == LaffRestockGlobals.FullLaff:
|
|
|
|
self.setChatAbsolute(TTLocalizer.RestockFullLaffMessage, CFSpeech | CFTimeout)
|
|
|
|
self.resetLaffClerk()
|
|
|
|
elif mode == LaffRestockGlobals.NoMoney:
|
|
|
|
self.setChatAbsolute(TTLocalizer.RestockNoMoneyMessage, CFSpeech | CFTimeout)
|
|
|
|
self.resetLaffClerk()
|
|
|
|
|
2015-05-12 03:10:49 -05:00
|
|
|
def __handleRestock(self, laff, cost):
|
|
|
|
self.sendUpdate('restock', [self.av.doId, laff, cost])
|
2015-05-12 00:06:23 -05:00
|
|
|
|
|
|
|
def __handleGuiDone(self, bTimedOut=False):
|
|
|
|
self.ignoreAll()
|
|
|
|
if self.laffGui:
|
|
|
|
self.laffGui.destroy()
|
|
|
|
self.laffGui = None
|
|
|
|
if not bTimedOut:
|
|
|
|
self.sendUpdate('transactionDone')
|
|
|
|
|
|
|
|
def popupLaffGUI(self, laff, cost):
|
|
|
|
self.setChatAbsolute('', CFSpeech)
|
|
|
|
self.accept('restockLaff', self.__handleRestock)
|
|
|
|
self.acceptOnce('guiDone', self.__handleGuiDone)
|
2015-05-12 03:10:49 -05:00
|
|
|
self.laffGui = LaffShopGui(text=TTLocalizer.RestockAskMessage % (laff, cost))
|