Catapults working. At this point most of the basic game is set up, now I have to get down to level and enemy creation, and sounds for when things happen.

This commit is contained in:
Storm Dragon
2025-02-01 00:11:36 -05:00
parent ab73ddfdd5
commit 7627543ed8
8 changed files with 187 additions and 4 deletions

View File

@@ -1,6 +1,8 @@
import pygame
import random
from libstormgames import *
from src.catapult import Catapult
from src.coffin import CoffinObject
from src.enemy import Enemy
from src.object import Object
from src.player import Player
@@ -18,7 +20,7 @@ class Level:
self.player = Player(levelData["player_start"]["x"], levelData["player_start"]["y"])
self.edge_warning_channel = None
self.weapon_hit_channel = None
# Load objects and enemies from level data
for obj in levelData["objects"]:
# Handle x position or range
@@ -26,9 +28,20 @@ class Level:
xPos = obj["x_range"]
else:
xPos = [obj["x"], obj["x"]] # Single position as range
# Check if this is a catapult
if obj.get("type") == "catapult":
catapult = Catapult(
xPos[0],
obj["y"],
self.sounds,
direction=obj.get("direction", 1),
fireInterval=obj.get("fireInterval", 5000),
firingRange=obj.get("range", 20)
)
self.objects.append(catapult)
# Check if this is an enemy
if "enemy_type" in obj:
elif "enemy_type" in obj:
enemy = Enemy(
xPos,
obj["y"],
@@ -71,7 +84,6 @@ class Level:
obj.has_spawned = True
roll = random.randint(1, 100)
speak(f"Near grave, chance to spawn zombie")
if roll <= obj.zombie_spawn_chance:
zombie = Enemy(
[obj.xPos, obj.xPos],
@@ -108,6 +120,11 @@ class Level:
if enemy.channel is not None:
enemy.channel = obj_update(enemy.channel, self.player.xPos, enemy.xPos)
# Update catapults
for obj in self.objects:
if isinstance(obj, Catapult):
obj.update(currentTime, self.player)
# Update bouncing items
for item in self.bouncing_items[:]: # Copy list to allow removal
if not item.update(currentTime):