|
@@ -42,6 +42,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
|
|
|
|
|
_predefined_attributes_allowed = [
|
|
_predefined_attributes_allowed = [
|
|
|
_('collidable'),
|
|
_('collidable'),
|
|
|
|
|
+ _('gravitative'),
|
|
|
_('height'),
|
|
_('height'),
|
|
|
_('keys'),
|
|
_('keys'),
|
|
|
_('position'),
|
|
_('position'),
|
|
@@ -69,6 +70,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
self.name = name
|
|
self.name = name
|
|
|
self.x = 0
|
|
self.x = 0
|
|
|
self.y = 0
|
|
self.y = 0
|
|
|
|
|
+ self.gravitative = False
|
|
|
self.is_jumping = False
|
|
self.is_jumping = False
|
|
|
self.jump_force = settings.DEFAULT_JUMP_FORCE
|
|
self.jump_force = settings.DEFAULT_JUMP_FORCE
|
|
|
self._jump_counter = self.jump_force
|
|
self._jump_counter = self.jump_force
|
|
@@ -500,9 +502,19 @@ class Character(pygame.sprite.Sprite):
|
|
|
"""
|
|
"""
|
|
|
if not isinstance(collidable, bool):
|
|
if not isinstance(collidable, bool):
|
|
|
raise TypeError(_('The collidable argument must be a boolean.'))
|
|
raise TypeError(_('The collidable argument must be a boolean.'))
|
|
|
-
|
|
|
|
|
self.collidable = collidable
|
|
self.collidable = collidable
|
|
|
|
|
|
|
|
|
|
+ def set_gravitative(self, gravitative: bool = True):
|
|
|
|
|
+ """
|
|
|
|
|
+ Set the character gravitative.
|
|
|
|
|
+
|
|
|
|
|
+ Parameters:
|
|
|
|
|
+ gravitative: True if it is collidable, False otherwise.
|
|
|
|
|
+ """
|
|
|
|
|
+ if not isinstance(gravitative, bool):
|
|
|
|
|
+ raise TypeError(_('The gravitative argument must be a boolean.'))
|
|
|
|
|
+ self.gravitative = gravitative
|
|
|
|
|
+
|
|
|
def set_height(self, height: int):
|
|
def set_height(self, height: int):
|
|
|
"""
|
|
"""
|
|
|
Set the character height.
|
|
Set the character height.
|
|
@@ -690,6 +702,7 @@ class Character(pygame.sprite.Sprite):
|
|
|
"""
|
|
"""
|
|
|
new_character = Character(self.image_filename)
|
|
new_character = Character(self.image_filename)
|
|
|
new_character.set_collidable(self.collidable)
|
|
new_character.set_collidable(self.collidable)
|
|
|
|
|
+ new_character.set_gravitative(self.gravitative)
|
|
|
new_character.set_height(self.height)
|
|
new_character.set_height(self.height)
|
|
|
new_character.set_width(self.width)
|
|
new_character.set_width(self.width)
|
|
|
new_character.set_position((self.x, self.y))
|
|
new_character.set_position((self.x, self.y))
|
|
@@ -758,5 +771,6 @@ class Character(pygame.sprite.Sprite):
|
|
|
def update(self):
|
|
def update(self):
|
|
|
for action, key in self.predefined_keys.items():
|
|
for action, key in self.predefined_keys.items():
|
|
|
eval(f'self.{action}(key="{key}")')
|
|
eval(f'self.{action}(key="{key}")')
|
|
|
-
|
|
|
|
|
|
|
+ if self.gravitative:
|
|
|
|
|
+ self.down(_globals._gravity)
|
|
|
self._update_jump()
|
|
self._update_jump()
|