feat: Transparente Anzeige hinzugefügt; Hintergrund wird jetzt auf einem separaten Surface gerendert
This commit is contained in:
parent
6766f5aadb
commit
0de7cea306
2 changed files with 25 additions and 11 deletions
|
|
@ -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:
|
||||
|
|
|
|||
27
game.py
27
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):
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue