2022-12-16 18:40:57 -06:00
|
|
|
from panda3d.core import *
|
2019-11-02 17:27:54 -05:00
|
|
|
from direct.directnotify import DirectNotifyGlobal
|
2019-12-30 00:07:56 -06:00
|
|
|
from . import DistributedDoorAI, DistributedPetshopInteriorAI, FADoorCodes, DoorTypes
|
2019-11-02 17:27:54 -05:00
|
|
|
from toontown.toon import NPCToons
|
|
|
|
from toontown.toonbase import ToontownGlobals
|
|
|
|
from toontown.quest import Quests
|
|
|
|
from toontown.pets import DistributedPetAI, PetTraits, PetUtil
|
|
|
|
from toontown.hood import ZoneUtil
|
|
|
|
|
|
|
|
class PetshopBuildingAI:
|
|
|
|
|
|
|
|
def __init__(self, air, exteriorZone, interiorZone, blockNumber):
|
|
|
|
self.air = air
|
|
|
|
self.exteriorZone = exteriorZone
|
|
|
|
self.interiorZone = interiorZone
|
|
|
|
self.setup(blockNumber)
|
|
|
|
|
|
|
|
def cleanup(self):
|
|
|
|
for npc in self.npcs:
|
|
|
|
npc.requestDelete()
|
|
|
|
|
|
|
|
del self.npcs
|
|
|
|
self.door.requestDelete()
|
|
|
|
del self.door
|
|
|
|
self.insideDoor.requestDelete()
|
|
|
|
del self.insideDoor
|
|
|
|
self.interior.requestDelete()
|
|
|
|
del self.interior
|
|
|
|
|
|
|
|
def setup(self, blockNumber):
|
|
|
|
self.interior = DistributedPetshopInteriorAI.DistributedPetshopInteriorAI(blockNumber, self.air, self.interiorZone)
|
|
|
|
self.npcs = NPCToons.createNpcsInZone(self.air, self.interiorZone)
|
|
|
|
seeds = self.air.petMgr.getAvailablePets(1, len(self.npcs))
|
|
|
|
self.interior.generateWithRequired(self.interiorZone)
|
|
|
|
door = DistributedDoorAI.DistributedDoorAI(self.air, blockNumber, DoorTypes.EXT_STANDARD)
|
|
|
|
insideDoor = DistributedDoorAI.DistributedDoorAI(self.air, blockNumber, DoorTypes.INT_STANDARD)
|
|
|
|
door.setOtherDoor(insideDoor)
|
|
|
|
insideDoor.setOtherDoor(door)
|
|
|
|
door.zoneId = self.exteriorZone
|
|
|
|
insideDoor.zoneId = self.interiorZone
|
|
|
|
door.generateWithRequired(self.exteriorZone)
|
|
|
|
insideDoor.generateWithRequired(self.interiorZone)
|
|
|
|
self.door = door
|
|
|
|
self.insideDoor = insideDoor
|
|
|
|
|
|
|
|
def createPet(self, ownerId, seed):
|
|
|
|
zoneId = self.interiorZone
|
|
|
|
safeZoneId = ZoneUtil.getCanonicalSafeZoneId(zoneId)
|
|
|
|
name, dna, traitSeed = PetUtil.getPetInfoFromSeed(seed, safeZoneId)
|
|
|
|
pet = DistributedPetAI.DistributedPetAI(self.air, dna=dna)
|
|
|
|
pet.setOwnerId(ownerId)
|
|
|
|
pet.setPetName(name)
|
|
|
|
pet.traits = PetTraits.PetTraits(traitSeed=traitSeed, safeZoneId=safeZoneId)
|
|
|
|
pet.generateWithRequired(zoneId)
|
|
|
|
pet.setPos(0, 0, 0)
|
|
|
|
pet.b_setParent(ToontownGlobals.SPRender)
|