mirror of
https://github.com/n0remac/game-jam-2020.git
synced 2025-12-10 00:05:22 -06:00
Moved all mob update code from main to MobHandler
This commit is contained in:
@@ -225,13 +225,41 @@ class Game(arcade.Window):
|
|||||||
def on_update(self, delta_time):
|
def on_update(self, delta_time):
|
||||||
""" Movement and game logic """
|
""" Movement and game logic """
|
||||||
|
|
||||||
# Move the player with the physics engine
|
# Update Mobs
|
||||||
self.player.monster_collisions.update()
|
self.Mobs.update()
|
||||||
self.player.update_animation()
|
|
||||||
|
# scroll screen
|
||||||
|
self.scroll_screen()
|
||||||
|
|
||||||
|
# Projectile updates
|
||||||
|
self.bullet_list.update()
|
||||||
|
for bullet in self.bullet_list:
|
||||||
|
|
||||||
|
# Collision Checks
|
||||||
|
hit_list = arcade.check_for_collision_with_list(bullet, self.dungeon.getWalls())
|
||||||
|
enemy_hit_list = arcade.check_for_collision_with_list(bullet, self.active_enemies)
|
||||||
|
# If it did, get rid of the bullet
|
||||||
|
if len(hit_list) > 0:
|
||||||
|
bullet.remove_from_sprite_lists()
|
||||||
|
if len(enemy_hit_list):
|
||||||
|
self.player.add_kill(enemy_hit_list[0].monster_type)
|
||||||
|
self.Recipe.add_kill(enemy_hit_list[0].monster_type)
|
||||||
|
enemy_hit_list[0].remove_from_sprite_lists()
|
||||||
|
bullet.remove_from_sprite_lists()
|
||||||
|
|
||||||
|
# If the bullet flies off-screen, remove it. TEMP change to range calc
|
||||||
|
if (
|
||||||
|
bullet.bottom < self.view_bottom or
|
||||||
|
bullet.top > self.view_bottom + Config.SCREEN_HEIGHT or
|
||||||
|
bullet.right > self.view_left + Config.SCREEN_WIDTH or
|
||||||
|
bullet.left < self.view_left
|
||||||
|
):
|
||||||
|
bullet.remove_from_sprite_lists()
|
||||||
|
|
||||||
|
def scroll_screen(self):
|
||||||
|
# Below manages all scrolling mechanics
|
||||||
|
|
||||||
changed = False # Track if we need to change the viewport
|
changed = False # Track if we need to change the viewport
|
||||||
|
|
||||||
# Below manages all scrolling mechanics
|
|
||||||
# Scroll left
|
# Scroll left
|
||||||
left_boundary = self.view_left + Config.LEFT_VIEWPORT_MARGIN
|
left_boundary = self.view_left + Config.LEFT_VIEWPORT_MARGIN
|
||||||
if self.player.left < left_boundary:
|
if self.player.left < left_boundary:
|
||||||
@@ -264,34 +292,6 @@ class Game(arcade.Window):
|
|||||||
Config.SCREEN_WIDTH + self.view_left,
|
Config.SCREEN_WIDTH + self.view_left,
|
||||||
self.view_bottom,
|
self.view_bottom,
|
||||||
Config.SCREEN_HEIGHT + self.view_bottom)
|
Config.SCREEN_HEIGHT + self.view_bottom)
|
||||||
# Update Mobs
|
|
||||||
self.Mobs.update()
|
|
||||||
|
|
||||||
# Projectile updates
|
|
||||||
self.bullet_list.update()
|
|
||||||
for bullet in self.bullet_list:
|
|
||||||
|
|
||||||
# Collision Checks
|
|
||||||
hit_list = arcade.check_for_collision_with_list(bullet, self.dungeon.getWalls())
|
|
||||||
enemy_hit_list = arcade.check_for_collision_with_list(bullet, self.active_enemies)
|
|
||||||
# If it did, get rid of the bullet
|
|
||||||
if len(hit_list) > 0:
|
|
||||||
bullet.remove_from_sprite_lists()
|
|
||||||
if len(enemy_hit_list):
|
|
||||||
self.player.add_kill(enemy_hit_list[0].monster_type)
|
|
||||||
self.Recipe.add_kill(enemy_hit_list[0].monster_type)
|
|
||||||
enemy_hit_list[0].remove_from_sprite_lists()
|
|
||||||
bullet.remove_from_sprite_lists()
|
|
||||||
|
|
||||||
# If the bullet flies off-screen, remove it. TEMP change to range calc
|
|
||||||
if (
|
|
||||||
bullet.bottom < self.view_bottom or
|
|
||||||
bullet.top > self.view_bottom + Config.SCREEN_HEIGHT or
|
|
||||||
bullet.right > self.view_left + Config.SCREEN_WIDTH or
|
|
||||||
bullet.left < self.view_left
|
|
||||||
):
|
|
||||||
bullet.remove_from_sprite_lists()
|
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -51,6 +51,10 @@ class MobHandler(arcade.SpriteList):
|
|||||||
self.enemy_list.draw()
|
self.enemy_list.draw()
|
||||||
|
|
||||||
def update(self) -> None:
|
def update(self) -> None:
|
||||||
|
#update player
|
||||||
|
self.player.monster_collisions.update()
|
||||||
|
self.player.update_animation()
|
||||||
|
|
||||||
# Enemy activation and update
|
# Enemy activation and update
|
||||||
for enemy in reversed(self.enemy_list):
|
for enemy in reversed(self.enemy_list):
|
||||||
# TODO replace with distance checking
|
# TODO replace with distance checking
|
||||||
@@ -172,6 +176,8 @@ class Player(Mob):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Enemy(Mob):
|
class Enemy(Mob):
|
||||||
"""
|
"""
|
||||||
Represents an Enemy Mob.
|
Represents an Enemy Mob.
|
||||||
|
|||||||
Reference in New Issue
Block a user