Пример #1
0
 def checkPhraseWrap(self):
     if self.model.currentphrase < 0:
         self.model.currentphrase = 0
     elif self.model.currentphrase == self.model.numphrases:
         self.model.currentphrase = self.model.numphrases-1
         self.state = self.FINISHED 
         self.t = gametime.getms() 
Пример #2
0
 def update(self,world):
     if self.state == self.TALKING:
         if not self.t:
             self.t = gametime.getms()
             return
         t2 = gametime.getms()
         dt = t2 - self.t
         if dt > self.model.talktime:
             self.t = t2
             self.stepPhrase(1)
             self.checkPhraseWrap()
     else:
         t2 = gametime.getms()
         dt = t2 - self.t
         if dt > self.transitiontime:
             print("Gonna change now!!");
Пример #3
0
 def resetTime(self):
     self.t = gametime.getms()
Пример #4
0
    def update(self,keysdown,keysup,world):
        #Let's check if we are on solid ground!
        p = ProxyRect(self.model.pos)
        p.rect.bottom += 1
        onsolid = False
        #pygame.sprite.spritecollide(sprite, group, dokill, collided)
        colliding = pygame.sprite.spritecollide(p, world["solidclouds"],False)
        if len(colliding):
            onsolid = True

        if self.model.state == self.model.SHOOT1:
            t = gametime.getms()
            if t > self.shootstart + self.model.shoottime:
                self.model.state = self.model.SHOOT2
                self.shootstart = gametime.getms()
        elif self.model.state == self.model.SHOOT2:
            t = gametime.getms()
            if t > self.shootstart + self.model.shoot2time:
                self.model.state = self.model.STAND
        else: 
            for k in keysdown:
                #print(str(k))
                if pygame.K_LEFT == k:
                    #print("LEFT")
                    self.model.facing = self.model.LEFT
                    if onsolid:
                        self.model.vel.topleft = (-5,0)
                        self.model.state = self.model.WALK
                if pygame.K_RIGHT == k:
                    #print("RIGHT")
                    self.model.facing = self.model.RIGHT
                    if onsolid:
                        self.model.vel.topleft = (5,0)
                        self.model.state = self.model.WALK
                if pygame.K_UP == k:
                    #print("JUMP")
                    if onsolid:
                        self.model.state = self.model.JUMP
                        self.model.vel.top = -25
                if pygame.K_SPACE == k:
                    self.model.state = self.model.SHOOT1
                    self.shootstart = gametime.getms()
            
            for k in keysup:
                #print(str(k))
                if pygame.K_LEFT == k and self.walkingLeft(self.model):
                    self.model.state = self.model.STAND
                    if onsolid:
                        self.model.vel.topleft = (0,0)
                        
                if pygame.K_RIGHT == k and self.walkingRight(self.model):
                    self.model.state = self.model.STAND
                    if onsolid:
                        self.model.vel.topleft = (0,0)
                        
                if pygame.K_UP == k:
                    pass
        
        # if we are not shooting, let's resume a standing position
        if onsolid and self.model.state != self.model.WALK and self.model.vel.y >= 0:
            if self.model.state != self.model.SHOOT1 and self.model.state != self.model.SHOOT2:
                self.model.state = self.model.STAND
        
        # Gravity!
        if not onsolid:
            self.model.vel.y = self.model.vel.y + 1
        
        # Friction!
        if onsolid and self.model.state != self.model.WALK and not self.model.vel.x == 0 and self.model.vel.y >= 0:
            if self.model.vel.x > 0:
                self.model.vel.x -= 1
            elif self.model.vel.x < 0:
                self.model.vel.x += 1
            else:
                pass
        # And now the actual movement!
        # horizontal movement!
        
        vel = self.model.vel
        
        if vel.x:
            p = ProxyRect(self.model.pos)
            p.rect.move_ip(vel.x,0)
            colliding = pygame.sprite.spritecollide(p, world["solidclouds"],False)
            if len(colliding):
                #print("omg I collided with " + str(colliding[0].rect.topleft))
                if vel.x > 0:
                    self.model.pos.right = colliding[0].pos.left  
                else:
                    self.model.pos.left = colliding[0].pos.right
            else:
                self.model.pos.x += self.model.vel.x
            
            p.rect.move_ip(-1*vel.x,0)

        if vel.y:            
            p.rect.move_ip(0,vel.y)
            colliding = pygame.sprite.spritecollide(p, world["solidclouds"],False)
            if len(colliding):
                if vel.y > 0:
                    self.model.pos.bottom = colliding[0].pos.top
                    self.model.vel.y = 0  
                else:
                    self.model.pos.top = colliding[0].pos.bottom
                self.model.vel.y = 0
            else:
                self.model.pos.y += self.model.vel.y