diff --git a/editor.py b/editor.py index d16836a..dba39e0 100644 --- a/editor.py +++ b/editor.py @@ -32,7 +32,8 @@ class Editor: self.tilemap: Tilemap = Tilemap(game=self, tile_size=16) - self.load_level("map") + self.map_id: int | str = "jays_map" + self.load_level(self.map_id) self.scroll: list[float] = [0, 0] @@ -50,7 +51,7 @@ class Editor: try: self.tilemap.load(path="data/maps/" + str(map_id) + ".json") except FileNotFoundError: - pass + print("error") def run(self): while self.running: # Hintergrund löschen @@ -220,7 +221,7 @@ class Editor: self.tilemap.autotile() if event.key == pygame.K_o: print("Map saved.") - self.tilemap.save(path="map.json") + self.tilemap.save(path="data/maps/" + str(self.map_id) + ".json") if event.key in (pygame.K_LSHIFT, pygame.K_RSHIFT): self.shift: bool = True if event.type == pygame.KEYUP: diff --git a/game.py b/game.py index 7e1652c..68d0b8d 100644 --- a/game.py +++ b/game.py @@ -25,7 +25,12 @@ class Game: self.screen: pygame.Surface = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT) ) + self.display: pygame.Surface = pygame.Surface( + (self.screen.get_width() // 2, self.screen.get_height() // 2), + pygame.SRCALPHA, + ) + self.display_2: pygame.Surface = pygame.Surface( (self.screen.get_width() // 2, self.screen.get_height() // 2) ) @@ -77,7 +82,7 @@ class Game: self.tilemap: Tilemap = Tilemap(game=self, tile_size=16) - self.level: int = 0 + self.level: int | str = "jays_map" self.load_level(map_id=self.level) self.screenshake = 0 @@ -100,7 +105,9 @@ class Game: pygame.Rect(4 + tree["pos"][0], 4 + tree["pos"][1], 23, 13) ) - for spawner in self.tilemap.extract(id_pairs=[("spawners", 0), ("spawners", 1)]): + for spawner in self.tilemap.extract( + id_pairs=[("spawners", 0), ("spawners", 1)] + ): if spawner["variant"] == 0: self.player.pos = spawner["pos"] self.player.air_time = 0 @@ -114,18 +121,17 @@ class Game: self.scroll: list[float] = [0, 0] self.transition: int = -30 - - def run(self) -> None: while self.running: - self.display.blit(self.assets["background"], (0, 0)) + self.display.fill((0, 0, 0, 0)) + self.display_2.blit(self.assets["background"], (0, 0)) + if self.dead: self.dead += 1 self.screenshake = max(16, self.screenshake) if self.dead > 40: self.load_level(map_id=self.level) - self.screenshake = max(0, self.screenshake - 1) if not len(self.enemies): @@ -177,7 +183,7 @@ class Game: self.tilemap, movement=(self.movement[1] - self.movement[0], 0) ) self.player.render(surface=self.display, offset=render_scroll) - + # [[x, y], direction, timer] for projectile in self.projectiles.copy(): projectile[0][0] += projectile[1] @@ -237,6 +243,10 @@ class Game: if kill: self.sparks.remove(spark) + + display_mask = pygame.mask.from_surface(self.display) + display_sillhouette = display_mask.to_surface(setcolor=(0, 0, 0, 180), unsetcolor=(0, 0, 0, 0)) + self.display_2.blit(display_sillhouette, (0, 0)) # self.player.boost(self.boost) # print(int(self.player.pos[0])) # print(int(self.player.pos[1])) @@ -301,7 +311,10 @@ class Game: random.random() * self.screenshake - self.screenshake / 2, ) - self.screen.blit(pygame.transform.scale(self.display, self.screen.get_size()), screenshake_offset) + self.screen.blit( + pygame.transform.scale(self.display_2, self.screen.get_size()), + screenshake_offset, + ) pygame.display.update() self.clock.tick(60)