Implement code redemption! Woo!

This commit is contained in:
Daniel 2015-04-20 17:29:11 +03:00
parent a0e61b23b6
commit f5e41df8f8
8 changed files with 58 additions and 44 deletions

View file

@ -287,7 +287,7 @@ from toontown.uberdog.DistributedPartyManager/AI/UD import DistributedPartyManag
from toontown.rpc.AwardManager/UD import AwardManager/UD
from toontown.uberdog.DistributedCpuInfoMgr/AI/UD import DistributedCpuInfoMgr/AI/UD
from toontown.uberdog.DistributedInGameNewsMgr/AI/UD import DistributedInGameNewsMgr/AI/UD
from toontown.coderedemption.TTCodeRedemptionMgr/AI/UD import TTCodeRedemptionMgr/AI/UD
from toontown.coderedemption.TTCodeRedemptionMgr/AI import TTCodeRedemptionMgr/AI
from toontown.distributed.NonRepeatableRandomSourceAI import NonRepeatableRandomSourceAI
from toontown.distributed.NonRepeatableRandomSourceUD import NonRepeatableRandomSourceUD
from toontown.ai.DistributedPhaseEventMgr/AI import DistributedPhaseEventMgr/AI
@ -3310,10 +3310,7 @@ dclass NonRepeatableRandomSourceClient {
};
dclass TTCodeRedemptionMgr : DistributedObject, NonRepeatableRandomSourceClient {
giveAwardToToonResult(uint32, uint32);
redeemCode(uint32, char [0-256]) airecv clsend;
redeemCodeAiToUd(uint32, DoId, uint32, string, uint32);
redeemCodeResultUdToAi(uint32, uint32, uint32, uint32, uint32) airecv;
redeemCodeResult(uint32, uint32, uint32);
};

View file

@ -2,7 +2,7 @@
from pandac.PandaModules import *
hashVal = 3181838135L
hashVal = 1907389465
from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot

View file

@ -27,6 +27,7 @@ from toontown.coghq import MintManagerAI
from toontown.distributed.ToontownDistrictAI import ToontownDistrictAI
from toontown.distributed.ToontownDistrictStatsAI import ToontownDistrictStatsAI
from toontown.distributed.ToontownInternalRepository import ToontownInternalRepository
from toontown.coderedemption.TTCodeRedemptionMgrAI import TTCodeRedemptionMgrAI
from toontown.dna.DNAParser import loadDNAFileAI
from toontown.estate.EstateManagerAI import EstateManagerAI
from toontown.hood import BRHoodAI
@ -115,6 +116,8 @@ class ToontownAIRepository(ToontownInternalRepository):
self.cogPageManager = CogPageManagerAI.CogPageManagerAI()
self.bankManager = BankManagerAI.BankManagerAI(self)
self.holidayManager = HolidayManagerAI(self)
self.codeRedemptionMgr = TTCodeRedemptionMgrAI(self)
self.codeRedemptionMgr.generateWithRequired(2)
self.buildingQueryMgr = DistributedBuildingQueryMgrAI(self)
self.buildingQueryMgr.generateWithRequired(2)
if self.wantFishing:

View file

@ -10,14 +10,14 @@ class TTCodeRedemptionMgr(DistributedObject):
def announceGenerate(self):
DistributedObject.announceGenerate(self)
base.codeRedemptionMgr = self
base.cr.codeRedemptionMgr = self
self._contextGen = SerialMaskedGen(4294967295L)
self._context2callback = {}
def delete(self):
if hasattr(base, 'codeRedemptionMgr'):
if base.codeRedemptionMgr is self:
del base.codeRedemptionMgr
if hasattr(base.cr, 'codeRedemptionMgr'):
if base.cr.codeRedemptionMgr is self:
del base.cr.codeRedemptionMgr
self._context2callback = None
self._contextGen = None
DistributedObject.delete(self)

View file

@ -1,21 +1,58 @@
from direct.directnotify import DirectNotifyGlobal
from direct.distributed.DistributedObjectAI import DistributedObjectAI
from toontown.catalog import CatalogClothingItem
from toontown.toonbase import ToontownGlobals
from datetime import datetime
import time
class TTCodeRedemptionMgrAI(DistributedObjectAI):
notify = DirectNotifyGlobal.directNotify.newCategory("TTCodeRedemptionMgrAI")
codes = {
'weed': {
'item': CatalogClothingItem.CatalogClothingItem(1821, 0),
'month': 4,
'day': 20
}
}
def giveAwardToToonResult(self, todo0, todo1):
pass
def announceGenerate(self):
DistributedObjectAI.announceGenerate(self)
def redeemCode(self, todo0, todo1):
pass
def redeemCode(self, context, code):
avId = self.air.getAvatarIdFromSender()
def redeemCodeAiToUd(self, todo0, todo1, todo2, todo3, todo4):
pass
if code in self.codes:
codeInfo = self.codes[code]
date = datetime.now()
def redeemCodeResultUdToAi(self, todo0, todo1, todo2, todo3, todo4):
pass
if ('month' in codeInfo and date.month is not codeInfo['month']) or ('day' in codeInfo and date.day is not codeInfo['day']):
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 2, 0])
return
def redeemCodeResult(self, todo0, todo1, todo2):
pass
self.requestCodeRedeem(context, codeInfo['item'])
else:
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 1, 0])
def requestCodeRedeem(self, context, item):
avId = self.air.getAvatarIdFromSender()
av = self.air.doId2do.get(avId)
if not av:
return
if len(av.onOrder) > 5:
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 4, 4])
return
if len(av.mailboxContents) + len(av.onOrder) >= ToontownGlobals.MaxMailboxContents:
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 4, 3])
return
if item in av.onOrder or item.reachedPurchaseLimit(av):
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 4, 13])
return
item.deliveryDate = int(time.time() / 60) + 0.01
av.onOrder.append(item)
av.b_setDeliverySchedule(av.onOrder)
self.sendUpdateToAvatarId(avId, 'redeemCodeResult', [context, 0, 0])

View file

@ -1,21 +0,0 @@
from direct.directnotify import DirectNotifyGlobal
from direct.distributed.DistributedObjectUD import DistributedObjectUD
class TTCodeRedemptionMgrUD(DistributedObjectUD):
notify = DirectNotifyGlobal.directNotify.newCategory("TTCodeRedemptionMgrUD")
def giveAwardToToonResult(self, todo0, todo1):
pass
def redeemCode(self, todo0, todo1):
pass
def redeemCodeAiToUd(self, todo0, todo1, todo2, todo3, todo4):
pass
def redeemCodeResultUdToAi(self, todo0, todo1, todo2, todo3, todo4):
pass
def redeemCodeResult(self, todo0, todo1, todo2):
pass

View file

@ -95,8 +95,6 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
self.playerFriendsManager = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_PLAYER_FRIENDS_MANAGER, 'TTPlayerFriendsManager')
self.ttuFriendsManager = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_TTU_FRIENDS_MANAGER, 'TTUFriendsManager')
self.deliveryManager = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_TOONTOWN_DELIVERY_MANAGER, 'DistributedDeliveryManager')
if config.GetBool('want-code-redemption', 1):
self.codeRedemptionManager = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_TOONTOWN_CODE_REDEMPTION_MANAGER, 'TTCodeRedemptionMgr')
self.streetSign = None
self.furnitureManager = None

View file

@ -633,8 +633,8 @@ class CodesTabPage(DirectFrame):
if input == '':
return
messenger.send('wakeup')
if hasattr(base, 'codeRedemptionMgr'):
base.codeRedemptionMgr.redeemCode(input, self.__getCodeResult)
if hasattr(base.cr, 'codeRedemptionMgr'):
base.cr.codeRedemptionMgr.redeemCode(input, self.__getCodeResult)
self.codeInput.enterText('')
self.__disableCodeEntry()
return