from . import CatalogItem
from toontown.toonbase import ToontownGlobals
from toontown.toonbase import TTLocalizer
from otp.otpbase import OTPLocalizer
from direct.interval.IntervalGlobal import *

class CatalogBeanItem(CatalogItem.CatalogItem):
    sequenceNumber = 0

    def makeNewItem(self, beanAmount, tagCode = 1):
        self.beanAmount = beanAmount
        self.giftCode = tagCode
        CatalogItem.CatalogItem.makeNewItem(self)

    def getPurchaseLimit(self):
        return 0

    def reachedPurchaseLimit(self, avatar):
        if self in avatar.onOrder or self in avatar.mailboxContents or self in avatar.onGiftOrder or self in avatar.awardMailboxContents or self in avatar.onAwardOrder:
            return 1
        return 0

    def getAcceptItemErrorText(self, retcode):
        if retcode == ToontownGlobals.P_ItemAvailable:
            if self.giftCode == ToontownGlobals.GIFT_RAT:
                return TTLocalizer.CatalogAcceptRATBeans
            elif self.giftCode == ToontownGlobals.GIFT_partyrefund:
                return TTLocalizer.CatalogAcceptPartyRefund
            else:
                return TTLocalizer.CatalogAcceptBeans
        return CatalogItem.CatalogItem.getAcceptItemErrorText(self, retcode)

    def saveHistory(self):
        return 0

    def getTypeName(self):
        return TTLocalizer.BeanTypeName

    def getName(self):
        name = '%s %s' % (self.beanAmount, TTLocalizer.BeanTypeName)
        return name

    def recordPurchase(self, avatar, optional):
        if avatar:
            avatar.addMoney(self.beanAmount)
        return ToontownGlobals.P_ItemAvailable

    def getPicture(self, avatar):
        beanJar = loader.loadModel('phase_3.5/models/gui/jar_gui')
        frame = self.makeFrame()
        beanJar.reparentTo(frame)
        beanJar.setPos(0, 0, 0)
        beanJar.setScale(2.5)
        self.hasPicture = True
        return (frame, None)

    def output(self, store = -1):
        return 'CatalogBeanItem(%s%s)' % (self.beanAmount, self.formatOptionalData(store))

    def compareTo(self, other):
        return self.beanAmount - other.beanAmount

    def getHashContents(self):
        return self.beanAmount

    def getBasePrice(self):
        return self.beanAmount

    def decodeDatagram(self, di, versionNumber, store):
        CatalogItem.CatalogItem.decodeDatagram(self, di, versionNumber, store)
        self.beanAmount = di.getUint16()

    def encodeDatagram(self, dg, store):
        CatalogItem.CatalogItem.encodeDatagram(self, dg, store)
        dg.addUint16(self.beanAmount)