Skip to content

Commit a9c6f7d

Browse files
committed
Finish enemy and weapon customization, removal, Disable debug stuff, remove bottom movement, add set speed/size
1 parent 613ff7e commit a9c6f7d

File tree

8 files changed

+192
-78
lines changed

8 files changed

+192
-78
lines changed
File renamed without changes.

game/enemy.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
from ursina import *
2-
from utils.constants import min_enemy_speed, max_enemy_speed, enemy_health, min_enemy_movement, max_enemy_movement
2+
from utils.constants import enemy_health, min_enemy_movement, max_enemy_movement
33
from ursina.shaders import lit_with_shadows_shader
44

55
class Enemy(Entity):
6-
def __init__(self, player, shootables_parent, x, y, z, texture):
7-
super().__init__(parent=shootables_parent, model='cube', collider='box', texture=texture, x=x, y=y, z=z, shader=lit_with_shadows_shader)
6+
def __init__(self, speed, size, player, shootables_parent, x, y, z, texture):
7+
super().__init__(parent=shootables_parent, model='cube', collider='box', texture=texture, x=x, y=y, z=z, shader=lit_with_shadows_shader, scale=size)
88
self.health_bar = Entity(parent=self, y=1.2, model='cube', color=color.red, world_scale=(1.5,.1,.1))
99
self.max_hp = enemy_health
1010
self.hp = self.max_hp
11-
self.type = random.choice(["left", "right", "top", "bottom"])
11+
self.movement_type = random.choice(["left", "right", "top"])
1212
self.movement_done = 0
13-
self.speed = random.uniform(min_enemy_speed, max_enemy_speed)
13+
self.speed = speed
1414
self.movement_amount = random.uniform(min_enemy_movement, max_enemy_movement)
1515
self.player = player
1616

@@ -26,16 +26,16 @@ def update_path_line(self):
2626
start = self.position
2727
end = self.position
2828

29-
if self.type == "left":
29+
if self.movement_type == "left":
3030
end -= Vec3(max(0.05, remaining), 0, 0)
3131
scale = Vec3(max(0.05, remaining), 0.05, 0.05)
32-
elif self.type == "right":
32+
elif self.movement_type == "right":
3333
end += Vec3(max(0.05, remaining), 0, 0)
3434
scale = Vec3(max(0.05, remaining), 0.05, 0.05)
35-
elif self.type == "top":
35+
elif self.movement_type == "top":
3636
end += Vec3(0, max(0.05, remaining), 0)
3737
scale = Vec3(0.05, max(0.05, remaining), 0.05)
38-
elif self.type == "bottom":
38+
elif self.movement_type == "bottom":
3939
end -= Vec3(0, max(0.05, remaining), 0)
4040
scale = Vec3(0.05, max(0.05, remaining), 0.05)
4141

@@ -49,33 +49,33 @@ def update(self):
4949
self.health_bar.look_at_2d(self.player, axis="x")
5050
self.look_at_2d(self.player, axis="y")
5151

52-
if self.type == "left":
52+
if self.movement_type == "left":
5353
if self.movement_done < self.movement_amount:
5454
self.x -= self.speed
5555
self.movement_done += self.speed
5656
else:
57-
self.type = "right"
57+
self.movement_type = "right"
5858
self.movement_done = 0
59-
elif self.type == "right":
59+
elif self.movement_type == "right":
6060
if self.movement_done < self.movement_amount:
6161
self.x += self.speed
6262
self.movement_done += self.speed
6363
else:
64-
self.type = "left"
64+
self.movement_type = "left"
6565
self.movement_done = 0
66-
elif self.type == "top":
66+
elif self.movement_type == "top":
6767
if self.movement_done < self.movement_amount:
6868
self.y += self.speed
6969
self.movement_done += self.speed
7070
else:
71-
self.type = "bottom"
71+
self.movement_type = "bottom"
7272
self.movement_done = 0
73-
elif self.type == "bottom":
73+
elif self.movement_type == "bottom":
7474
if self.movement_done < self.movement_amount:
7575
self.y -= self.speed
7676
self.movement_done += self.speed
7777
else:
78-
self.type = "top"
78+
self.movement_type = "top"
7979
self.movement_done = 0
8080

8181
self.update_path_line()

game/game.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from game.player import Player
33
from game.enemy import Enemy
44

5-
from utils.constants import min_enemy_y, max_enemy_y
5+
from utils.constants import min_enemy_y, max_enemy_y, enemies
66

77
from ursina import *
88
from ursina.shaders import lit_with_shadows_shader
@@ -26,8 +26,7 @@ def __init__(self, pypresence_client) -> None:
2626
with open("settings.json", "r") as file:
2727
self.settings_dict = json.load(file)
2828

29-
self.enemy_image_dir = self.settings_dict.get("enemy_image_directory", "assets/graphics/enemy")
30-
self.enemy_file_names = [file_name for file_name in os.listdir(self.enemy_image_dir) if file_name.split(".")[1] in ["png", "jpg", "JPG"]]
29+
self.enemy_types = self.settings_dict.get("enemies", enemies)
3130

3231
self.ground = Entity(model='plane', collider='box', scale=64, texture='grass', texture_scale=(4,4), shader=lit_with_shadows_shader)
3332

@@ -58,14 +57,18 @@ def __init__(self, pypresence_client) -> None:
5857

5958
def summon_enemy(self):
6059
if not len(self.enemies) >= 50:
60+
enemy_stats = random.choice(list(self.enemy_types.items()))[1]
61+
speed, size, image_path = enemy_stats["speed"], enemy_stats["size"], enemy_stats["image"]
6162
self.enemies.append(
6263
Enemy(
64+
speed,
65+
size,
6366
self.player,
6467
self.shootables_parent,
6568
self.player.x + (random.randint(12, 24) * random.choice([1, -1])),
6669
random.randint(min_enemy_y, max_enemy_y),
6770
self.player.z + (random.randint(12, 24) * random.choice([1, -1])),
68-
Texture(Path(os.path.join(self.enemy_image_dir, random.choice(self.enemy_file_names))))
71+
Texture(Path(image_path))
6972
)
7073
)
7174

game/player.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from ursina.prefabs.first_person_controller import FirstPersonController
66

77
from utils.preload import death_sound
8-
from utils.constants import max_enemy_speed, weapons
8+
from utils.constants import weapons
99

1010
import json
1111

@@ -46,7 +46,7 @@ def update(self):
4646

4747
self.x = max(-16, min(self.x, 16))
4848
self.z = max(-16, min(self.z, 16))
49-
self.info_label.text = f"High Score: {self.high_score} Score: {self.score} Hits: {self.shots_fired}/{self.shots_hit} Accuracy: {round(self.accuracy, 2)}%"
49+
self.info_label.text = f"Score: {self.score} High Score: {self.high_score} Hits: {self.shots_fired}/{self.shots_hit} Accuracy: {round(self.accuracy, 2)}%"
5050

5151
weapon_name = self.inventory.slot_names[self.inventory.current_slot]
5252
self.gun.texture = Texture(Path(self.settings_dict.get("weapons", weapons)[weapon_name]["image"]))
@@ -58,7 +58,7 @@ def update(self):
5858

5959
if time.perf_counter() - self.last_presence_update >= 3:
6060
self.last_presence_update = time.perf_counter()
61-
self.pypresence_client.update(state='Training Aim', details=f"High Score: {self.high_score} Score: {self.score} Hits: {self.shots_fired}/{self.shots_hit} Accuracy: {round(self.accuracy, 2)}%")
61+
self.pypresence_client.update(state='Training Aim', details=f"Score: {self.score} High Score: {self.high_score} Hits: {self.shots_fired}/{self.shots_hit} Accuracy: {round(self.accuracy, 2)}%")
6262

6363
def summon_enemy(self):
6464
pass
@@ -79,7 +79,7 @@ def shoot(self):
7979
mouse.hovered_entity.hp -= self.weapon_dmg
8080
mouse.hovered_entity.blink(color.red)
8181

82-
self.score += int(distance(mouse.hovered_entity, self) * (mouse.hovered_entity.speed / max_enemy_speed))
82+
self.score += int(distance(mouse.hovered_entity, self))
8383

8484
self.shots_hit += 1
8585

0 commit comments

Comments
 (0)