|
@@ -33,8 +33,8 @@ class Character(pygame.sprite.Sprite):
|
|
|
_('backward'),
|
|
_('backward'),
|
|
|
_('down'),
|
|
_('down'),
|
|
|
_('forward'),
|
|
_('forward'),
|
|
|
- _('jump'),
|
|
|
|
|
_('stop'),
|
|
_('stop'),
|
|
|
|
|
+ _('jump'),
|
|
|
_('up'),
|
|
_('up'),
|
|
|
]
|
|
]
|
|
|
|
|
|
|
@@ -76,6 +76,8 @@ class Character(pygame.sprite.Sprite):
|
|
|
self.predefined_keys = {}
|
|
self.predefined_keys = {}
|
|
|
self.image_filename = image_filename
|
|
self.image_filename = image_filename
|
|
|
self.image = None
|
|
self.image = None
|
|
|
|
|
+ self.thumbnail = None
|
|
|
|
|
+ self.thumbnail_rect = None
|
|
|
self.animation_filenames = {}
|
|
self.animation_filenames = {}
|
|
|
self._original_image = None
|
|
self._original_image = None
|
|
|
self._original_rect = None
|
|
self._original_rect = None
|
|
@@ -85,7 +87,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
self.y = 0
|
|
self.y = 0
|
|
|
self.gravitative = False
|
|
self.gravitative = False
|
|
|
self.is_jumping = False
|
|
self.is_jumping = False
|
|
|
- self.jump_force = settings.DEFAULT_JUMP_FORCE
|
|
|
|
|
|
|
+ self.jump_force = settings.CHARACTER_DEFAULT_JUMP_FORCE
|
|
|
self._jump_counter = self.jump_force
|
|
self._jump_counter = self.jump_force
|
|
|
self.angle = 0
|
|
self.angle = 0
|
|
|
self.collidable = True
|
|
self.collidable = True
|
|
@@ -352,7 +354,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
>>> protagonist.jump()
|
|
>>> protagonist.jump()
|
|
|
"""
|
|
"""
|
|
|
if force is None:
|
|
if force is None:
|
|
|
- force = settings.DEFAULT_JUMP_FORCE
|
|
|
|
|
|
|
+ force = settings.CHARACTER_DEFAULT_JUMP_FORCE
|
|
|
|
|
|
|
|
if isinstance(force, int):
|
|
if isinstance(force, int):
|
|
|
force = float(force)
|
|
force = float(force)
|
|
@@ -804,6 +806,16 @@ class Character(pygame.sprite.Sprite):
|
|
|
return self.STATIC_COLLISION
|
|
return self.STATIC_COLLISION
|
|
|
return ''
|
|
return ''
|
|
|
|
|
|
|
|
|
|
+ def generate_thumbnail(
|
|
|
|
|
+ self, height: int = settings.CHARACTER_DEFAULT_THUMBNAIL_SIZE
|
|
|
|
|
+ ):
|
|
|
|
|
+ self.scale_factor = height / self._original_rect.height
|
|
|
|
|
+ self.thumbnail = pygame.transform.scale(
|
|
|
|
|
+ self._original_image,
|
|
|
|
|
+ (int(self._original_rect.width * self.scale_factor), height),
|
|
|
|
|
+ )
|
|
|
|
|
+ self.thumbnail_rect = self.thumbnail.get_rect()
|
|
|
|
|
+
|
|
|
def load(self, filename: str, preserve_size: bool = False):
|
|
def load(self, filename: str, preserve_size: bool = False):
|
|
|
"""
|
|
"""
|
|
|
>>> protagonist = Character('protagonist.png')
|
|
>>> protagonist = Character('protagonist.png')
|
|
@@ -815,6 +827,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
if preserve_size:
|
|
if preserve_size:
|
|
|
height = self.height
|
|
height = self.height
|
|
|
self.image = self._original_image
|
|
self.image = self._original_image
|
|
|
|
|
+ self.generate_thumbnail()
|
|
|
self._original_rect = self._original_image.get_rect()
|
|
self._original_rect = self._original_image.get_rect()
|
|
|
self.rect = self.image.get_rect()
|
|
self.rect = self.image.get_rect()
|
|
|
self.scale_factor = 1
|
|
self.scale_factor = 1
|
|
@@ -850,7 +863,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
)
|
|
)
|
|
|
self._jump_counter -= 1
|
|
self._jump_counter -= 1
|
|
|
else:
|
|
else:
|
|
|
- self._jump_counter = settings.DEFAULT_JUMP_FORCE
|
|
|
|
|
|
|
+ self._jump_counter = settings.CHARACTER_DEFAULT_JUMP_FORCE
|
|
|
self.is_jumping = False
|
|
self.is_jumping = False
|
|
|
self.load(
|
|
self.load(
|
|
|
self.animation_filenames[_('stop')], preserve_size=True
|
|
self.animation_filenames[_('stop')], preserve_size=True
|