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()
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!!");
def resetTime(self): self.t = gametime.getms()
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