class DistributedHouseAI(DistributedObjectAI): notify = directNotify.newCategory("DistributedHouseAI") def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.gender = 1 self.isInteriorInitialized = 1 self.atticItems = CatalogItemList(store=Customization) self.interiorItems = CatalogItemList(store=Customization) self.interiorWallpaper = CatalogItemList(store=Customization) self.atticWallpaper = CatalogItemList(store=Customization) self.interiorWindows = CatalogItemList(store=Customization) self.atticWindows = CatalogItemList(store=Customization) self.deletedItems = CatalogItemList(store=Customization) def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone() self.door = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.door.setSwing(3) self.door.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setSwing(3) self.interiorDoor.setOtherDoor(self.door) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) if self.avatarId: self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.sendUpdate('setHouseReady', []) def delete(self): self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() if self.avatarId: self.mailbox.requestDelete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPow(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setGender(self, genderIndex): self.gender = genderIndex def getGender(self): return self.gender def setAtticItems(self, atticItems): self.atticItems = CatalogItemList(atticItems, store=Customization) def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems.getBlob() def setInteriorItems(self, interiorItems): self.interiorItems = CatalogItemList(interiorItems, store=Customization | Location) def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems.getBlob() def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = CatalogItemList(atticWallpaper, store=Customization) def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper.getBlob() def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = CatalogItemList(interiorWallpaper, store=Customization) def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper.getBlob() def setAtticWindows(self, atticWindows): self.atticWindows = CatalogItemList(atticWindows, store=Customization) def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows.getBlob() def setInteriorWindows(self, interiorWindows): self.interiorWindows = CatalogItemList(interiorWindows, store=Customization | WindowPlacement) def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows.getBlob() def setDeletedItems(self, deletedItems): self.deletedItems = CatalogItemList(deletedItems, store=Customization) def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems.getBlob() def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def setHouseReady(self): pass def addAtticItem(self, item): self.interior.furnitureManager.saveToHouse() if item.getFlags() & FLTrunk: self.atticItems.append(item) elif item.replacesExisting() and item.hasExisting(): if item.getFlags() & FLCloset: closets = ClosetToClothes.keys() for itItem in self.interiorItems: if itItem.furnitureType in closets: posHpr = itItem.posHpr self.interiorItems.remove(itItem) item.posHpr = posHpr self.interiorItems.append(item) break for itItem in self.atticItems: if itItem.furnitureType in closets: self.atticItems.remove(itItem) self.atticItems.append(item) break else: self.atticItems.append(item) self.d_setAtticItems(self.atticItems.getBlob()) self.d_setInteriorItems(self.interiorItems.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWindow(self, item): self.interior.furnitureManager.saveToHouse() self.atticWindows.append(item) self.d_setAtticWindows(self.atticWindows.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWallpaper(self, item): self.interior.furnitureManager.saveToHouse() self.atticWallpaper.append(item) self.d_setAtticWallpaper(self.atticWallpaper.getBlob()) self.interior.furnitureManager.loadFromHouse()
class DistributedHouseAI(DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedHouseAI') def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.gender = 1 self.isInteriorInitialized = 1 self.atticItems = CatalogItemList(store=Customization) self.interiorItems = CatalogItemList(store=Customization) self.interiorWallpaper = CatalogItemList(store=Customization) self.atticWallpaper = CatalogItemList(store=Customization) self.interiorWindows = CatalogItemList(store=Customization) self.atticWindows = CatalogItemList(store=Customization) self.deletedItems = CatalogItemList(store=Customization) def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone(owner=self.air.estateManager) self.door = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.door.setSwing(3) self.door.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setSwing(3) self.interiorDoor.setOtherDoor(self.door) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) if self.avatarId: self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.sendUpdate('setHouseReady', []) def delete(self): self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() if self.avatarId: self.mailbox.requestDelete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPow(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setGender(self, genderIndex): self.gender = genderIndex def getGender(self): return self.gender def setAtticItems(self, atticItems): self.atticItems = CatalogItemList(atticItems, store=Customization) def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems.getBlob() def setInteriorItems(self, interiorItems): self.interiorItems = CatalogItemList(interiorItems, store=Customization | Location) def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems.getBlob() def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = CatalogItemList(atticWallpaper, store=Customization) def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper.getBlob() def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = CatalogItemList(interiorWallpaper, store=Customization) def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper.getBlob() def setAtticWindows(self, atticWindows): self.atticWindows = CatalogItemList(atticWindows, store=Customization) def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows.getBlob() def setInteriorWindows(self, interiorWindows): self.interiorWindows = CatalogItemList(interiorWindows, store=Customization | WindowPlacement) def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows.getBlob() def setDeletedItems(self, deletedItems): self.deletedItems = CatalogItemList(deletedItems, store=Customization) def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems.getBlob() def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def setHouseReady(self): pass def addAtticItem(self, item): self.interior.furnitureManager.saveToHouse() if item.getFlags() & FLTrunk: self.atticItems.append(item) if item.replacesExisting() and item.hasExisting(): if item.getFlags() & FLCloset: closets = ClosetToClothes.keys() for itItem in self.interiorItems: if itItem.furnitureType in closets: posHpr = itItem.posHpr self.interiorItems.remove(itItem) item.posHpr = posHpr self.interiorItems.append(item) break for itItem in self.atticItems: if itItem.furnitureType in closets: self.atticItems.remove(itItem) self.atticItems.append(item) break else: self.atticItems.append(item) self.d_setAtticItems(self.atticItems.getBlob()) self.d_setInteriorItems(self.interiorItems.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWindow(self, item): self.interior.furnitureManager.saveToHouse() self.atticWindows.append(item) self.d_setAtticWindows(self.atticWindows.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWallpaper(self, item): self.interior.furnitureManager.saveToHouse() self.atticWallpaper.append(item) self.d_setAtticWallpaper(self.atticWallpaper.getBlob()) self.interior.furnitureManager.loadFromHouse()
class DistributedHouseAI(DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistributedHouseAI") def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.isInteriorInitialized = 1 # Only fresh DB houses are not inited. self.atticItems = '' self.interiorItems = '' self.atticItems = '' self.interiorWallpaper = '' self.atticWallpaper = '' self.interiorWindows = '' self.atticWindows = '' self.deletedItems = '' def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone() self.door = DistributedHouseDoorAI(simbase.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.door.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(simbase.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setOtherDoor(self.door) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.sendUpdate('setHouseReady', []) def delete(self): self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPow(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setAtticItems(self, atticItems): self.atticItems = atticItems def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems def setInteriorItems(self, interiorItems): self.interiorItems = interiorItems def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = atticWallpaper def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = interiorWallpaper def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper def setAtticWindows(self, atticWindows): self.atticWindows = atticWindows def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows def setInteriorWindows(self, interiorWindows): self.interiorWindows = interiorWindows def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows def setDeletedItems(self, deletedItems): self.deletedItems = deletedItems def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def setHouseReady(self): pass
class DistributedHouseAI(DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistributedHouseAI") def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.isInteriorInitialized = 0 self.atticItems = '' self.interiorItems = '' self.atticItems = '' self.interiorWallpaper = '' self.atticWallpaper = '' self.interiorWindows = '' self.atticWindows = '' self.deletedItems = '' self.mailbox = None def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone() self.door = DistributedHouseDoorAI(self.air, self.doId, DoorTypes.EXT_STANDARD, swing = 3) self.door.generateWithRequired(self.zoneId) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) self.interiorDoor = DistributedHouseDoorAI(self.air, self.interior.doId, DoorTypes.INT_STANDARD, swing = 3) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interiorDoor.setOtherDoor(self.door) self.door.zoneId = self.zoneId self.interiorDoor.zoneId = self.interiorZone if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) self.sendUpdate('setHouseReady', []) def delete(self): if self.mailbox: self.mailbox.requestDelete() self.mailbox = None self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPow(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setAtticItems(self, atticItems): self.atticItems = atticItems def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems def setInteriorItems(self, interiorItems): self.interiorItems = interiorItems def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = atticWallpaper def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = interiorWallpaper def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper def setAtticWindows(self, atticWindows): self.atticWindows = atticWindows def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows def setInteriorWindows(self, interiorWindows): self.interiorWindows = interiorWindows def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows def setDeletedItems(self, deletedItems): self.deletedItems = deletedItems def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def addWallpaper(self, item): x = self.interior.furnitureManager.atticWallpaper x.append(item) self.b_setAtticWallpaper(x.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWindow(self, item): x = self.interior.furnitureManager.atticWindows x.append(item) self.b_setAtticWindows(x.getBlob()) self.interior.furnitureManager.loadFromHouse() def addAtticItem(self, item): x = self.interior.furnitureManager.atticItems x.append(item) self.b_setAtticItems(x.getBlob()) self.interior.furnitureManager.loadFromHouse()
class DistributedHouseAI(DistributedObjectAI): notify = directNotify.newCategory('DistributedHouseAI') def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.gender = 1 self.isInteriorInitialized = 1 self.gardenManager = None self.gardenData = '' self.atticItems = CatalogItemList(store=Customization) self.interiorItems = CatalogItemList(store=Customization) self.interiorWallpaper = CatalogItemList(store=Customization) self.atticWallpaper = CatalogItemList(store=Customization) self.interiorWindows = CatalogItemList(store=Customization) self.atticWindows = CatalogItemList(store=Customization) self.deletedItems = CatalogItemList(store=Customization) def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone() self.door = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.door.setSwing(3) self.door.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setSwing(3) self.interiorDoor.setOtherDoor(self.door) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) if self.avatarId: self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) self.createGardenManager() if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.sendUpdate('setHouseReady', []) def delete(self): self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() if self.avatarId: self.mailbox.requestDelete() if self.gardenManager is not None: self.gardenManager.delete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPos(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setGender(self, genderIndex): self.gender = genderIndex def getGender(self): return self.gender def setAtticItems(self, atticItems): self.atticItems = CatalogItemList(atticItems, store=Customization) def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems.getBlob() def setInteriorItems(self, interiorItems): self.interiorItems = CatalogItemList(interiorItems, store=Customization | Location) def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems.getBlob() def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = CatalogItemList(atticWallpaper, store=Customization) def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper.getBlob() def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = CatalogItemList(interiorWallpaper, store=Customization) def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper.getBlob() def setAtticWindows(self, atticWindows): self.atticWindows = CatalogItemList(atticWindows, store=Customization) def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows.getBlob() def setInteriorWindows(self, interiorWindows): self.interiorWindows = CatalogItemList(interiorWindows, store=Customization | WindowPlacement) def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows.getBlob() def setDeletedItems(self, deletedItems): self.deletedItems = CatalogItemList(deletedItems, store=Customization) def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems.getBlob() def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def setHouseReady(self): pass def addAtticItem(self, item): self.interior.furnitureManager.saveToHouse() if item.getFlags() & FLTrunk: self.atticItems.append(item) elif item.replacesExisting() and item.hasExisting(): if item.getFlags() & FLCloset: closets = list(ClosetToClothes.keys()) for itItem in self.interiorItems: if itItem.furnitureType in closets: posHpr = itItem.posHpr self.interiorItems.remove(itItem) item.posHpr = posHpr self.interiorItems.append(item) break for itItem in self.atticItems: if itItem.furnitureType in closets: self.atticItems.remove(itItem) self.atticItems.append(item) break else: self.atticItems.append(item) self.d_setAtticItems(self.atticItems.getBlob()) self.d_setInteriorItems(self.interiorItems.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWindow(self, item): self.interior.furnitureManager.saveToHouse() self.atticWindows.append(item) self.d_setAtticWindows(self.atticWindows.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWallpaper(self, item): self.interior.furnitureManager.saveToHouse() self.atticWallpaper.append(item) self.d_setAtticWallpaper(self.atticWallpaper.getBlob()) self.interior.furnitureManager.loadFromHouse() def setGardenData(self, gardenData): self.gardenData = gardenData def d_setGardenData(self, gardenData): self.sendUpdate('setGardenData', [gardenData]) def b_setGardenData(self, gardenData): self.setGardenData(gardenData) self.d_setGardenData(gardenData) def getGardenData(self): return self.gardenData def hasGardenData(self): return self.gardenData != b'' def placeStarterGarden(self): av = self.air.doId2do.get(self.avatarId) if av is None: return if av.getGardenStarted(): self.notify.warning( 'Avatar %s tried to start their garden twice!' % self.avatarId) return # State that the avatar has started gardening av.b_setGardenStarted(1) # Create the GardenManagerAI self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() def createGardenManager(self): if not self.avatarId: return av = self.air.doId2do.get(self.avatarId) if av is not None: if av.getGardenStarted(): self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() return def __gotOwner(dclass, fields, self=self): if dclass != self.air.dclassesByName['DistributedToonAI']: return gardenStarted = fields['setGardenStarted'][0] if gardenStarted: self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() self.air.dbInterface.queryObject(self.air.dbId, self.avatarId, __gotOwner)
class DistributedHouseAI(DistributedObjectAI): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedHouseAI') def __init__(self, air): DistributedObjectAI.__init__(self, air) self.estate = None self.housePos = 0 self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.atticItems = CatalogItemList(store=CatalogItem.Customization) self.interiorItems = CatalogItemList(store=CatalogItem.Customization) self.atticWallpaper = CatalogItemList(store=CatalogItem.Customization) self.interiorWallpaper = CatalogItemList( store=CatalogItem.Customization) self.atticWindows = CatalogItemList(store=CatalogItem.Customization) self.interiorWindows = CatalogItemList(store=CatalogItem.Customization) self.deletedItems = CatalogItemList(store=CatalogItem.Customization) self.cannonEnabled = 0 self.interiorZone = None self.exteriorDoor = None self.interiorDoor = None self.interior = None self.mailbox = None self.gardenManager = None def announceGenerate(self): DistributedObjectAI.announceGenerate(self) # Allocate a zone for this house's interior: self.interiorZone = self.air.allocateZone() # Setup interior & exterior doors: self.exteriorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.exteriorDoor.setSwing(3) self.exteriorDoor.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setSwing(3) self.interiorDoor.setOtherDoor(self.exteriorDoor) self.interiorDoor.generateWithRequired(self.interiorZone) self.exteriorDoor.setOtherDoor(self.interiorDoor) # Setup interior: self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) # Generate our mailbox: if self.avatarId: self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) # Send the house ready update: self.d_setHouseReady() def delete(self): self.exteriorDoor.requestDelete() self.interiorDoor.requestDelete() if self.interior.furnitureManager: self.interior.furnitureManager.requestDelete() self.interior.requestDelete() if self.avatarId: self.mailbox.requestDelete() if self.gardenManager: self.gardenManager.destroy() self.air.deallocateZone(self.interiorZone) self.estate = None DistributedObjectAI.delete(self) def setHousePos(self, housePos): self.housePos = housePos def d_setHousePos(self, housePos): self.sendUpdate('setHousePos', [housePos]) def b_setHousePos(self, housePos): self.setHousePos(housePos) self.d_setHousePos(housePos) def getHousePos(self): return self.housePos def setHouseType(self, houseType): self.houseType = houseType def d_setHouseType(self, houseType): self.sendUpdate('setHouseType', [houseType]) def b_setHouseType(self, houseType): self.setHouseType(houseType) self.d_setHouseType(houseType) def getHouseType(self): return self.houseType def setGardenPos(self, gardenPos): self.gardenPos = gardenPos def d_setGardenPos(self, gardenPos): self.sendUpdate('setGardenPos', [gardenPos]) def b_setGardenPos(self, gardenPos): self.setGardenPos(gardenPos) self.d_setGardenPos(gardenPos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avatarId): self.avatarId = avatarId def d_setAvatarId(self, avatarId): self.sendUpdate('setAvatarId', [avatarId]) def b_setAvatarId(self, avatarId): self.setAvatarId(avatarId) self.d_setAvatarId(avatarId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setAtticItems(self, atticItems): self.atticItems = CatalogItemList(atticItems, store=CatalogItem.Customization) def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems.getBlob() def setInteriorItems(self, interiorItems): self.interiorItems = CatalogItemList(interiorItems, store=CatalogItem.Customization | CatalogItem.Location) def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems.getBlob() def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = CatalogItemList(atticWallpaper, store=CatalogItem.Customization) def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper.getBlob() def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = CatalogItemList( interiorWallpaper, store=CatalogItem.Customization) def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper.getBlob() def setAtticWindows(self, atticWindows): self.atticWindows = CatalogItemList(atticWindows, store=CatalogItem.Customization) def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows.getBlob() def setInteriorWindows(self, interiorWindows): self.interiorWindows = CatalogItemList(interiorWindows, store=CatalogItem.Customization | CatalogItem.WindowPlacement) def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows.getBlob() def setDeletedItems(self, deletedItems): self.deletedItems = CatalogItemList(deletedItems, store=CatalogItem.Customization) def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems.getBlob() def setCannonEnabled(self, cannonEnabled): self.cannonEnabled = cannonEnabled def d_setCannonEnabled(self, cannonEnabled): self.sendUpdate('setCannonEnabled', [cannonEnabled]) def b_setCannonEnabled(self, cannonEnabled): self.setCannonEnabled(cannonEnabled) self.d_setCannonEnabled(cannonEnabled) def getCannonEnabled(self): return self.cannonEnabled def d_setHouseReady(self): self.sendUpdate('setHouseReady') def addAtticItem(self, item): if item.replacesExisting and item.hasExisting(): if item.getFlags() & FLCloset: closet = ClosetToClothes.keys() for atticItem in self.atticItems: if atticItem.furnitureType in closet: self.interior.furnitureManager.atticItems.remove( atticItem) break for interiorItem in self.interior.furnitureManager.items[:]: if interiorItem.catalogItem.furnitureType in closet: interiorItem.requestDelete() self.interior.furnitureManager.items.remove( interiorItem) item.posHpr = interiorItem.catalogItem.posHpr self.interior.furnitureManager.generateItem(item) self.interior.furnitureManager.saveFurniture() return self.interior.furnitureManager.atticItems.append(item) self.interior.furnitureManager.saveFurniture() def addWallpaper(self, item): self.interior.furnitureManager.atticWallpaper.append(item) self.interior.furnitureManager.saveFurniture() def addWindow(self, item): self.interior.furnitureManager.atticWindows.append(item) self.interior.furnitureManager.saveFurniture() def placeStarterGarden(self): if not config.GetBool('want-gardening', False): return if not self.estate: return av = self.air.doId2do.get(self.getAvatarId()) if av is None: return if av.getGardenStarted(): self.notify.warning( 'Avatar %s tried to start their garden twice!' % self.getAvatarId()) return # Set the avatar's garden to started: av.b_setGardenStarted(1) # Create the GardenManagerAI: self.gardenManager = GardenManagerAI(self.air, self.estate) self.gardenManager.loadGarden(av.doId) def createGardenManager(self): if not config.GetBool('want-gardening', False): return if not self.estate: return if not self.getAvatarId(): return av = self.air.doId2do.get(self.getAvatarId()) if av is not None: if av.getGardenStarted(): self.gardenManager = GardenManagerAI(self.air, self.estate) self.gardenManager.loadGarden(av.doId) return def __gotOwner(dclass, fields, self=self): if dclass != self.air.dclassesByName['DistributedToonAI']: return gardenStarted = fields['setGardenStarted'][0] if gardenStarted: self.gardenManager = GardenManagerAI(self.air, self.estate) self.gardenManager.loadGarden(self.getAvatarId()) self.air.dbInterface.queryObject(self.air.dbId, self.getAvatarId(), __gotOwner)
class DistributedHouseAI(DistributedObjectAI): notify = directNotify.newCategory('DistributedHouseAI') def __init__(self, air): DistributedObjectAI.__init__(self, air) self.houseType = 0 self.gardenPos = 0 self.avatarId = 0 self.name = '' self.color = 0 self.housePos = 0 self.gender = 1 self.isInteriorInitialized = 1 self.gardenManager = None self.gardenData = '' self.atticItems = CatalogItemList(store=Customization) self.interiorItems = CatalogItemList(store=Customization) self.interiorWallpaper = CatalogItemList(store=Customization) self.atticWallpaper = CatalogItemList(store=Customization) self.interiorWindows = CatalogItemList(store=Customization) self.atticWindows = CatalogItemList(store=Customization) self.deletedItems = CatalogItemList(store=Customization) def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.interiorZone = self.air.allocateZone() self.door = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.EXT_STANDARD) self.door.setSwing(3) self.door.generateWithRequired(self.zoneId) self.interiorDoor = DistributedHouseDoorAI(self.air, self.getDoId(), DoorTypes.INT_STANDARD) self.interiorDoor.setSwing(3) self.interiorDoor.setOtherDoor(self.door) self.interiorDoor.generateWithRequired(self.interiorZone) self.door.setOtherDoor(self.interiorDoor) self.interior = DistributedHouseInteriorAI(self.air, self) self.interior.setHouseIndex(self.housePos) self.interior.setHouseId(self.getDoId()) self.interior.generateWithRequired(self.interiorZone) if self.avatarId: self.mailbox = DistributedMailboxAI(self.air, self) self.mailbox.generateWithRequired(self.zoneId) if config.GetBool('want-gardening', False): self.createGardenManager() if not self.isInteriorInitialized: self.notify.info('Initializing interior...') self.interior.initialize() self.b_setInteriorInitialized(1) self.sendUpdate('setHouseReady', []) def delete(self): self.door.requestDelete() self.interiorDoor.requestDelete() self.interior.requestDelete() if self.avatarId: self.mailbox.requestDelete() if self.gardenManager is not None: self.gardenManager.delete() self.air.deallocateZone(self.interiorZone) DistributedObjectAI.delete(self) def setHousePos(self, pos): self.housePos = pos def d_setHousePos(self, pos): self.sendUpdate('setHousePos', [pos]) def b_setHousePos(self, pos): self.setHousePos(pos) self.d_setHousePos(pos) def getHousePos(self): return self.housePos def setHouseType(self, type): self.houseType = type def d_setHouseType(self, type): self.sendUpdate('setHouseType', [type]) def b_setHouseType(self, type): self.setHouseType(type) self.d_setHouseType(type) def getHouseType(self): return self.houseType def setGardenPos(self, pos): self.gardenPos = pos def d_setGardenPos(self, pos): self.sendUpdate('setGardenPos', [pos]) def b_setGardenPos(self, pos): self.setGardenPos(pos) self.d_setGardenPos(pos) def getGardenPos(self): return self.gardenPos def setAvatarId(self, avId): self.avatarId = avId def d_setAvatarId(self, avId): self.sendUpdate('setAvatarId', [avId]) def b_setAvatarId(self, avId): self.setAvatarId(avId) self.d_setAvatarId(avId) def getAvatarId(self): return self.avatarId def setName(self, name): self.name = name def d_setName(self, name): self.sendUpdate('setName', [name]) def b_setName(self, name): self.setName(name) self.d_setName(name) def getName(self): return self.name def setColor(self, color): self.color = color def d_setColor(self, color): self.sendUpdate('setColor', [color]) def b_setColor(self, color): self.setColor(color) self.d_setColor(color) def getColor(self): return self.color def setGender(self, genderIndex): self.gender = genderIndex def getGender(self): return self.gender def setAtticItems(self, atticItems): self.atticItems = CatalogItemList(atticItems, store=Customization) def d_setAtticItems(self, atticItems): self.sendUpdate('setAtticItems', [atticItems]) def b_setAtticItems(self, atticItems): self.setAtticItems(atticItems) self.d_setAtticItems(atticItems) def getAtticItems(self): return self.atticItems.getBlob() def setInteriorItems(self, interiorItems): self.interiorItems = CatalogItemList(interiorItems, store=Customization | Location) def d_setInteriorItems(self, interiorItems): self.sendUpdate('setInteriorItems', [interiorItems]) def b_setInteriorItems(self, interiorItems): self.setInteriorItems(interiorItems) self.d_setInteriorItems(interiorItems) def getInteriorItems(self): return self.interiorItems.getBlob() def setAtticWallpaper(self, atticWallpaper): self.atticWallpaper = CatalogItemList(atticWallpaper, store=Customization) def d_setAtticWallpaper(self, atticWallpaper): self.sendUpdate('setAtticWallpaper', [atticWallpaper]) def b_setAtticWallpaper(self, atticWallpaper): self.setAtticWallpaper(atticWallpaper) self.d_setAtticWallpaper(atticWallpaper) def getAtticWallpaper(self): return self.atticWallpaper.getBlob() def setInteriorWallpaper(self, interiorWallpaper): self.interiorWallpaper = CatalogItemList(interiorWallpaper, store=Customization) def d_setInteriorWallpaper(self, interiorWallpaper): self.sendUpdate('setInteriorWallpaper', [interiorWallpaper]) def b_setInteriorWallpaper(self, interiorWallpaper): self.setInteriorWallpaper(interiorWallpaper) self.d_setInteriorWallpaper(interiorWallpaper) def getInteriorWallpaper(self): return self.interiorWallpaper.getBlob() def setAtticWindows(self, atticWindows): self.atticWindows = CatalogItemList(atticWindows, store=Customization) def d_setAtticWindows(self, atticWindows): self.sendUpdate('setAtticWindows', [atticWindows]) def b_setAtticWindows(self, atticWindows): self.setAtticWindows(atticWindows) self.d_setAtticWindows(atticWindows) def getAtticWindows(self): return self.atticWindows.getBlob() def setInteriorWindows(self, interiorWindows): self.interiorWindows = CatalogItemList(interiorWindows, store=Customization | WindowPlacement) def d_setInteriorWindows(self, interiorWindows): self.sendUpdate('setInteriorWindows', [interiorWindows]) def b_setInteriorWindows(self, interiorWindows): self.setInteriorWindows(interiorWindows) self.d_setInteriorWindows(interiorWindows) def getInteriorWindows(self): return self.interiorWindows.getBlob() def setDeletedItems(self, deletedItems): self.deletedItems = CatalogItemList(deletedItems, store=Customization) def d_setDeletedItems(self, deletedItems): self.sendUpdate('setDeletedItems', [deletedItems]) def b_setDeletedItems(self, deletedItems): self.setDeletedItems(deletedItems) self.d_setDeletedItems(deletedItems) def getDeletedItems(self): return self.deletedItems.getBlob() def setInteriorInitialized(self, initialized): self.isInteriorInitialized = initialized def d_setInteriorInitialized(self, initialized): self.sendUpdate('setInteriorInitialized', [initialized]) def b_setInteriorInitialized(self, initialized): self.setInteriorInitialized(initialized) self.d_setInteriorInitialized(initialized) def getInteriorInitialized(self): return self.isInteriorInitialized def setCannonEnabled(self, todo0): pass def getCannonEnabled(self): return 0 def setHouseReady(self): pass def addAtticItem(self, item): self.interior.furnitureManager.saveToHouse() if item.getFlags() & FLTrunk: self.atticItems.append(item) elif item.replacesExisting() and item.hasExisting(): if item.getFlags() & FLCloset: closets = ClosetToClothes.keys() for itItem in self.interiorItems: if itItem.furnitureType in closets: posHpr = itItem.posHpr self.interiorItems.remove(itItem) item.posHpr = posHpr self.interiorItems.append(item) break for itItem in self.atticItems: if itItem.furnitureType in closets: self.atticItems.remove(itItem) self.atticItems.append(item) break else: self.atticItems.append(item) self.d_setAtticItems(self.atticItems.getBlob()) self.d_setInteriorItems(self.interiorItems.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWindow(self, item): self.interior.furnitureManager.saveToHouse() self.atticWindows.append(item) self.d_setAtticWindows(self.atticWindows.getBlob()) self.interior.furnitureManager.loadFromHouse() def addWallpaper(self, item): self.interior.furnitureManager.saveToHouse() self.atticWallpaper.append(item) self.d_setAtticWallpaper(self.atticWallpaper.getBlob()) self.interior.furnitureManager.loadFromHouse() def setGardenData(self, gardenData): self.gardenData = gardenData def d_setGardenData(self, gardenData): self.sendUpdate('setGardenData', [gardenData]) def b_setGardenData(self, gardenData): self.setGardenData(gardenData) self.d_setGardenData(gardenData) def getGardenData(self): return self.gardenData def hasGardenData(self): return self.gardenData != '' def placeStarterGarden(self): av = self.air.doId2do.get(self.avatarId) if av is None: return if av.getGardenStarted(): self.notify.warning('Avatar %s tried to start their garden twice!' % self.avatarId) return # State that the avatar has started gardening av.b_setGardenStarted(1) # Create the GardenManagerAI self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() def createGardenManager(self): if not self.avatarId: return av = self.air.doId2do.get(self.avatarId) if av is not None: if av.getGardenStarted(): self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() return def __gotOwner(dclass, fields, self=self): if dclass != self.air.dclassesByName['DistributedToonAI']: return gardenStarted = fields['setGardenStarted'][0] if gardenStarted: self.gardenManager = GardenManagerAI(self.air, self) self.gardenManager.loadGarden() self.air.dbInterface.queryObject(self.air.dbId, self.avatarId, __gotOwner)