def recreate_bubble(self, unit, text): self.remove_existing_bubble(unit) chat_bubble = ChatBubble(text, unit) self.chat_bubbles_by_names[unit.name] = chat_bubble task = Task(self.delete_bubble_after_no_updates, "delete bubble after no updates") core.instance.task_mgr.add(task, extraArgs=[task, unit.name])
def __spawnTask(self): # Spawn task self.__removeTask() taskName = self.getName() + '-play' task = Task(self.__playTask) task.interval = self taskMgr.add(task, taskName)
def setCannonWillFire(self, cannonId, zRot, angle): self.notify.debug('setCannonWillFire: %d %d %d' % (cannonId, zRot, angle)) cannon = base.cr.doId2do.get(cannonId) if cannon is None: self.notify.warning( "Cannon has not been created, but we got this message. Don't show firing." ) return if not cannon.getToonInside(): self.notify.warning( "setCannonWillFire, but no toon insde. Don't show firing") return if self.isLocalToon(cannon.getToonInside()): self.localFlyingToon = base.localAvatar self.localFlyingToonId = base.localAvatar.doId self.localFiringCannon = cannon self.flyingToonCloudsHit = 0 cannon.updateModel(zRot, angle) toonId = cannon.getToonInside().doId task = Task(self.__fireCannonTask) task.toonId = toonId task.cannon = cannon taskMgr.add(task, self.taskNameFireCannon) self.toonIds.append(toonId) return
def __startStickTask(self, crateNormal, toonPos): self.__killStickTask() self.stuckToCrate = 1 sTask = Task(self.__stickTask) sTask.crateNormal = crateNormal sTask.toonPos = toonPos taskMgr.add(sTask, self.taskName('stickTask'))
def countdown(self, duration): countdownTask = Task(self.timerTask) countdownTask.duration = duration countdownTask.maxCount = RaceGlobals.RaceCountdown taskMgr.remove(self.uniqueName('countdownTimerTask')) return taskMgr.add(countdownTask, self.uniqueName('countdownTimerTask'))
def startCountdown(self): if not self.timerTask and self.startingBlocks: self.makeClockGui() duration = KartGlobals.COUNTDOWN_TIME - globalClockDelta.localElapsedTime(self.getTimestamp()) countdownTask = Task(self.updateTimerTask) countdownTask.duration = duration self.timerTask = taskMgr.add(countdownTask, self.uniqueName('racePadTimerTask'))
def doSpawnTitleText(self, text): self.titleColor = (1.0, 0.5, 0.4, 1.0) self.titleText = OnscreenText.OnscreenText( text, fg=self.titleColor, font=ToontownGlobals.getSignFont(), pos=(0, -0.5), scale=0.16, drawOrder=0, mayChange=1, wordwrap=16) self.titleText.setText(text) self.titleText.show() self.titleText.setColor(Vec4(*self.titleColor)) self.titleText.clearColorScale() self.titleText.setFg(self.titleColor) seq = Task.sequence( # HACK! Let a pause go by to cover the loading pause # This tricks the taskMgr Task.pause(0.1), Task.pause(6.0), self.titleText.lerpColorScale(Vec4(1.0, 1.0, 1.0, 1.0), Vec4(1.0, 1.0, 1.0, 0.0), 0.5), Task(self.hideTitleTextTask)) taskMgr.add(seq, "titleText")
def startCloudSky(hood, parent=camera, effects=CompassEffect.PRot | CompassEffect.PZ): hood.sky.reparentTo(parent) hood.sky.setDepthTest(0) hood.sky.setDepthWrite(0) hood.sky.setBin('background', 100) try: hood.sky.find('**/Sky').reparentTo(hood.sky, -1) except: pass hood.sky.reparentTo(parent) hood.sky.setZ(0.0) hood.sky.setHpr(0.0, 0.0, 0.0) ce = CompassEffect.make(NodePath(), effects) hood.sky.node().setEffect(ce) skyTrackTask = Task(hood.skyTrack) skyTrackTask.h = 0 skyTrackTask.cloud1 = hood.sky.find('**/cloud1') skyTrackTask.cloud2 = hood.sky.find('**/cloud2') if not skyTrackTask.cloud1.isEmpty() and not skyTrackTask.cloud2.isEmpty(): taskMgr.add(skyTrackTask, 'skyTrack') else: notify.warning("Couln't find clouds!")
def enableInteractionButtons(self): self.notify.debug('enable buttons') proxTask = Task.loop(Task(self.__checkPetProximity), Task.pause(0.5)) taskMgr.add(proxTask, 'petpanel-proximity-check', priority=ToontownGlobals.PetPanelProximityPriority) self.__checkPetProximity()
def __initSunTask(self): # only call this fcn the first time, in order to pass the timestamp self.__killSunTask() task = Task(self.__sunTask) dT = self.getDeltaTime() task.ts = dT taskMgr.add(task, self.taskName("sunTask"))
def updateHealthBar(self, hp): if not self.healthBar: return if hp > self.health: self.health = hp health = 0.0 try: health = float(hp) / float(self.maxHealth) except: pass if health > 0.95: condition = 0 else: if health > 0.7: condition = 1 else: if health > 0.3: condition = 2 else: if health > 0.05: condition = 3 else: if health > 0.0: condition = 4 else: condition = 5 if self.condition != condition: if condition == 4: blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.taskName('blink-task')) else: if condition == 5: if self.condition == 4: taskMgr.remove(self.taskName('blink-task')) blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.25), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.taskName('blink-task')) else: self.healthBar.setColor( SuitGlobals.healthColors[condition], 1) self.healthBarGlow.setColor( SuitGlobals.healthGlowColors[condition], 1) self.condition = condition
def updateHealthBar(self): if self.healthBar == None: return health = 1.0 - float(self.bossDamage) / float(self.bossMaxDamage) if health > 0.95: condition = 0 elif health > 0.9: condition = 1 elif health > 0.8: condition = 2 elif health > 0.7: condition = 3 elif health > 0.6: condition = 4 elif health > 0.5: condition = 5 elif health > 0.3: condition = 6 elif health > 0.15: condition = 7 elif health > 0.10: condition = 8 elif health > 0.5: condition = 9 elif health > 0.0: condition = 10 else: condition = 11 if self.healthCondition != condition: if condition == 10: blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.uniqueName('blink-task')) elif condition == 11: if self.healthCondition == 10: taskMgr.remove(self.uniqueName('blink-task')) blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.25), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.uniqueName('blink-task')) else: self.healthBar.setColor(self.healthColors[condition], 1) self.healthBarGlow.setColor(self.healthGlowColors[condition], 1) self.healthCondition = condition return
def __startIntro(self): self.T_WATER = 1 self.T_WATER2LONGVIEW = 1 self.T_LONGVIEW = 1 self.T_LONGVIEW2TOONHEAD = 2 self.T_TOONHEAD = 2 self.T_TOONHEAD2CANNONBACK = 2 taskLookInWater = Task(self.__taskLookInWater) taskPullBackFromWater = Task(self.__taskPullBackFromWater) taskFlyUpToToon = Task(self.__flyUpToToon) taskFlyToBackOfCannon = Task(self.__flyToBackOfCannon) commonData = {} taskLookInWater.data = commonData taskPullBackFromWater.data = commonData taskFlyUpToToon.data = commonData taskFlyToBackOfCannon.data = commonData introTask = Task.sequence(taskLookInWater, Task.pause(self.T_WATER), taskPullBackFromWater, Task.pause(self.T_WATER2LONGVIEW + self.T_LONGVIEW), taskFlyUpToToon, Task.pause(self.T_LONGVIEW2TOONHEAD + self.T_TOONHEAD), taskFlyToBackOfCannon) taskMgr.add(introTask, self.INTRO_TASK_NAME)
def __spawnLocalCannonMoveTask(self): self.leftPressed = 0 self.rightPressed = 0 self.upPressed = 0 self.downPressed = 0 self.cannonMoving = 0 task = Task(self.__localCannonMoveTask) task.lastPositionBroadcastTime = 0.0 taskMgr.add(task, self.LOCAL_CANNON_MOVE_TASK)
def __startLocalCannonMoveTask(self): """ Starts the cannon move task for the local toon. """ self.localCannonMoving = False task = Task(self.__localCannonMoveTask) task.lastPositionBroadcastTime = 0.0 taskMgr.add(task, self.LOCAL_CANNON_MOVE_TASK)
def __withdrawButtonDown(self, event): messenger.send('wakeup') task = Task(self.__runCounter) task.delayTime = 0.4 task.prevTime = 0.0 task.delta = -1 hitLimit, jar, bank, trans = self.__updateTransaction(task.delta) if not hitLimit: taskMgr.add(task, self.taskName('runCounter'))
def __initDaytimeTask(self): # only call this fcn the first time, in order to pass the timestamp self.__killDaytimeTask() task = Task(self.__dayTimeTask) # figure out how far into the task we are (how far from dawn) dT = self.getDeltaTime() task.ts = dT taskMgr.add(task, self.taskName("daytime"))
def updateHealthBar(self, hp, forceUpdate=0): if hp > self.currHP: hp = self.currHP self.currHP -= hp health = float(self.currHP) / float(self.maxHP) if health > 0.95: condition = 0 elif health > 0.9: condition = 1 elif health > 0.8: condition = 2 elif health > 0.7: condition = 3 elif health > 0.6: condition = 4 elif health > 0.5: condition = 5 elif health > 0.3: condition = 6 elif health > 0.15: condition = 7 elif health > 0.05: condition = 8 elif health > 0.0: condition = 9 else: condition = 10 if self.healthCondition != condition or forceUpdate: if condition == 9: blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.uniqueName('blink-task')) elif condition == 10: if self.healthCondition == 9: taskMgr.remove(self.uniqueName('blink-task')) blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.25), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, self.uniqueName('blink-task')) else: taskMgr.remove(self.uniqueName('blink-task')) self.healthBar.setColor(self.healthColors[condition], 1) self.healthBarGlow.setColor(self.healthGlowColors[condition], 1) self.healthCondition = condition
def _BankGui__depositButtonDown(self, event): messenger.send('wakeup') task = Task(self._BankGui__runCounter) task.delayTime = 0.40000000000000002 task.prevTime = 0.0 task.delta = 1 (hitLimit, jar, bank, trans) = self._BankGui__updateTransaction(task.delta) if not hitLimit: taskMgr.add(task, self.taskName('runCounter'))
def update(self, hp, forceUpdate=0): if not self.geom: return condition = self.getHealthCondition(hp) if self.healthCondition != condition or forceUpdate: taskMgr.remove('blink-task-%s' % id(self)) if condition in (9, 10): blinkTask = Task.loop( Task(self.__blinkRed), Task.pause(0.75 if condition == 9 else 0.25), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, 'blink-task-%s' % id(self)) else: self.geom.setColor(HEALTH_COLORS[condition], 1) self.geomGlow.setColor(HEALTH_GLOW_COLORS[condition], 1) self.healthCondition = condition
def updateHealthBar(self): condition = self.cog.healthCondition if condition == 4: self.blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task.pause(0.1)) taskMgr.add(self.blinkTask, self.uniqueName('blink-task')) else: taskMgr.remove(self.uniqueName('blink-task')) self.button.setColor(self.healthColors[condition], 1) self.glow.setColor(self.healthGlowColors[condition], 1)
def __withdrawButtonDown(self, event): messenger.send('wakeup') task = Task(self.__runCounter) task.delayTime = 0.2 task.prevTime = 0.0 task.amount = -1.0 hitLimit = self.__updateTransaction(int(task.amount))[0] if not hitLimit: taskMgr.add(task, self.taskName('runCounter'))
def __init__(self): print("TerrainTest object created") self.make_traverser_handler() self.tm = TerrainManager(16, 16) self.down = 0 self.PCs = {} #self.make_actor() self.char = Character("pandabuddy") self.pc = self.char.panda_actor self.make_actor_collisions(self.pc) #self.make_test_capsule() self.tm.get_terrain(0, 0).terrain.getRoot().setTag('myObjectTag', '1') #self.tm.get_terrain(0, 0).terrain.getRoot().setIntoCollideMask(BitMask32.bit(0)) #col_t = CollisionNode("col_t") #col_t.addSolid(CollisionPolygon(self.tm.get_terrain(0, 0).terrain.getRoot())) #CollisionPolygon(self.tm.get_terrain(0, 0).terrain.getRoot()) #base.cTrav.addCollider(self.tm.get_terrain(0, 0).terrain.getRoot(), base.mchandler) #pusher = CollisionHandlerPusher() #pusher.addCollider(self.collision_node, self.char.boxc) #base.cTrav.addCollider(self.collision_node, pusher) #base.cTrav.addCollider(self.collision_node, base.mchandler) cp = CollisionPlane(LPlane((0, 0, 1), (0, 0, 0))) #self.planeANP = render.attachNewNode(ActorNode('p actor')) planeNP = base.render.attachNewNode(CollisionNode('planecnode')) #planeNP = self.planeANP.attachNewNode(CollisionNode('planecnode')) self.accept('into-planecnode', self.hanev) self.accept('pcol-again-planecnode', self.hanev) planeNP.node().addSolid(cp) planeNP.show() planeNP.setScale(100, 100, 100) planeNP.node().setIntoCollideMask(BitMask32.bit(0)) planeNP.node().setFromCollideMask(BitMask32.allOff()) planeNP.setPos(0, 0, -100) #base.mchandler.addCollider(planeNP, self.planeANP) #base.cTrav.addCollider(planeNP, base.mchandler) #base.physicsMgr.attachPhysicalNode(self.planeANP.node()) base.cTrav.addCollider(self.char.boxc, base.mchandler) base.cTrav.setRespectPrevTransform(True) #base.mchandler.addCollider(self.collision_node, self.char.panda_actor) #base.mchandler.addCollider(self.collision_node, self.char.boxc) #base.mchandler.addCollider(self.char.boxc, self.collision_node) Globals.g_task_manager.add(self.move, "moveTask", priority=-100) self.task1 = Task(self.gravity) Globals.g_task_manager.add(self.task1, "gravityTask", extraArgs=[self.task1, self.pc])
def __fireCannonTask(self, task): launchTime = task.fireTime results = self.__calcFlightResults(launchTime) startPos, startHpr, startVel, trajectory, timeOfImpact, hitWhat = results if not results: return self.notify.info('start position: ' + str(startPos)) self.notify.info('start velocity: ' + str(startVel)) self.notify.info('time of launch: ' + str(launchTime)) self.notify.info('time of impact: ' + str(timeOfImpact)) self.notify.info('location of impact: ' + str(trajectory.getPos(timeOfImpact))) self.notify.info('start hpr: ' + str(startHpr)) FlyingProp = self.gag self.generateGravity(FlyingProp) FlyingProp.reparentTo(render) FlyingProp.setPos(startPos) barrelHpr = self.barrel.getHpr(render) FlyingProp.setHpr(startHpr) #FlyingProp.setH(90) #self.gag.setPosHpr(0, 0, 100, 0, 0, 0) # this seems to be affecting the collision sphere btw info = {} info['trajectory'] = trajectory info['launchTime'] = launchTime info['timeOfImpact'] = timeOfImpact info['hitWhat'] = hitWhat info['flyingProp'] = self.gag info['hRot'] = self.cannonPosition[0] info['haveWhistled'] = 0 info['maxCamPullback'] = CAMERA_PULLBACK_MIN self.flyColSphere = CollisionSphere(0, 0, 0, 1.2) self.flyColNode = CollisionNode('flySphere') self.flyColNode.setCollideMask(BitmaskGlobals.FloorBitmask | BitmaskGlobals.WallBitmask) self.flyColNode.addSolid(self.flyColSphere) self.flyColNodePath = self.gag.attachNewNode(self.flyColNode) self.flyColNodePath.setColor(1, 0, 0, 1) # self.flyColNodePath.show() self.handler = CollisionHandlerEvent() self.handler.setInPattern('cannonHit') # uh oh no work! :( << nevermind, should work now base.cTrav.addCollider(self.flyColNodePath, self.handler) print('Cannon pos: {0}'.format(self.cannon.getPos(render))) self.accept('cannonHit', self.__handleCannonHit) base.playSfx(self.sndCannonFire) flyTask = Task(self.__flyTask, 'flyTask') flyTask.info = info taskMgr.add(flyTask, 'flyTask') self.acceptOnce('stopFlyTask', self.__stopFlyTask) self.notify.info('done with __fireCannonTask') return Task.done
def __checkUpdateColor(self, hp, maxhp): if self.bossBar: self.healthRatio = float(hp) / float(maxhp) if self.healthRatio > self.colorThresholds[0]: condition = 0 elif self.healthRatio > self.colorThresholds[1]: condition = 1 elif self.healthRatio > self.colorThresholds[2]: condition = 2 elif self.healthRatio > self.colorThresholds[3]: condition = 3 elif self.healthRatio > self.colorThresholds[4]: condition = 4 else: condition = 5 self.__applyNewColor(condition) if self.healthCondition != condition: if condition == 4: if self.healthCondition == 5: taskMgr.remove('bar-blink-task') self.isBlinking = False blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, 'bar-blink-task') self.isBlinking = True elif condition == 5: if self.healthCondition == 4: taskMgr.remove('bar-blink-task') self.isBlinking = False blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.25), Task(self.__blinkGray), Task.pause(0.1)) taskMgr.add(blinkTask, 'bar-blink-task') self.isBlinking = True else: if self.isBlinking: taskMgr.remove('bar-blink-task') self.isBlinking = False self.healthCondition = condition
def updateHealthBar(self): health = float(float(self.hp) / float(self.maxHp)) if health < 1: self.corpMedallion.hide() self.healthBar.show() if health > 0.95: condition = 0 elif health > 0.7: condition = 1 elif health > 0.3: condition = 2 elif health > 0.05: condition = 3 elif health > 0: condition = 4 else: condition = 5 if (self.healthCondition != condition): if (condition == 4): blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.75), Task(self.__blinkGray), Task.pause(0.1)) base.taskMgr.add(blinkTask, 'blink-task') elif (condition == 5): if (self.healthCondition == 4): base.taskMgr.remove('blink-task') if (self.isDefeated == False): blinkTask = Task.loop(Task(self.__blinkRed), Task.pause(0.25), Task(self.__blinkGray), Task.pause(0.1)) base.taskMgr.add(blinkTask, 'blink-task') self.isDefeated = True if not self.cog.hasPythonTag("Support"): roundInstance = render.getPythonTag('Round') wave = roundInstance.getCurrentWave() wave.setCogsDefeated(wave.getCogsDefeated() + 1) base.taskMgr.doMethodLater(1.5, self.setDefeated, 'Set Cog Defeated') else: self.healthBar.setColor(healthColors[condition], 1) self.healthBarGlow.setColor(healthGlowColors[condition], 1) self.healthCondition = condition
def __taskUpdate(self, delta, event): messenger.send('wakeup') task = Task(self.__runTask) task.delayTime = 0.4 task.prevTime = 0.0 task.delta = delta hitLimit = self.__updateLaffMeter(delta) if not hitLimit: taskMgr.add(task, self.taskName('runLaffCounter'))
def __decButtonDown(self, event): assert self.notify.debugStateCall(self) task = Task(self.__repeatStepTask) task.stepSize = -self['stepSize'] taskName = self.taskName('repeatStep') #print 'decButtonDown: adding ', taskName taskMgr.doMethodLater(self['repeatStartdelay'], task, taskName) self.doStep(task.stepSize) messenger.send('wakeup') if self.__decButtonCallback: self.__decButtonCallback()
def _DirectScrolledList__decButtonDown(self, event): task = Task(self._DirectScrolledList__scrollByTask) task.setDelay(1.0 / self.scrollSpeed) task.prevTime = 0.0 task.delta = -1 taskName = self.taskName('scroll') taskMgr.add(task, taskName) self.scrollBy(task.delta) messenger.send('wakeup') if self.decButtonCallback: self.decButtonCallback()
def enterFlyDown(self): self.fd_sfx = audio3d.loadSfx("phase_5/audio/sfx/ENC_propeller_in.ogg") self.prop = Actor("phase_4/models/props/propeller-mod.bam", {"chan": "phase_4/models/props/propeller-chan.bam"}) audio3d.attachSoundToObject(self.fd_sfx, self.prop) self.fd_sfx.play() self.prop.reparentTo(self.suit.find('**/joint_head')) propTrack = Sequence(Func(self.prop.loop, 'chan', fromFrame=0, toFrame=3), Wait(1.75), Func(self.prop.play, 'chan', fromFrame=3)) propTrack.start() if not self.hasSpawned: showSuit = Task.sequence(Task(self.hideSuit), Task.pause(0.3), Task(self.showSuit)) taskMgr.add(showSuit, "showsuit") self.hasSpawned = True dur = self.suit.getDuration('land') suitTrack = Sequence(Func(self.suit.pose, 'land', 0), Wait(1.9), ActorInterval(self.suit, 'land', duration=dur)) suitTrack.start()