fixed the fish sale at estate

This commit is contained in:
Zach 2015-05-12 14:46:35 -05:00
parent 37097d0645
commit 37fad887da
8 changed files with 71 additions and 116 deletions

View file

@ -363,7 +363,6 @@ from toontown.estate import DistributedBank/AI
from toontown.estate import DistributedCloset/AI from toontown.estate import DistributedCloset/AI
from toontown.estate import DistributedTrunk/AI from toontown.estate import DistributedTrunk/AI
from toontown.estate import DistributedPhone/AI from toontown.estate import DistributedPhone/AI
from toontown.estate import DistributedTreasureChest/AI
from toontown.effects import DistributedFireworkShow/AI from toontown.effects import DistributedFireworkShow/AI
from toontown.estate import DistributedFireworksCannon/AI from toontown.estate import DistributedFireworksCannon/AI
from toontown.coghq import LobbyManager/AI from toontown.coghq import LobbyManager/AI
@ -1343,6 +1342,8 @@ dclass DistributedEstate : DistributedObject {
setSlot5Items(lawnItem items[] = []) required airecv db; setSlot5Items(lawnItem items[] = []) required airecv db;
setIdList(uint32 []) broadcast ram; setIdList(uint32 []) broadcast ram;
completeFlowerSale(uint8) airecv clsend; completeFlowerSale(uint8) airecv clsend;
completeFishSale(uint8) airecv clsend;
thankSeller(int8, int8, int8);
awardedTrophy(uint32) broadcast; awardedTrophy(uint32) broadcast;
setClouds(uint8) required broadcast ram; setClouds(uint8) required broadcast ram;
cannonsOver() broadcast; cannonsOver() broadcast;
@ -2230,11 +2231,6 @@ dclass DistributedPhone : DistributedFurnitureItem {
purchaseItemComplete(); purchaseItemComplete();
}; };
dclass DistributedTreasureChest : DistributedObject {
completeSale(bool) airecv clsend;
completeSaleResult(int8, int8, int8);
};
dclass DistributedFireworkShow : DistributedObject { dclass DistributedFireworkShow : DistributedObject {
startShow(uint8, uint8, uint8, int16) broadcast ram; startShow(uint8, uint8, uint8, int16) broadcast ram;
requestFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) airecv clsend; requestFirework(int16/10, int16/10, int16/100, uint8, uint8, uint8) airecv clsend;

View file

@ -2,7 +2,7 @@
from pandac.PandaModules import * from pandac.PandaModules import *
hashVal = 2180409862L hashVal = 2639844855L
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 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
@ -33,7 +33,7 @@ from toontown.friends import TTUFriendsManager
from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog
from toontown.uberdog.ARGManager import ARGManager from toontown.uberdog.ARGManager import ARGManager
from otp.distributed import Account, DistributedDistrict, DistributedDirectory from otp.distributed import Account, DistributedDistrict, DistributedDirectory
from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedTreasureChest, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor
from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCGlove, DistributedNPCLaffRestock from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCGlove, DistributedNPCLaffRestock
from toontown.tutorial import DistributedBattleTutorial, TutorialManager from toontown.tutorial import DistributedBattleTutorial, TutorialManager
from toontown.pets import DistributedPetProxy from toontown.pets import DistributedPetProxy

View file

@ -28,6 +28,7 @@ from toontown.estate import DistributedStatuary
import GardenDropGame import GardenDropGame
import GardenProgressMeter import GardenProgressMeter
from toontown.estate import FlowerSellGUI from toontown.estate import FlowerSellGUI
from toontown.fishing import FishSellGUI
from toontown.toontowngui import TTDialog from toontown.toontowngui import TTDialog
class DistributedEstate(DistributedObject.DistributedObject): class DistributedEstate(DistributedObject.DistributedObject):
@ -48,6 +49,7 @@ class DistributedEstate(DistributedObject.DistributedObject):
self.idList = [] self.idList = []
base.estate = self base.estate = self
self.flowerGuiDoneEvent = 'flowerGuiDone' self.flowerGuiDoneEvent = 'flowerGuiDone'
self.fishGuiDoneEvent = 'fishGuiDone'
return return
def disable(self): def disable(self):
@ -56,6 +58,7 @@ class DistributedEstate(DistributedObject.DistributedObject):
self.__stopCrickets() self.__stopCrickets()
DistributedObject.DistributedObject.disable(self) DistributedObject.DistributedObject.disable(self)
self.ignore('enterFlowerSellBox') self.ignore('enterFlowerSellBox')
self.ignore('enterFishSellBox')
def delete(self): def delete(self):
self.notify.debug('delete') self.notify.debug('delete')
@ -72,6 +75,7 @@ class DistributedEstate(DistributedObject.DistributedObject):
else: else:
self.loadAirplane() self.loadAirplane()
self.loadFlowerSellBox() self.loadFlowerSellBox()
self.loadFishSellBox()
self.oldClear = base.win.getClearColor() self.oldClear = base.win.getClearColor()
base.win.setClearColor(Vec4(0.09, 0.55, 0.21, 1.0)) base.win.setClearColor(Vec4(0.09, 0.55, 0.21, 1.0))
self.startGame() self.startGame()
@ -365,19 +369,57 @@ class DistributedEstate(DistributedObject.DistributedObject):
if len(base.localAvatar.flowerBasket.flowerList): if len(base.localAvatar.flowerBasket.flowerList):
self.popupFlowerGUI() self.popupFlowerGUI()
def __handleSaleDone(self, sell = 0): def __handleFlowerSaleDone(self, sell = 0):
self.ignore(self.flowerGuiDoneEvent) self.ignore(self.flowerGuiDoneEvent)
self.sendUpdate('completeFlowerSale', [sell]) self.sendUpdate('completeFlowerSale', [sell])
self.ignore('stoppedAsleep') self.ignore('stoppedAsleep')
self.flowerGui.destroy() self.flowerGui.destroy()
self.flowerGui = None self.flowerGui = None
return
def popupFlowerGUI(self): def popupFlowerGUI(self):
self.acceptOnce(self.flowerGuiDoneEvent, self.__handleSaleDone) self.acceptOnce(self.flowerGuiDoneEvent, self.__handleFlowerSaleDone)
self.flowerGui = FlowerSellGUI.FlowerSellGUI(self.flowerGuiDoneEvent) self.flowerGui = FlowerSellGUI.FlowerSellGUI(self.flowerGuiDoneEvent)
self.accept('stoppedAsleep', self.__handleSaleDone) self.accept('stoppedAsleep', self.__handleSaleDone)
def loadFishSellBox(self):
self.fishSellBox = loader.loadModel('phase_4/models/minigames/treasure_chest.bam')
self.fishSellBox.setPos(45, -165.75, 0.025)
self.fishSellBox.setH(210)
self.fishSellBox.reparentTo(render)
cSphere = CollisionSphere(0.0, 0.0, 0.0, 2.25)
cSphere.setTangible(0)
colNode = CollisionNode('FishSellBox')
colNode.addSolid(cSphere)
cSpherePath = self.fishSellBox.attachNewNode(colNode)
cSpherePath.hide()
cSpherePath.setCollideMask(ToontownGlobals.WallBitmask)
self.accept('enterFishSellBox', self.__touchedFishSellBox)
def __touchedFishSellBox(self, entry):
if base.localAvatar.doId in self.idList:
if base.localAvatar.fishTank.getFish():
self.popupFishGUI()
def __handleFishSaleDone(self, sell=0):
self.ignore(self.fishGuiDoneEvent)
self.sendUpdate('completeFishSale', [sell])
self.ignore('stoppedAsleep')
self.fishGui.destroy()
self.fishGui = None
def popupFishGUI(self):
self.acceptOnce(self.fishGuiDoneEvent, self.__handleFishSaleDone)
self.fishGui = FishSellGUI.FishSellGUI(self.fishGuiDoneEvent)
self.accept('stoppedAsleep', self.__handleFishSaleDone)
def thankSeller(self, mode, fish, maxFish):
if mode == ToontownGlobals.FISHSALE_TROPHY:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_TROPHY % (fish, maxFish))
elif mode == ToontownGlobals.FISHSALE_COMPLETE:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_THANKSFISH)
elif mode == ToontownGlobals.FISHSALE_NONE:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_NOFISH)
def closedAwardDialog(self, value): def closedAwardDialog(self, value):
self.awardDialog.destroy() self.awardDialog.destroy()
base.cr.playGame.getPlace().detectedGardenPlotDone() base.cr.playGame.getPlace().detectedGardenPlotDone()

View file

@ -11,7 +11,12 @@ from toontown.safezone import DistributedTreasureAI
from toontown.safezone import TreasureGlobals from toontown.safezone import TreasureGlobals
from DistributedCannonAI import * from DistributedCannonAI import *
from DistributedTargetAI import * from DistributedTargetAI import *
import DistributedTreasureChestAI, CannonGlobals, TableGlobals, HouseGlobals, time, random import CannonGlobals
import TableGlobals
import HouseGlobals
import time
import random
from toontown.fishing import FishGlobals
class Rental: class Rental:
def __init__(self, estate): def __init__(self, estate):
@ -158,9 +163,6 @@ class DistributedEstateAI(DistributedObjectAI):
spot.generateWithRequired(self.zoneId) spot.generateWithRequired(self.zoneId)
self.spots.append(spot) self.spots.append(spot)
self.treasureChest = DistributedTreasureChestAI.DistributedTreasureChestAI(self.air)
self.treasureChest.generateWithRequired(self.zoneId)
self.createTreasurePlanner() self.createTreasurePlanner()
def destroy(self): def destroy(self):
@ -182,9 +184,6 @@ class DistributedEstateAI(DistributedObjectAI):
self.rentalHandle.destroy() self.rentalHandle.destroy()
self.rentalHandle = None self.rentalHandle = None
if self.treasureChest:
self.treasureChest.requestDelete()
self.requestDelete() self.requestDelete()
def setEstateReady(self): def setEstateReady(self):
@ -483,6 +482,19 @@ class DistributedEstateAI(DistributedObjectAI):
def completeFlowerSale(self, todo0): def completeFlowerSale(self, todo0):
pass pass
def completeFishSale(self, sell):
avId = self.air.getAvatarIdFromSender()
av = self.air.doId2do.get(avId)
if av:
if sell:
trophyResult = self.air.fishManager.creditFishTank(av)
if trophyResult:
self.sendUpdateToAvatarId(avId, 'thankSeller', [ToontownGlobals.FISHSALE_TROPHY, len(av.fishCollection), FishGlobals.getTotalNumFish()])
else:
self.sendUpdateToAvatarId(avId, 'thankSeller', [ToontownGlobals.FISHSALE_COMPLETE, 0, 0])
else:
self.sendUpdateToAvatarId(avId, 'thankSeller', [ToontownGlobals.FISHSALE_NONE, 0, 0])
def awardedTrophy(self, todo0): def awardedTrophy(self, todo0):
pass pass

View file

@ -1,72 +0,0 @@
from direct.distributed.DistributedObject import DistributedObject
from pandac.PandaModules import *
from toontown.fishing import FishSellGUI
from toontown.toonbase import ToontownGlobals, TTLocalizer
import TreasureChestGlobals
class DistributedTreasureChest(DistributedObject):
def __init__(self, cr):
DistributedObject.__init__(self, cr)
self.cr = cr
self.createModel(45, -165.75, 0.025, 210)
self.initCollisions()
def delete(self):
self.ignore('enter' + self.cSphereNode.getName())
self.cSphereNodePath.removeNode()
self.model.removeNode()
self.destroyFishGui()
del self.cSphere
del self.cSphereNode
del self.cSphereNodePath
del self.model
DistributedObject.delete(self)
def destroyFishGui(self):
self.ignore('treasureChestSell')
if hasattr(self, 'fishGui'):
self.fishGui.destroy()
del self.fishGui
def createModel(self, x, y, z, h):
self.model = loader.loadModel('phase_4/models/minigames/treasure_chest.bam')
self.model.reparentTo(render)
self.model.setScale(1.5)
self.model.setPos(x, y, z)
self.model.setH(h)
def initCollisions(self):
self.cSphere = CollisionTube(0.0, 0.0, 0.0, 0.0, 0.0, 5.0, ToontownGlobals.TreasureChestSphereRadius)
self.cSphere.setTangible(0)
self.cSphereNode = CollisionNode('cSphereNode')
self.cSphereNode.addSolid(self.cSphere)
self.cSphereNodePath = self.model.attachNewNode(self.cSphereNode)
self.cSphereNodePath.hide()
self.cSphereNode.setCollideMask(ToontownGlobals.WallBitmask)
self.accept('enter' + self.cSphereNode.getName(), self.handleCollisionSphereEnter)
def handleCollisionSphereEnter(self, collEntry):
if not base.localAvatar.fishTank.getFish():
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_NOFISH)
return
base.setCellsActive(base.bottomCells, 0)
base.cr.playGame.getPlace().setState('stopped')
self.acceptOnce('treasureChestSell', self.handleSaleDone)
self.fishGui = FishSellGUI.FishSellGUI('treasureChestSell')
def handleSaleDone(self, sell):
self.destroyFishGui()
base.setCellsActive(base.bottomCells, 1)
base.cr.playGame.getPlace().setState('walk')
self.sendUpdate('completeSale', [sell])
def completeSaleResult(self, state, numFish, maxFish):
if state == TreasureChestGlobals.TROPHY:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_TROPHY % (numFish, maxFish))
elif state == TreasureChestGlobals.COMPLETE:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_THANKSFISH)
elif state == TreasureChestGlobals.NONE:
base.localAvatar.setSystemMessage(0, TTLocalizer.STOREOWNER_NOFISH)

View file

@ -1,22 +0,0 @@
from direct.distributed.DistributedObjectAI import DistributedObjectAI
from toontown.fishing import FishGlobals
import TreasureChestGlobals
class DistributedTreasureChestAI(DistributedObjectAI):
def completeSale(self, sell):
avId = self.air.getAvatarIdFromSender()
av = self.air.doId2do.get(avId)
if not av:
return
if sell:
trophyResult = self.air.fishManager.creditFishTank(av)
if trophyResult:
self.sendUpdateToAvatarId(avId, 'completeSaleResult', [TreasureChestGlobals.TROPHY, len(av.fishCollection), FishGlobals.getTotalNumFish()])
else:
self.sendUpdateToAvatarId(avId, 'completeSaleResult', [TreasureChestGlobals.COMPLETE, 0, 0])
else:
self.sendUpdateToAvatarId(avId, 'completeSaleResult', [TreasureChestGlobals.NONE, 0, 0])

View file

@ -1,3 +0,0 @@
TROPHY = 0
COMPLETE = 1
NONE = 2

View file

@ -1637,5 +1637,7 @@ PropIdToColor = [
] ]
BugReportSite = 'https://bugs.launchpad.net/toontown-united/+filebug' BugReportSite = 'https://bugs.launchpad.net/toontown-united/+filebug'
TreasureChestSphereRadius = 1.0
CostPerLaffRestock = 3 CostPerLaffRestock = 3
FISHSALE_NONE = 0
FISHSALE_COMPLETE = 1
FISHSALE_TROPHY = 2