Skip to content

Commit

Permalink
Chest picks stat increase upon construction now, instead of upon kill.
Browse files Browse the repository at this point in the history
Other refactorings/cleanups.
  • Loading branch information
Parker8283 committed Apr 15, 2024
1 parent 8b97cdb commit 6f4ec93
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 37 deletions.
5 changes: 5 additions & 0 deletions src/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
SCREEN_HEIGHT = 600
MOUSE_LEFT_CLICK = 1
MOUSE_RIGHT_CLICK = 3
BLACK = (0, 0, 0)
GREEN = (0, 200, 0)
CHEST_SPAWN_CHANCE = 0.05

NUMBER_TO_STAT_NAME = ["Health", "Attack", "Speed", "Attack Speed"]

# Check if we are in a pyinstaller "onefile" binary. Different path prefix in that case:
if getattr(sys, "frozen", False):
Expand Down
52 changes: 26 additions & 26 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def generate_room(self):
entity.kill()
for _ in range(random.randint(1, 5)):
random.choice([Skeleton, Zombie])((random.randint(0, SCREEN_WIDTH), random.randint(75, SCREEN_HEIGHT)), self.all_enemies, self.all_entities)
if random.random() < 0.05:
if random.random() < CHEST_SPAWN_CHANCE:
Chest(
(random.randint(0, SCREEN_WIDTH), random.randint(75, SCREEN_HEIGHT)),
self.all_enemies,
Expand Down Expand Up @@ -99,15 +99,15 @@ def build_screen(self):
TextArea(
self.font,
"GAME TITLE HERE",
(0, 0, 0),
BLACK,
self.all_text,
center=(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 - 100),
)

TextArea(
self.font,
"Choose 5 units to start with below:",
(0, 0, 0),
BLACK,
self.all_text,
center=(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 - 70),
)
Expand All @@ -116,7 +116,7 @@ def build_screen(self):
class_text = TextArea(
self.font,
f"{class_type.__name__}s:",
(0, 0, 0),
BLACK,
self.all_text,
topright=(SCREEN_WIDTH / 2 - 50, SCREEN_HEIGHT / 2 + (50 * i)),
)
Expand All @@ -128,7 +128,7 @@ def build_screen(self):
)
class_count_text = TitleScreenPlayableUnitsText(
self.font,
(0, 0, 0),
BLACK,
class_type,
self.all_text,
topleft=class_left_arrow.rect.move(10, 0).topright,
Expand All @@ -151,35 +151,35 @@ def build_screen(self):
elif self.screen_state == GameState.States.GAME_SCREEN:
self.bg_surf = self.room_bg
self.warrior_text = PlayableUnitsText(
self.font, (0, 200, 0), Warrior, 1, self.all_text, topleft=(10, 10)
self.font, GREEN, Warrior, 1, self.all_text, topleft=(10, 10)
)
self.ranger_text = PlayableUnitsText(
self.font, (0, 0, 0), Ranger, 2, self.all_text, topleft=(10, 30)
self.font, BLACK, Ranger, 2, self.all_text, topleft=(10, 30)
)
self.mage_text = PlayableUnitsText(
self.font, (0, 0, 0), Mage, 3, self.all_text, topleft=(10, 50)
self.font, BLACK, Mage, 3, self.all_text, topleft=(10, 50)
)

TextArea(
self.font,
"[i] Stats page",
(0, 0, 0),
BLACK,
self.all_text,
center=(SCREEN_WIDTH / 2, 20),
)

self.stronger_enemies_text = TextArea(
self.font,
"Enemies are getting stronger...",
(0, 0, 0),
BLACK,
center=(SCREEN_WIDTH / 2, 65),
)

pos = 100
for entity in [Warrior, Ranger, Mage, Skeleton, Zombie]:
GameScreenStatsText(
self.font,
(0, 0, 0),
BLACK,
entity,
"health",
lambda e: e.health,
Expand All @@ -189,7 +189,7 @@ def build_screen(self):
pos += 20
GameScreenStatsText(
self.font,
(0, 0, 0),
BLACK,
entity,
"attack",
lambda e: e.attack,
Expand All @@ -199,7 +199,7 @@ def build_screen(self):
pos += 20
GameScreenStatsText(
self.font,
(0, 0, 0),
BLACK,
entity,
"speed",
lambda e: e.speed,
Expand All @@ -210,7 +210,7 @@ def build_screen(self):
if entity == Mage:
GameScreenStatsText(
self.font,
(0, 0, 0),
BLACK,
entity,
"attack speed",
lambda e: ((2000 // e.attack_speed_scale) + 1000) / 1000,
Expand All @@ -220,7 +220,7 @@ def build_screen(self):
else:
GameScreenStatsText(
self.font,
(0, 0, 0),
BLACK,
entity,
"attack speed",
lambda e: ((1000 // e.attack_speed_scale) + 1000) / 1000,
Expand All @@ -232,12 +232,12 @@ def build_screen(self):
self.rooms_cleared = 0
rooms_cleared = GameScreenRoomsClearedText(
self.font,
(0, 0, 0),
BLACK,
self.all_text,
topright=(SCREEN_WIDTH - 10, 10),
)
self.room_cleared_text = TextArea(
self.font, "Room Cleared!", (0, 0, 0), topleft=rooms_cleared.rect.move(0, 25).topleft
self.font, "Room Cleared!", BLACK, topleft=rooms_cleared.rect.move(0, 25).topleft
)

self.generate_room()
Expand Down Expand Up @@ -349,19 +349,19 @@ def __game_over_play_click(self):
if game.screen_state == GameState.States.GAME_SCREEN:
if event.key == K_1:
game.selected_unit = Warrior
game.warrior_text.set_color((0, 200, 0))
game.ranger_text.set_color((0, 0, 0))
game.mage_text.set_color((0, 0, 0))
game.warrior_text.set_color(GREEN)
game.ranger_text.set_color(BLACK)
game.mage_text.set_color(BLACK)
elif event.key == K_2:
game.selected_unit = Ranger
game.warrior_text.set_color((0, 0, 0))
game.ranger_text.set_color((0, 200, 0))
game.mage_text.set_color((0, 0, 0))
game.warrior_text.set_color(BLACK)
game.ranger_text.set_color(GREEN)
game.mage_text.set_color(BLACK)
elif event.key == K_3:
game.selected_unit = Mage
game.warrior_text.set_color((0, 0, 0))
game.ranger_text.set_color((0, 0, 0))
game.mage_text.set_color((0, 200, 0))
game.warrior_text.set_color(BLACK)
game.ranger_text.set_color(BLACK)
game.mage_text.set_color(GREEN)
elif event.key == K_i:
game.show_stats = not game.show_stats

Expand Down
25 changes: 14 additions & 11 deletions src/sprites.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,22 +258,25 @@ def __init__(self, centerpos, *groups):
self.image = smoothscale(image.load(ASSETS_DIR / "chest.png").convert_alpha(), (64, 44))
self.rect = self.image.get_rect(center=centerpos)

self.random_class = random.choice([Warrior, Ranger, Mage])
self.random_stat = random.randint(0, 3)

def update(self, screen_rect, group, delta_time):
self.rect.clamp_ip(screen_rect)

def kill(self):
random_class = random.choice([Warrior, Ranger, Mage])
random_stat = random.randint(1, 4)
if random_stat == 1:
random_class.attack += 1
elif random_stat == 2:
random_class.speed += 1
elif random_stat == 3:
random_class.attack_speed_scale += 1
elif random_stat == 4:
random_class.health += 1
print(f"CHEST GAVE: {random_class} - {random_stat}")
if self.random_stat == 0:
self.random_class.health += 1
elif self.random_stat == 1:
self.random_class.attack += 1
elif self.random_stat == 2:
self.random_class.speed += 1
elif self.random_stat == 3:
self.random_class.attack_speed_scale += 1
print(f"CHEST GAVE: {self.random_class} - {self.random_stat}")
super().kill()
# game.chest_tooltip_text.set_text(f"{self.random_class.__name__}s got +1 {NUMBER_TO_STAT_NAME[self.random_stat]}")
# game.all_text.add(game.chest_tooltip_text)


class TextArea(Sprite):
Expand Down

0 comments on commit 6f4ec93

Please sign in to comment.