65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
import CatalogItem
|
|
from toontown.toonbase import TTLocalizer
|
|
from direct.showbase import PythonUtil
|
|
from direct.gui.DirectGui import *
|
|
from toontown.toonbase import ToontownGlobals
|
|
|
|
class CatalogAtticItem(CatalogItem.CatalogItem):
|
|
|
|
def storedInAttic(self):
|
|
return 1
|
|
|
|
def isDeletable(self):
|
|
return 1
|
|
|
|
def getHouseInfo(self, avatar):
|
|
houseId = avatar.houseId
|
|
if not houseId:
|
|
self.notify.warning('Avatar %s has no houseId associated.' % avatar.doId)
|
|
return (None, ToontownGlobals.P_InvalidIndex)
|
|
house = simbase.air.doId2do.get(houseId)
|
|
if not house:
|
|
self.notify.warning('House %s (for avatar %s) not instantiated.' % (houseId, avatar.doId))
|
|
return (None, ToontownGlobals.P_InvalidIndex)
|
|
numAtticItems = len(house.atticItems) + len(house.atticWallpaper) + len(house.atticWindows)
|
|
numHouseItems = numAtticItems + len(house.interiorItems)
|
|
if numHouseItems >= ToontownGlobals.MaxHouseItems and not self.replacesExisting():
|
|
return (house, ToontownGlobals.P_NoRoomForItem)
|
|
return (house, ToontownGlobals.P_ItemAvailable)
|
|
|
|
def requestPurchase(self, phone, callback):
|
|
from toontown.toontowngui import TTDialog
|
|
avatar = base.localAvatar
|
|
itemsOnOrder = 0
|
|
for item in avatar.onOrder + avatar.mailboxContents:
|
|
if item.storedInAttic() and not item.replacesExisting():
|
|
itemsOnOrder += 1
|
|
|
|
numHouseItems = phone.numHouseItems + itemsOnOrder
|
|
if numHouseItems >= ToontownGlobals.MaxHouseItems and not self.replacesExisting():
|
|
self.requestPurchaseCleanup()
|
|
buttonCallback = PythonUtil.Functor(self.__handleFullPurchaseDialog, phone, callback)
|
|
self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.CatalogPurchaseHouseFull, text_wordwrap=15, command=buttonCallback)
|
|
self.dialog.show()
|
|
else:
|
|
CatalogItem.CatalogItem.requestPurchase(self, phone, callback)
|
|
|
|
def requestPurchaseCleanup(self):
|
|
if hasattr(self, 'dialog'):
|
|
self.dialog.cleanup()
|
|
del self.dialog
|
|
|
|
def __handleFullPurchaseDialog(self, phone, callback, buttonValue):
|
|
from toontown.toontowngui import TTDialog
|
|
self.requestPurchaseCleanup()
|
|
if buttonValue == DGG.DIALOG_OK:
|
|
CatalogItem.CatalogItem.requestPurchase(self, phone, callback)
|
|
else:
|
|
callback(ToontownGlobals.P_UserCancelled, self)
|
|
|
|
def getAcceptItemErrorText(self, retcode):
|
|
if retcode == ToontownGlobals.P_ItemAvailable:
|
|
return TTLocalizer.CatalogAcceptInAttic
|
|
elif retcode == ToontownGlobals.P_NoRoomForItem:
|
|
return TTLocalizer.CatalogAcceptHouseFull
|
|
return CatalogItem.CatalogItem.getAcceptItemErrorText(self, retcode)
|