Spaces:
Sleeping
Sleeping
from pygame.transform import flip | |
class GoTrait: | |
def __init__(self, animation, screen, camera, ent): | |
self.animation = animation | |
self.direction = 0 | |
self.heading = 1 | |
self.accelVel = 0.4 | |
self.decelVel = 0.25 | |
self.maxVel = 3.0 | |
self.screen = screen | |
self.boost = False | |
self.camera = camera | |
self.entity = ent | |
def update(self): | |
if self.boost: | |
self.maxVel = 5.0 | |
self.animation.deltaTime = 4 | |
else: | |
self.animation.deltaTime = 7 | |
if abs(self.entity.vel.x) > 3.2: | |
self.entity.vel.x = 3.2 * self.heading | |
self.maxVel = 3.2 | |
if self.direction != 0: | |
self.heading = self.direction | |
if self.heading == 1: | |
if self.entity.vel.x < self.maxVel: | |
self.entity.vel.x += self.accelVel * self.heading | |
else: | |
if self.entity.vel.x > -self.maxVel: | |
self.entity.vel.x += self.accelVel * self.heading | |
if not self.entity.inAir: | |
self.animation.update() | |
else: | |
self.animation.inAir() | |
else: | |
self.animation.update() | |
if self.entity.vel.x >= 0: | |
self.entity.vel.x -= self.decelVel | |
else: | |
self.entity.vel.x += self.decelVel | |
if int(self.entity.vel.x) == 0: | |
self.entity.vel.x = 0 | |
if self.entity.inAir: | |
self.animation.inAir() | |
else: | |
self.animation.idle() | |
if (self.entity.invincibilityFrames//2) % 2 == 0: | |
self.drawEntity() | |
def updateAnimation(self, animation): | |
self.animation = animation | |
self.update() | |
def drawEntity(self): | |
if self.heading == 1: | |
self.screen.blit(self.animation.image, self.entity.getPos()) | |
elif self.heading == -1: | |
self.screen.blit( | |
flip(self.animation.image, True, False), self.entity.getPos() | |
) | |