From 5d4bb8c5a0565eae9c49f04ec0fed86207e568e1 Mon Sep 17 00:00:00 2001 From: John Cote Date: Wed, 27 Nov 2019 21:10:20 -0500 Subject: [PATCH] general: rest of tonight's progress changes include: - update .gitignore to ignore cog building backups - set text minfilter to more closely resemble TTO - fix more issues with cog battles - additionally, setup server code that cog battles require (mostly stubs) - begin work on cog buildings - can interact with gag shop clerks now - can also interact with other NPCs, they will always reject you for now --- .gitignore | 1 + etc/Configrc.prc | 1 + otp/avatar/DistributedAvatar.py | 1 + toontown/ai/ToontownAIRepository.py | 19 +++++++++++++++++++ toontown/battle/MovieToonVictory.py | 1 + toontown/building/DistributedElevatorExt.py | 1 + toontown/coghq/CogHQExterior.py | 1 + toontown/quest/QuestManagerAI.py | 20 ++++++++++++++++++++ toontown/shtiker/CogPageManagerAI.py | 14 ++++++++++++++ toontown/suit/DistributedSuitBase.py | 1 + toontown/toon/DistributedNPCClerk.py | 16 ++++++++++++---- 11 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 toontown/quest/QuestManagerAI.py create mode 100644 toontown/shtiker/CogPageManagerAI.py diff --git a/.gitignore b/.gitignore index 867d41d..37321f8 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ whitelist/ *.DS_Store *.jpg .idea +*.buildings diff --git a/etc/Configrc.prc b/etc/Configrc.prc index 95b0298..44ccd70 100644 --- a/etc/Configrc.prc +++ b/etc/Configrc.prc @@ -96,6 +96,7 @@ audio-master-sfx-volume 1 audio-master-music-volume 1 server-type prod want-dev 0 +text-minfilter linear_mipmap_linear # TEMP fake-playtoken dev diff --git a/otp/avatar/DistributedAvatar.py b/otp/avatar/DistributedAvatar.py index 456f84d..8c23cfc 100644 --- a/otp/avatar/DistributedAvatar.py +++ b/otp/avatar/DistributedAvatar.py @@ -3,6 +3,7 @@ import string from pandac.PandaModules import * from direct.distributed import DistributedNode from direct.actor.DistributedActor import DistributedActor +from direct.interval.IntervalGlobal import * from direct.task import Task from direct.showbase import PythonUtil from libotp import Nametag diff --git a/toontown/ai/ToontownAIRepository.py b/toontown/ai/ToontownAIRepository.py index 2e33b5d..f68ee69 100644 --- a/toontown/ai/ToontownAIRepository.py +++ b/toontown/ai/ToontownAIRepository.py @@ -8,6 +8,7 @@ from toontown.ai.HolidayManagerAI import HolidayManagerAI from toontown.ai.NewsManagerAI import NewsManagerAI from toontown.building.DistributedTrophyMgrAI import DistributedTrophyMgrAI from toontown.catalog.CatalogManagerAI import CatalogManagerAI +from toontown.coghq.PromotionManagerAI import PromotionManagerAI from toontown.distributed.ToontownDistrictAI import ToontownDistrictAI from toontown.distributed.ToontownDistrictStatsAI import ToontownDistrictStatsAI from toontown.distributed.ToontownInternalRepository import ToontownInternalRepository @@ -19,6 +20,8 @@ from toontown.hood.DLHoodDataAI import DLHoodDataAI from toontown.hood.MMHoodDataAI import MMHoodDataAI from toontown.hood.TTHoodDataAI import TTHoodDataAI from toontown.pets.PetManagerAI import PetManagerAI +from toontown.quest.QuestManagerAI import QuestManagerAI +from toontown.shtiker.CogPageManagerAI import CogPageManagerAI from toontown.suit.SuitInvasionManagerAI import SuitInvasionManagerAI from toontown.toon import NPCToons from toontown.toonbase import ToontownGlobals @@ -40,6 +43,9 @@ class ToontownAIRepository(ToontownInternalRepository): self.zoneDataStore = None self.petMgr = None self.suitInvasionManager = None + self.questManager = None + self.promotionMgr = None + self.cogPageManager = None self.timeManager = None self.newsManager = None self.inGameNewsMgr = None @@ -94,6 +100,15 @@ class ToontownAIRepository(ToontownInternalRepository): # Create our suit invasion manager... self.suitInvasionManager = SuitInvasionManagerAI(self) + # Create our quest manager... + self.questManager = QuestManagerAI(self) + + # Create our promotion manager... + self.promotionMgr = PromotionManagerAI(self) + + # Create our Cog page manager... + self.cogPageManager = CogPageManagerAI(self) + def createGlobals(self): """ Creates "global" (distributed) objects. @@ -185,6 +200,10 @@ class ToontownAIRepository(ToontownInternalRepository): ) self.generateHood(DLHoodDataAI, ToontownGlobals.DonaldsDreamland) + # Assign the initial suit buildings. + for suitPlanner in self.suitPlanners.values(): + suitPlanner.assignInitialSuitBuildings() + def genDNAFileName(self, zoneId): canonicalZoneId = ZoneUtil.getCanonicalZoneId(zoneId) canonicalHoodId = ZoneUtil.getCanonicalHoodId(canonicalZoneId) diff --git a/toontown/battle/MovieToonVictory.py b/toontown/battle/MovieToonVictory.py index 7b1d975..705de6a 100644 --- a/toontown/battle/MovieToonVictory.py +++ b/toontown/battle/MovieToonVictory.py @@ -1,3 +1,4 @@ +from libotp import * from direct.interval.IntervalGlobal import * from direct.showbase.DirectObject import DirectObject from RewardPanel import * diff --git a/toontown/building/DistributedElevatorExt.py b/toontown/building/DistributedElevatorExt.py index 9638f7a..f2ea237 100644 --- a/toontown/building/DistributedElevatorExt.py +++ b/toontown/building/DistributedElevatorExt.py @@ -1,4 +1,5 @@ from pandac.PandaModules import * +from libotp import * from direct.distributed.ClockDelta import * from direct.interval.IntervalGlobal import * from ElevatorConstants import * diff --git a/toontown/coghq/CogHQExterior.py b/toontown/coghq/CogHQExterior.py index 1d1c43b..ebb17d4 100644 --- a/toontown/coghq/CogHQExterior.py +++ b/toontown/coghq/CogHQExterior.py @@ -4,6 +4,7 @@ from direct.fsm import ClassicFSM, State from direct.fsm import State from toontown.toonbase import ToontownGlobals from pandac.PandaModules import * +from libotp import * from otp.distributed.TelemetryLimiter import RotationLimitToH, TLGatherAllAvs class CogHQExterior(BattlePlace.BattlePlace): diff --git a/toontown/quest/QuestManagerAI.py b/toontown/quest/QuestManagerAI.py new file mode 100644 index 0000000..03e6436 --- /dev/null +++ b/toontown/quest/QuestManagerAI.py @@ -0,0 +1,20 @@ +from direct.directnotify import DirectNotifyGlobal + + +class QuestManagerAI: + notify = DirectNotifyGlobal.directNotify.newCategory('QuestManagerAI') + + def __init__(self, air): + self.air = air + + def recoverItems(self, toon, suitsKilled, zoneId): + return [], [] # TODO + + def toonKilledCogs(self, toon, suitsKilled, zoneId, activeToonList): + pass # TODO + + def requestInteract(self, avId, npc): + npc.rejectAvatar(avId) # TODO + + def hasTailorClothingTicket(self, toon, npc): + return 0 # TODO diff --git a/toontown/shtiker/CogPageManagerAI.py b/toontown/shtiker/CogPageManagerAI.py new file mode 100644 index 0000000..f59861f --- /dev/null +++ b/toontown/shtiker/CogPageManagerAI.py @@ -0,0 +1,14 @@ +from direct.directnotify import DirectNotifyGlobal + + +class CogPageManagerAI: + notify = DirectNotifyGlobal.directNotify.newCategory('CogPageManagerAI') + + def __init__(self, air): + self.air = air + + def toonKilledCogs(self, toon, suitsKilled, zoneId): + pass # TODO + + def toonEncounteredCogs(self, toon, suitsEncountered, zoneId): + pass # TODO diff --git a/toontown/suit/DistributedSuitBase.py b/toontown/suit/DistributedSuitBase.py index ec687ef..02864e3 100644 --- a/toontown/suit/DistributedSuitBase.py +++ b/toontown/suit/DistributedSuitBase.py @@ -1,4 +1,5 @@ from pandac.PandaModules import * +from libotp import * from direct.interval.IntervalGlobal import * from direct.distributed.ClockDelta import * from direct.directtools.DirectGeometry import CLAMP diff --git a/toontown/toon/DistributedNPCClerk.py b/toontown/toon/DistributedNPCClerk.py index c64c647..9ce6715 100644 --- a/toontown/toon/DistributedNPCClerk.py +++ b/toontown/toon/DistributedNPCClerk.py @@ -16,12 +16,15 @@ class DistributedNPCClerk(DistributedNPCToonBase): self.isLocalToon = 0 self.av = None self.purchaseDoneEvent = 'purchaseDone' + self.lerpCameraSeq = None return def disable(self): self.ignoreAll() taskMgr.remove(self.uniqueName('popupPurchaseGUI')) - taskMgr.remove(self.uniqueName('lerpCamera')) + if self.lerpCameraSeq: + self.lerpCameraSeq.finish() + self.lerpCameraSeq = None if self.purchase: self.purchase.exit() self.purchase.unload() @@ -61,7 +64,9 @@ class DistributedNPCClerk(DistributedNPCToonBase): def resetClerk(self): self.ignoreAll() taskMgr.remove(self.uniqueName('popupPurchaseGUI')) - taskMgr.remove(self.uniqueName('lerpCamera')) + if self.lerpCameraSeq: + self.lerpCameraSeq.finish() + self.lerpCameraSeq = None if self.purchase: self.purchase.exit() self.purchase.unload() @@ -81,7 +86,9 @@ class DistributedNPCClerk(DistributedNPCToonBase): return if mode == NPCToons.PURCHASE_MOVIE_TIMEOUT: taskMgr.remove(self.uniqueName('popupPurchaseGUI')) - taskMgr.remove(self.uniqueName('lerpCamera')) + if self.lerpCameraSeq: + self.lerpCameraSeq.finish() + self.lerpCameraSeq = None if self.isLocalToon: self.ignore(self.purchaseDoneEvent) if self.purchase: @@ -98,7 +105,8 @@ class DistributedNPCClerk(DistributedNPCToonBase): self.setupAvatars(self.av) if self.isLocalToon: camera.wrtReparentTo(render) - camera.lerpPosHpr(-5, 9, self.getHeight() - 0.5, -150, -2, 0, 1, other=self, blendType='easeOut', task=self.uniqueName('lerpCamera')) + self.lerpCameraSeq = LerpPosQuatInterval(camera, 1, Point3(-5, 9, self.getHeight() - 0.5), Point3(-150, -2, 0), other=self, blendType='easeOut', name=self.uniqueName('lerpCamera')) + self.lerpCameraSeq.start() self.setChatAbsolute(TTLocalizer.STOREOWNER_GREETING, CFSpeech | CFTimeout) if self.isLocalToon: taskMgr.doMethodLater(1.0, self.popupPurchaseGUI, self.uniqueName('popupPurchaseGUI'))