Example #1
0
 def Hurt(self, amount):
     self.health -= amount
     if self.health > 0:
         #print 'switching to state stunned'
         self.stun()
         events.Fire('EnemyHurt', self)
     else:
         #print 'enemy death!'
         events.Fire('EnemyDeath', self)
Example #2
0
 def Hurt(self, amount):
     # Note: Hurt is instantaneous, unlike On_AttackHit, which is called
     # when the events module dispatches its events
     if amount <= 0:
         return #not actually hurt
     #print 'reducing heatlh', self.health
     self.health -= amount
     if self.health == 0 and self.strings:
         self.health = 1
         self.strings = []
     if self.health > 0:
         events.Fire('AvatarHurt', self)
     else:
         events.Fire('AvatarDeath', self)
Example #3
0
    def fire(self, firer):
        if self.fired:
            return
        TriggerZone.fire(self)

        #print "GOOOOOOAL"
        events.Fire('LevelCompletedEvent', getActiveLevel())
Example #4
0
 def update(self, timeChange=None):
     self.x = self.origX + window.bgOffset[0]
     self.y = self.origY + window.bgOffset[1]
     if self.state == 'die':
         self.opacity -= 5
         self.scale += 0.1
         if self.opacity < 50:
             events.Fire('SpriteRemove', self)
Example #5
0
 def update(self, timeChange=None):
     self.x = self.logicalX + window.bgOffset[0]
     self.y = self.logicalY + window.bgOffset[1]
     self.logicalX += randint(-2, 2)
     self.logicalY += 5
     self.opacity -= 2
     self.scale += 0.01
     if self.opacity < 80:
         events.Fire('SpriteRemove', self)
Example #6
0
 def fire(self, firer):
     if self.fired:
         return
     if not isinstance(firer, Avatar):
         return
     #print 'string pickup!'
     self.fired = True
     firer.pickupString()
     del self.sprite
     events.Fire('TriggerZoneRemove', self)
Example #7
0
 def update(self, timeChange=None):
     self.x = self.logicalX + window.bgOffset[0]
     self.y = self.logicalY + window.bgOffset[1]
     self.color = (
         self.color[0] - 2,
         self.color[1] - 2,
         self.color[2] - 2,
     )
     self.opacity -= 2
     if self.color[0] < 20:
         events.Fire('SpriteRemove', self)
Example #8
0
def Event(evName, *args, **kwargs):
    """Fire off an inconsequential event"""
    try:
        import events
        events.Fire(evName, *args, **kwargs)
    except Exception, details:
        #totally don't care if it doesn't work.  Even if the module
        #doesn't load, I don't care because these events are not
        #mission-critical
        log.info('failed to fire an event')
        log.info(details)
Example #9
0
    def fire(self, firer):
        if self.fired:
            return
        if not isinstance(firer, Avatar):
            return

        ##print 'yoyo pickup!'

        self.fired = True
        yoyo = LogicalYoyo()
        firer.pickupYoyo(yoyo)
        events.Fire('TriggerZoneRemove', self)
Example #10
0
 def fireSpecial(self):
     if not self.yoyo:
         return
     if not self.yoyo.gfxYoyo:
         # hack hack todo
         return
     x = self.yoyo.gfxYoyo.yoyoX
     y = self.yoyo.gfxYoyo.yoyoY
     if self.getStringLength() <= 5:
         events.Fire('WhiffSpecial', (x,y))
     else:
         events.Fire('ExplosionSpecial', (x,y))
         self.strings.pop()
         #todo: move this into ExplosionAttack
         targets = self.getAttackables()
         for t in targets:
             xdistance = abs(t.feetPos[0] - x)
             ydistance = abs(t.feetPos[1] - y)
             if math.sqrt(xdistance**2 + ydistance**2) < 150:
                 t.Hurt(self.getEnergy())
                 events.Fire('AttackHit', attacks.ExplosionAttack(), self, t)
Example #11
0
    def update_talk(self, timeChange):
        if self.currentPart == None:
            events.Fire('StartSpeech', self)
            self.speechIter = iter(self.speech)
            try:
                self.currentPart = self.speechIter.next()
            except StopIteration:
                events.Fire('StopSpeech', self)
                self.state = State.fastWalking
                return
            events.Fire('SpeechPart', self, self.currentPart[1])
            return

        self.speechCounter += timeChange
        if self.speechCounter > self.currentPart[0]:
            self.speechCounter = 0.0
            try:
                self.currentPart = self.speechIter.next()
                events.Fire('SpeechPart', self, self.currentPart[1])
            except StopIteration:
                events.Fire('StopSpeech', self)
                self.state = State.fastWalking
Example #12
0
    def update_attack(self, timeChange):
        attStates = attacks.State

        target = self.knownAvatars[0]
        self.attack.update(timeChange, self.feetPos, self.facing, target)
        self.state = self.attack.state  #HACK!!!
        victimsAndAmount = self.attack.GetVictimsAndAmount()
        for victim, attackAmt in victimsAndAmount:
            power = attackAmt * self.energy
            victim.Hurt(power)
            events.Fire('AttackHit', self.attack, self, victim)
        if (self.attack.state == attStates.attacking
                and not self.desireWithinReach()):
            self.attack.end()
        if self.attack.state == attStates.done:
            self.state = State.fastWalking
Example #13
0
    def update_attack(self, timeChange):
        if not self.yoyo.gfxYoyo:
            # todo this is a hack fix
            return
        attStates = attacks.State

        ##print 'va', len(self.selectedAttack.victimsAndAmounts)
        #print 'vt', len(self.selectedAttack.visitedTargets)
        self.selectedAttack.update(timeChange, self.feetPos, self.facing,
                                   self.getAttackables(), self.yoyo.gfxYoyo)
        victimsAndAmount = self.selectedAttack.GetVictimsAndAmount()
        for victim, attackAmt in victimsAndAmount:
            power = attackAmt*self.getEnergy()
            victim.Hurt(power)
            events.Fire('AttackHit', self.selectedAttack, self, victim)
        if self.selectedAttack.state == attStates.done:
            self.state = State.normal
Example #14
0
 def stun(self):
     if self.state == State.talking:
         events.Fire('StopSpeech', self)
     self.state = State.stunned
Example #15
0
 def ShowServer(self):
     events.Fire("ShowServer")
Example #16
0
 def ShowGreen(self):
     events.Fire("ShowGreen")
Example #17
0
 def ShowRed(self):
     events.Fire("ShowRed")
Example #18
0
 def Pause(self):
     events.Fire("Pause")
Example #19
0
 def doEnemy(self, cls, args, pos, firer):
     enemy = cls(*args)
     enemy.feetPos = pos
     enemy.walkMask = self.level.walkMask
     enemy.showAvatar(firer)
     events.Fire('EnemyBirth', enemy)
Example #20
0
 def die(self):
     events.Fire('SpriteRemove', self)
Example #21
0
	def Save( self ):
		events.Fire( "SaveRequest" )
Example #22
0
	events.AddEvent( "MouseMove" )
	events.AddEvent( "MouseClick" )

	lastReload = 0
	clock = pygame.time.Clock()
	oldfps = 0
	nextGUIRefresh = 1
	while 1:
		timeChange = clock.tick(simulation.fps)
		lastReload += timeChange
		if lastReload > 5000:
			lastReload = 0
			reload(simulation)
		newfps = int(clock.get_fps())
		if newfps != oldfps:
			events.Fire( "FPSChange", newfps )
			oldfps = newfps

		allobjects.thousandCounter += 1
		allobjects.thousandCounter %= 1000

		#Handle Input Events
		remainingEvents = pygame.event.get()
		for event in remainingEvents:
			upKeys = [x for x in remainingEvents if x.type == KEYUP]
			if event.type == QUIT:
				return
			elif event.type == KEYDOWN and event.key == K_ESCAPE:
				return
			elif event.type == KEYDOWN or event.type == KEYUP:
				parkPanel.SignalKey( event, upKeys )
Example #23
0
	def Clone( self ):
		events.Fire( "CloneRequest" )
Example #24
0
	def Pause( self ):
		events.Fire( "PauseToggleRequest" )
Example #25
0
    displayer = UIPanel(bgSurf, Rect(0, 0, *RESOLUTION))
    allobjects.server = TravelBuddyServer()
    lastReload = 0

    #Main Loop
    oldfps = 0

    while 1:
        timeChange = clock.tick(simulation.fps)
        lastReload += timeChange
        if lastReload > 5000:
            lastReload = 0
            reload(simulation)
        newfps = int(clock.get_fps())
        if newfps != oldfps:
            events.Fire("FPSChange", newfps)
            oldfps = newfps

        #Handle Input Events
        remainingEvents = pygame.event.get()
        for event in remainingEvents:
            if event.type == QUIT:
                displayer.isDone = 1
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                displayer.isDone = 1
            elif event.type == MOUSEBUTTONDOWN:
                displayer.Click(event.pos)
            if event.type == MOUSEMOTION:
                displayer.MouseOver(event)

        #Draw Everything
Example #26
0
	def ToggleSnap( self ):
		events.Fire( "SnapToggleRequest" )
Example #27
0
    def run(self):
        global _activeLevel
        global soundtrack
        _activeLevel = self
        self.done = False
        clock.set_fps_limit(60)
        win = window.window

        avSprite = AvatarSprite(self.avatar)
        self.avatar.feetPos = self.startLoc
        self.avatar.walkMask = self.walkMask
        self.avatar.triggerZones = self.triggerZones

        events.Fire('AvatarBirth', self.avatar)
        events.Fire('LevelStartedEvent', self)

        while not self.done:
            timeChange = clock.tick()

            #if soundtrack and self.sound:
            #    print soundtrack
            #    soundtrack.dispatch_events()

            events.ConsumeEventQueue()
            win.dispatch_events()

            if self.deathDelay:
                self.deathDelay -= timeChange
                if self.deathDelay <= 0:
                    self.done = True

            if self.done or win.has_exit:
                player.strings = self.avatar.strings[:]
                events.Reset()
                break

            avSprite.update(timeChange)
            for miscSprite in self.miscSprites:
                miscSprite.update(timeChange)
            for enemySprite in self.enemySprites.values():
                enemySprite.update(timeChange)
            for sprite in self.visualEffects.sprites:
                sprite.update(timeChange)

            win.clear()

            # find the combined height of the background images

            bgWidth = 0
            bgHeight = 0

            for bg in self.bgImages:
                bgWidth += bg.width
                bgHeight += bg.height

            offset = self.calcBGOffset(self.avatar.x, self.avatar.y, win.width,
                                       win.height, bgWidth, bgHeight)

            window.bgOffset[0] = offset[0]
            window.bgOffset[1] = offset[1]

            #self.bg.blit(*window.bgOffset)
            #[bg.blit(*window.bgOffset) for bg in self.bgImages]

            for count, bg in enumerate(self.bgImages):
                bg.blit(count * 1024 + window.bgOffset[0], window.bgOffset[1])

            for miscSprite in self.miscSprites:
                miscSprite.draw()
            avSprite.draw()

            for enemySprite in self.enemySprites.values():
                enemySprite.draw()
            for sprite in self.visualEffects.sprites:
                sprite.draw()

            #self.healthText.draw()
            self.healthBar.draw(self.avatar)
            self.energyBar.draw(self.avatar)

            if DEBUG:
                self.fpsText.text = "fps: %d" % clock.get_fps()
                self.fpsText.draw()

            if clock.get_fps() < 30:
                events.Fire('LowFPS30')

            win.flip()

        return self.getNextScene()