mirror of
https://github.com/n0remac/game-jam-2020.git
synced 2025-12-06 01:13:12 -06:00
Moved physics engines to Mob.
This commit is contained in:
@@ -47,7 +47,7 @@ class Config(object):
|
||||
DEBUG = False
|
||||
|
||||
# Monster Count to be spawned
|
||||
MONSTER_COUNT = 30
|
||||
MONSTER_COUNT = 6
|
||||
|
||||
|
||||
class Enums(Enum):
|
||||
|
||||
@@ -54,10 +54,10 @@ class Game(arcade.Window):
|
||||
# Game Objects
|
||||
self.dungeon = None
|
||||
self.prev_keypress = [] # A list that assists with tracking keypress events
|
||||
self.physics_engine = None # Our physics engine
|
||||
# Used to keep track of our scrolling
|
||||
self.view_bottom = self.view_left = 0
|
||||
self.Recipe = []
|
||||
self.enemies_in_range = []
|
||||
|
||||
arcade.set_background_color(arcade.color.BLACK)
|
||||
|
||||
@@ -80,11 +80,11 @@ class Game(arcade.Window):
|
||||
level = random.choice(self.dungeon.levelList)
|
||||
self.player.center_x, self.player.center_y = level.center()
|
||||
self.player.cur_recipe = self.Recipe.active
|
||||
# x, y = level.center()
|
||||
self.player.monster_collisions = arcade.PhysicsEngineSimple(self.player, self.dungeon.getWalls())
|
||||
|
||||
# Set up monsters
|
||||
self.Mobs = MobHandler()
|
||||
self.enemy_list = self.Mobs.setup(0, 1, self.player, self.dungeon)
|
||||
self.enemy_list = self.Mobs.setup(Config.MONSTER_COUNT, Config.MONSTER_COUNT, self.player, self.dungeon)
|
||||
self.active_enemies = self.Mobs.active_enemies
|
||||
|
||||
# Setup viewport
|
||||
@@ -95,9 +95,6 @@ class Game(arcade.Window):
|
||||
self.view_bottom,
|
||||
Config.SCREEN_HEIGHT + self.view_bottom)
|
||||
|
||||
# Create the 'physics engine'
|
||||
self.physics_engine = arcade.PhysicsEngineSimple(self.player, self.dungeon.getWalls())
|
||||
|
||||
def on_draw(self):
|
||||
""" Render the screen. """
|
||||
try:
|
||||
@@ -229,7 +226,7 @@ class Game(arcade.Window):
|
||||
""" Movement and game logic """
|
||||
|
||||
# Move the player with the physics engine
|
||||
self.physics_engine.update()
|
||||
self.player.monster_collisions.update()
|
||||
self.player.update_animation()
|
||||
|
||||
changed = False # Track if we need to change the viewport
|
||||
@@ -267,6 +264,7 @@ class Game(arcade.Window):
|
||||
Config.SCREEN_WIDTH + self.view_left,
|
||||
self.view_bottom,
|
||||
Config.SCREEN_HEIGHT + self.view_bottom)
|
||||
# Update Mobs
|
||||
self.Mobs.update()
|
||||
|
||||
# Projectile updates
|
||||
|
||||
@@ -34,6 +34,7 @@ class MobHandler(arcade.SpriteList):
|
||||
mob.target = self.player
|
||||
mob.scale = 4
|
||||
mob.monster_type = 'ghost'
|
||||
mob.monster_collisions = arcade.PhysicsEngineSimple(mob, self.active_enemies)
|
||||
self.enemy_list.append(mob)
|
||||
for count in range(frogs):
|
||||
mob = Enemy(filename="resources/images/monsters/frog/frog1.png", dungeon=self.dungeon)
|
||||
@@ -41,6 +42,7 @@ class MobHandler(arcade.SpriteList):
|
||||
mob.target = self.player
|
||||
mob.scale = 4
|
||||
mob.monster_type = 'frog'
|
||||
mob.monster_collisions = arcade.PhysicsEngineSimple(mob, self.active_enemies)
|
||||
self.enemy_list.append(mob)
|
||||
|
||||
return self.enemy_list
|
||||
@@ -53,13 +55,13 @@ class MobHandler(arcade.SpriteList):
|
||||
for enemy in reversed(self.enemy_list):
|
||||
# TODO replace with distance checking
|
||||
distance = self.get_distance(enemy)
|
||||
if (distance < 500):
|
||||
if (distance < 300):
|
||||
self.active_enemies.append(enemy)
|
||||
self.enemy_list.remove(enemy)
|
||||
enemy.active = True
|
||||
try:
|
||||
for enemy in self.active_enemies:
|
||||
monster_collisions = arcade.PhysicsEngineSimple(enemy, self.active_enemies)
|
||||
monster_collisions.update()
|
||||
enemy.monster_collisions.update()
|
||||
path = enemy.get_path()
|
||||
enemy.tick(path)
|
||||
except Exception:
|
||||
@@ -71,11 +73,8 @@ class MobHandler(arcade.SpriteList):
|
||||
start_y = enemy.center_y
|
||||
end_x = self.player.center_x
|
||||
end_y = self.player.center_y
|
||||
try:
|
||||
distance = math.sqrt(math.pow(start_x - end_x, 2) + math.pow(start_y - end_y, 2))
|
||||
return distance
|
||||
except:
|
||||
return 0
|
||||
distance = math.sqrt(math.pow(start_x - end_x, 2) + math.pow(start_y - end_y, 2))
|
||||
return distance
|
||||
|
||||
|
||||
class Mob(arcade.Sprite):
|
||||
@@ -94,7 +93,7 @@ class Mob(arcade.Sprite):
|
||||
self.up_textures = []
|
||||
self.down_textures = []
|
||||
self.cur_texture = 0
|
||||
|
||||
self.monster_collisions = None
|
||||
self.dungeon = dungeon
|
||||
self.target = None
|
||||
self.collisions = None
|
||||
@@ -182,6 +181,7 @@ class Enemy(Mob):
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
super(Enemy, self).__init__(*args, **kwargs)
|
||||
self.monster_type = ''
|
||||
self.active = False
|
||||
|
||||
def nearestPosition(self) -> Tuple[int, int]:
|
||||
"""
|
||||
@@ -196,6 +196,7 @@ class Enemy(Mob):
|
||||
"""
|
||||
A on_update function, the Mob should decide it's next actions here.
|
||||
"""
|
||||
|
||||
curpos, nextpos = self.nearestPosition(), path[1]
|
||||
# print(curpos, nextpos)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user