Exemplo n.º 1
0
    def rejectApprovedTrade(self, context, reasonId):
        if context != None:
            self.ignore(self.approvedTradeMsg(context))
        for failureInfo in self.failureCallback:
            apply(failureInfo[0], failureInfo[1] + [self] + [reasonId])

        AsyncRequest.finish(self)
Exemplo n.º 2
0
 def __init__(self,
              awardManagerDo,
              isDcRequest,
              dcId,
              toonIdsList,
              catalogItem,
              specialEventId,
              browserReplyTo,
              specialCommands,
              echoBack,
              timeout=4.0):
     """Construct ourself."""
     replyToChannelId = awardManagerDo.air.getSenderReturnChannel
     AsyncRequest.__init__(self, awardManagerDo.air, replyToChannelId,
                           timeout)
     self.awardManagerDo = awardManagerDo
     self._isDcRequest = isDcRequest
     self._dcId = dcId
     self.toonIds = toonIdsList
     self.item = catalogItem
     self.specialEventId = specialEventId
     self.retcode = None
     self.browserReplyTo = browserReplyTo
     self.catalogType = None
     self.specialCommands = specialCommands
     self.echoBack = echoBack
     for toonId in self.toonIds:
         self.neededObjects[toonId] = None
     for toonId in self.toonIds:
         self.askForObject(toonId)
    def _sendTrade(self):
        context = self.air.allocateContext()

        try:
            self._normalizeTrade()
        except AITradeException:
            e = None
            self.notify.warning(
                'trade rejected by _normalizeTrade or _checkRules %s' % (e, ))
            self.air.writeServerEvent(
                'failedNormalizeTrade', self.inventoryId,
                '%s|%s|%s|%s' % (self.giving, self.taking, e, context))
            self.rejectApprovedTrade(None, 1)
            return None

        if len(self.giving) or len(self.taking):
            self.neededObjects[self.responseKey] = None
            self.acceptOnce(self.rejectTradeMsg(context),
                            Functor(self.rejectApprovedTrade, context), [])
            self.acceptOnce(self.approvedTradeMsg(context),
                            Functor(self.approvedTradeResponse, context), [])
            origin = self.getOrigin()
            self.air.getInventoryMgr(self.avatarId).sendApprovedTrade(
                0, self.inventoryId, self.giving, self.taking, context, origin,
                self.unequippables)
        else:
            AsyncRequest.finish(self)
    def finish(self):
        if self.inventoryId is None:
            inventoryId = self.neededObjects.get('setInventoryId')
            if inventoryId is not None:
                self.inventoryId = inventoryId[0]
            elif not self.neededObjects.has_key('setInventoryId'):
                self.askForObjectField('DistributedPlayerPirateAI',
                                       'setInventoryId', self.avatarId)

            return None

        for (key, category) in self.newDoId.items():
            doId = self.neededObjects.get('newDoId_%s' % (key, ))
            if doId is not None:
                self.giveDoId(category, doId)
                del self.newDoId[key]
                continue

        if len(self.newDoId) or not (self.readyToSend):
            return None

        if not self.isTradeSent():
            self._sendTrade()
            return None

        AsyncRequest.finish(self)
Exemplo n.º 5
0
    def finish(self):
        #print("PurchaseGiftRequest FINISH")
        sAv = self.neededObjects[self.senderId]
        rAv = self.neededObjects[self.receiverId]
        self.item = CatalogItem.getItem(self.itemBlob, store = CatalogItem.Customization)
        retcode = None
        #put neat stuff here
        #-----------------------------------------------------------------------------
        retcode = self.checkGift(retcode)
        retcode = self.checkCatalog(retcode)
        #retcode = self.checkMoney(retcode)
        retcode = self.checkGender(retcode)
        retcode = self.checkPurchaseLimit(retcode)
        retcode = self.checkMailbox(retcode)
        if (retcode != None):
                self.distObj.sendUpdateToChannel(self.replyToChannelId, "receiveRejectPurchaseGift",
                [self.senderId, self.context, retcode, self.cost])
        else:
            now = (int)(time.time() / 60 + 0.5)
            deliveryTime = self.item.getDeliveryTime() / self.distObj.timeScale
            if deliveryTime < 2:
                deliveryTime = 2
            self.item.deliveryDate = int(now + deliveryTime)
            #self.item.giftTag = self.senderId
            itemList = CatalogItemList.CatalogItemList([self.item])
            itemBlob = itemList.getBlob(store = CatalogItem.Customization | CatalogItem.DeliveryDate)
            retcode = ToontownGlobals.P_ItemOnOrder
            self.distObj.addGiftFR(self.receiverId, itemBlob, self.senderId, self.context, retcode, self.replyToChannelId)
        #-----------------------------------------------------------------------------

        AsyncRequest.finish(self)
    def finish(self):
        if self.inventoryId is None:
            inventoryId = self.neededObjects.get("setInventoryId")
            if inventoryId is not None:
                self.inventoryId = inventoryId[0]
            elif not self.neededObjects.has_key("setInventoryId"):
                self.askForObjectField("DistributedPlayerPirateAI", "setInventoryId", self.avatarId)

            return None

        for (key, category) in self.newDoId.items():
            doId = self.neededObjects.get("newDoId_%s" % (key,))
            if doId is not None:
                self.giveDoId(category, doId)
                del self.newDoId[key]
                continue

        if len(self.newDoId) or not (self.readyToSend):
            return None

        if not self.isTradeSent():
            self._sendTrade()
            return None

        AsyncRequest.finish(self)
Exemplo n.º 7
0
 def __init__(self, distObj, replyToChannelId, avatarId, time, timeout=4.0):
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj = distObj
     self.avatarId = avatarId
     self.time = time
     self.askForObjectField("DistributedToonUD", "setGiftSchedule",
                            avatarId)
Exemplo n.º 8
0
    def finish(self):
        #print "AddGiftRequestFR FINISH"
        """
        gift = self.distObj.avatarIdToGifts.get(self.avatarId)
        if gift == None:
            gift=self.neededObjects.get("setGiftSchedule")[0]
        gift.append(self.newGift)
        self.distObj.writeGift(self.avatarId, gift, self.replyToChannelId)
        AsyncRequest.finish(self)
        """
        giftBlob = self.distObj.avatarIdToGifts.getData(self.avatarId)
        if giftBlob == None:
            giftBlob = self.neededObjects.get("setGiftSchedule")[0]
        giftItem = CatalogItemList.CatalogItemList(
            self.newGift,
            store=CatalogItem.Customization | CatalogItem.DeliveryDate)
        giftList = CatalogItemList.CatalogItemList(
            giftBlob,
            store=CatalogItem.Customization | CatalogItem.DeliveryDate)
        if giftItem[0].giftCode != ToontownGlobals.GIFT_RAT:
            #print("Gift Item not RAT")
            giftList.append(giftItem[0])
            giftBlob = giftList.getBlob(CatalogItem.Customization
                                        | CatalogItem.DeliveryDate)
        else:
            #print("Gift Item is RAT")
            giftBlob = AccumRATBeans(giftItem[0], giftBlob)
        self.distObj.writeGift(self.avatarId, giftBlob, self.replyToChannelId)
        giftList.append(giftItem[0])
        giftBlob = giftList.getBlob(CatalogItem.Customization
                                    | CatalogItem.DeliveryDate)
        self.distObj.writeGift(self.avatarId, giftBlob, self.replyToChannelId)

        AsyncRequest.finish(self)
Exemplo n.º 9
0
 def finish(self):
     #print "AddGiftRequestFR FINISH"
     """
     gift = self.distObj.avatarIdToGifts.get(self.avatarId)
     if gift == None:
         gift=self.neededObjects.get("setGiftSchedule")[0]
     gift.append(self.newGift)
     self.distObj.writeGift(self.avatarId, gift, self.replyToChannelId)
     AsyncRequest.finish(self)
     """
     giftBlob = self.distObj.avatarIdToGifts.getData(self.avatarId)
     if giftBlob == None:
         giftBlob = self.neededObjects.get("setGiftSchedule")[0]
     giftItem = CatalogItemList.CatalogItemList(
         self.newGift,
         store=CatalogItem.Customization | CatalogItem.DeliveryDate)
     giftList = CatalogItemList.CatalogItemList(
         giftBlob,
         store=CatalogItem.Customization | CatalogItem.DeliveryDate)
     giftList.append(giftItem[0])
     giftBlob = giftList.getBlob(CatalogItem.Customization
                                 | CatalogItem.DeliveryDate)
     self.distObj.writeGiftFR(self.avatarId, giftBlob,
                              self.replyToChannelId, self.senderId,
                              self.context, self.retcode)
     AsyncRequest.finish(self)
    def rejectApprovedTrade(self, context, reasonId):
        if context != None:
            self.ignore(self.approvedTradeMsg(context))

        for failureInfo in self.failureCallback:
            apply(failureInfo[0], failureInfo[1] + [self] + [reasonId])

        AsyncRequest.finish(self)
Exemplo n.º 11
0
    def finish(self):

        giftListBlob=self.neededObjects.get("setGiftSchedule")[0]
        giftList = CatalogItemList.CatalogItemList(giftListBlob, store = CatalogItem.Customization | CatalogItem.DeliveryDate)
        delivered, remaining = giftList.extractDeliveryItems(self.time)
        giftBlob = remaining.getBlob(CatalogItem.Customization | CatalogItem.DeliveryDate)
        self.distObj.writeGiftField(self.avatarId, giftBlob, self.replyToChannelId)
        AsyncRequest.finish(self)
Exemplo n.º 12
0
 def __init__(self, distObj, replyToChannelId,avatarId, newGift, timeout = 4.0):
     #print("AddGiftRequestFR INIT")
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj=distObj
     self.avatarId=avatarId
     self.newGift = newGift
     self.askForObjectField(
                 "DistributedToonUD", "setGiftSchedule", avatarId)
Exemplo n.º 13
0
 def timeout(self, task):
     if self.numRetries == ASYNC_REQUEST_INFINITE_RETRIES:
         return Task.again
     elif self.numRetries > 0:
         self.numRetries -= 1
         return Task.again
     else:
         self.sendRejectCode(RejectCode.TIMEOUT)
         AsyncRequest.timeout(self, task)
Exemplo n.º 14
0
 def finish(self):
     """Report back on all the toon database objects that we got."""
     replyString = str(self.neededObjects)
     #self.browserReplyTo.respond(replyString)
     self.awardManagerDo.gotTheToons(self._isDcRequest, self._dcId,
                                     self.neededObjects, self.item,
                                     self.specialEventId,
                                     self.browserReplyTo,
                                     self.specialCommands, self.echoBack)
     AsyncRequest.finish(self)
Exemplo n.º 15
0
 def __init__(self,replyTo,toonID):
     """
     replyTo is where we stick the response
     toonID is the doID of the toon whose picture we want
     """
     assert self.notify.debugCall()
     self.__deleted=False
     AsyncRequest.__init__(self,uber.air)
     self.air = uber.air
     self.replyTo = replyTo
     self.toonID = toonID
     self.air.writeServerEvent("UberRPC-GetToonDNA",self.replyTo.getSourceAddress(),"%u" % self.toonID)
     self.askForObjectField("DistributedToonUD","setDNAString",self.toonID)
Exemplo n.º 16
0
 def __init__(self, resultQueue, clientIP, accountName):
     """
     resultQueue is where we stick the response
     clientIP is the client's address for logging purposes
     accountName is the account whose avatar list we're fetching
     """
     assert self.notify.debugCall()
     self.__deleted = False
     AsyncRequest.__init__(self, uber.air)
     self.air = uber.air
     self.resultQueue = resultQueue
     self.clientIP = clientIP
     self.accountName = accountName
Exemplo n.º 17
0
 def __init__(self,replyTo,idList):
     """
     replyTo is where we stick the response
     idList is a list of IDs of the toons whose names we're fetching
     """
     assert self.notify.debugCall()
     self.__deleted=False
     AsyncRequest.__init__(self,uber.air)
     self.air = uber.air
     self.replyTo = replyTo
     self.idList = idList
     for id in idList:
         self.askForObjectField("DistributedToonUD","setName",id,key=id)
Exemplo n.º 18
0
 def __init__(self, resultQueue, clientIP, toonID):
     """
     resultQueue is where we stick the response
     clientIP is for logging purposes
     toonID is the ID of the toon whose name we're fetching
     """
     assert self.notify.debugCall()
     self.__deleted = False
     AsyncRequest.__init__(self, uber.air)
     self.air = uber.air
     self.resultQueue = resultQueue
     self.clientIP = clientIP
     self.toonID = toonID
Exemplo n.º 19
0
    def __init__(self,replyTo,accountName):
        """
        replyTo is where we stick the response
        accountName is the account whose avatar list we're fetching
        """
        assert self.notify.debugCall()
        self.__deleted=False
        AsyncRequest.__init__(self,uber.air)
        self.air = uber.air
        self.replyTo = replyTo
        self.accountName = accountName

        self.askForObjectFieldsByString(4008,"AccountUD",self.accountName,("ACCOUNT_AV_SET",))
Exemplo n.º 20
0
 def __init__(self, distObj, replyToChannelId, receiverId, itemBlob, timeout = 4.0):
     #print("AddItem INIT")
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj=distObj
     #self.senderId=senderId
     self.receiverId=receiverId
     self.itemBlob=itemBlob
     self.item = None
     self.catalogType = None
     self.neededObjects[receiverId] = None
     #self.askForObject(senderId)
     self.askForObject(receiverId)
     self.cost = 0
Exemplo n.º 21
0
    def __init__(self, air, jobId, avatarId, writeToFile):
        assert self.notify.debugCall()
        self.__deleted = False
        AsyncRequest.__init__(self, air)

        self.avatarId = avatarId
        self.jobId = jobId
        self.writeToFile = writeToFile

        self.neededObjects[avatarId] = self.air.doId2do.get(avatarId)
        if self.neededObjects[avatarId] is not None:
            self.finish()
        else:
            self.askForObject(avatarId)
Exemplo n.º 22
0
 def __init__(self, distObj, avatarId=None, inventoryId=None, timeout=4.0):
     self.responseKey = 'tradeResponse'
     AsyncRequest.__init__(self, distObj.air, distObj.getDoId(), timeout)
     self.distObj = distObj
     self.avatarId = avatarId
     self.inventoryId = inventoryId
     self.failureCallback = []
     self.successCallback = []
     self.timeoutCallback = []
     self.nextNewDoIdKey = 0
     self.newDoId = {}
     self.readyToSend = False
     self.giving = []
     self.taking = []
     self.unequippables = []
 def __init__(self, distObj, avatarId=None, inventoryId=None, timeout=4.0):
     self.responseKey = "tradeResponse"
     AsyncRequest.__init__(self, distObj.air, distObj.getDoId(), timeout)
     self.distObj = distObj
     self.avatarId = avatarId
     self.inventoryId = inventoryId
     self.failureCallback = []
     self.successCallback = []
     self.timeoutCallback = []
     self.nextNewDoIdKey = 0
     self.newDoId = {}
     self.readyToSend = False
     self.giving = []
     self.taking = []
     self.unequippables = []
Exemplo n.º 24
0
 def __init__(self, resultQueue, clientIP, toonID, beanAmount):
     """
     resultQueue is where we stick the response
     clientIP is for logging purposes
     toonID is the toon receiving beans
     beanAmount is the number of beans to give
     """
     assert self.notify.debugCall()
     self.__deleted = False
     AsyncRequest.__init__(self, uber.air)
     self.air = uber.air
     self.resultQueue = resultQueue
     self.clientIP = clientIP
     self.toonID = toonID
     self.beanAmount = beanAmount
     self.done = False
Exemplo n.º 25
0
 def __init__(self,
              distObj,
              air,
              replyToChannelId=None,
              timeoutTime=ASYNC_REQUEST_DEFAULT_TIMEOUT_IN_SECONDS,
              key=None):
     assert self.notify.debugCall()
     self.distObj = distObj
     self.key = key
     if key is not None:
         req = distObj.asyncRequests.get(key)
         if req:
             req.delete()
         distObj.asyncRequests[key] = self
     AsyncRequest.__init__(self, air, replyToChannelId, timeoutTime,
                           ASYNC_REQUEST_INFINITE_RETRIES)
Exemplo n.º 26
0
 def __init__(self, distObj, replyToChannelId, senderId, receiverId, itemBlob, context, timeout = 4.0):
     #print("PurchaseGiftRequest INIT")
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj=distObj
     self.senderId=senderId
     self.receiverId=receiverId
     self.itemBlob=itemBlob
     self.context = context
     self.retcode = None
     self.item = None
     self.catalogType = None
     self.neededObjects[senderId] = None
     self.neededObjects[receiverId] = None
     self.askForObject(senderId)
     self.askForObject(receiverId)
     self.cost = 0
Exemplo n.º 27
0
    def finish(self):
        #print("AddItem FINISH")
        rAv = self.neededObjects[self.receiverId]
        self.item = CatalogItem.getItem(self.itemBlob, store = CatalogItem.Customization)

        now = (int)(time.time() / 60 + 0.5)
        deliveryTime = self.item.getDeliveryTime() / self.distObj.timeScale
        #if deliveryTime < 2:
        #    deliveryTime = 2
        deliveryTime = 2
        self.item.deliveryDate = int(now + deliveryTime)
        itemList = CatalogItemList.CatalogItemList([self.item])
        itemBlob = itemList.getBlob(store = CatalogItem.Customization | CatalogItem.DeliveryDate)
        retcode = ToontownGlobals.P_ItemOnOrder
        self.distObj.addGift(self.receiverId, itemBlob, self.replyToChannelId)
        #-----------------------------------------------------------------------------

        AsyncRequest.finish(self)
Exemplo n.º 28
0
 def __init__(self,
              distObj,
              replyToChannelId,
              avatarId,
              newGift,
              senderId,
              context,
              retcode,
              timeout=4.0):
     #print "AddGiftRequestFR INIT"
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj = distObj
     self.avatarId = avatarId
     self.newGift = newGift
     self.senderId = senderId
     self.context = context
     self.retcode = retcode
     self.askForObjectField("DistributedToonUD", "setGiftSchedule",
                            avatarId)
Exemplo n.º 29
0
    def _sendTrade(self):
        context = self.air.allocateContext()
        
        try:
            self._normalizeTrade()
        except AITradeException:
            e = None
            self.notify.warning('trade rejected by _normalizeTrade or _checkRules %s' % (e,))
            self.air.writeServerEvent('failedNormalizeTrade', self.inventoryId, '%s|%s|%s|%s' % (self.giving, self.taking, e, context))
            self.rejectApprovedTrade(None, 1)
            return None

        if len(self.giving) or len(self.taking):
            self.neededObjects[self.responseKey] = None
            self.acceptOnce(self.rejectTradeMsg(context), Functor(self.rejectApprovedTrade, context), [])
            self.acceptOnce(self.approvedTradeMsg(context), Functor(self.approvedTradeResponse, context), [])
            origin = self.getOrigin()
            self.air.getInventoryMgr(self.avatarId).sendApprovedTrade(0, self.inventoryId, self.giving, self.taking, context, origin, self.unequippables)
        else:
            AsyncRequest.finish(self)
Exemplo n.º 30
0
 def _doCreateObject(self, *args, **kArgs):
     self.notify.warning(
         'creating temporary copy of inventory object, second generate msg is on the way'
     )
     AsyncRequest._doCreateObject(self, *args, **kArgs)
Exemplo n.º 31
0
    def timeout(self, task):
        for timeoutInfo in self.timeoutCallback:
            apply(timeoutInfo[0], timeoutInfo[1] + [self])

        AsyncRequest.timeout(self, task)
Exemplo n.º 32
0
                '%s|%s|%s|%s' % (self.giving, self.taking, e, context))
            self.rejectApprovedTrade(None, 1)
            return
        else:
            if len(self.giving) or len(self.taking):
                self.neededObjects[self.responseKey] = None
                self.acceptOnce(self.rejectTradeMsg(context),
                                Functor(self.rejectApprovedTrade, context), [])
                self.acceptOnce(self.approvedTradeMsg(context),
                                Functor(self.approvedTradeResponse, context),
                                [])
                origin = self.getOrigin()
                self.air.getInventoryMgr(self.avatarId).sendApprovedTrade(
                    0, self.inventoryId, self.giving, self.taking, context,
                    origin, self.unequippables)
            AsyncRequest.finish(self)

        return

    def rejectTradeMsg(self, context):
        return 'rejectApprovedTrade-%s' % (context, )

    def approvedTradeMsg(self, context):
        return 'approvedTradeResponse-%s' % (context, )

    def isGift(self, inventoryType):
        for gift in self.giving:
            if gift[0] == inventoryType:
                return 1

        return 0
    def timeout(self, task):
        for timeoutInfo in self.timeoutCallback:
            apply(timeoutInfo[0], timeoutInfo[1] + [self])

        AsyncRequest.timeout(self, task)
 def _doCreateObject(self, *args, **kArgs):
     self.notify.warning("creating temporary copy of inventory object, second generate msg is on the way")
     AsyncRequest._doCreateObject(self, *args, **args)
Exemplo n.º 35
0
 def __init__(self, distObj, replyToChannelId, avatarId, timeout=4.0):
     AsyncRequest.__init__(self, distObj.air, replyToChannelId, timeout)
     self.distObj = distObj
     self.avatarId = avatarId
     self.askForObject(avatarId)
Exemplo n.º 36
0
 def finish(self):
     avatar = self.neededObjects[self.avatarId]
     #put neat stuff here
     AsyncRequest.finish(self)