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.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]
|
self.scroll: list[float] = [0, 0]
|
||||||
|
|
||||||
|
|
@ -50,7 +51,7 @@ class Editor:
|
||||||
try:
|
try:
|
||||||
self.tilemap.load(path="data/maps/" + str(map_id) + ".json")
|
self.tilemap.load(path="data/maps/" + str(map_id) + ".json")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
print("error")
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.running:
|
while self.running:
|
||||||
# Hintergrund löschen
|
# Hintergrund löschen
|
||||||
|
|
@ -220,7 +221,7 @@ class Editor:
|
||||||
self.tilemap.autotile()
|
self.tilemap.autotile()
|
||||||
if event.key == pygame.K_o:
|
if event.key == pygame.K_o:
|
||||||
print("Map saved.")
|
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):
|
if event.key in (pygame.K_LSHIFT, pygame.K_RSHIFT):
|
||||||
self.shift: bool = True
|
self.shift: bool = True
|
||||||
if event.type == pygame.KEYUP:
|
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(
|
self.screen: pygame.Surface = pygame.display.set_mode(
|
||||||
(SCREEN_WIDTH, SCREEN_HEIGHT)
|
(SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.display: pygame.Surface = pygame.Surface(
|
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)
|
(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.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.load_level(map_id=self.level)
|
||||||
self.screenshake = 0
|
self.screenshake = 0
|
||||||
|
|
@ -100,7 +105,9 @@ class Game:
|
||||||
pygame.Rect(4 + tree["pos"][0], 4 + tree["pos"][1], 23, 13)
|
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:
|
if spawner["variant"] == 0:
|
||||||
self.player.pos = spawner["pos"]
|
self.player.pos = spawner["pos"]
|
||||||
self.player.air_time = 0
|
self.player.air_time = 0
|
||||||
|
|
@ -114,18 +121,17 @@ class Game:
|
||||||
self.scroll: list[float] = [0, 0]
|
self.scroll: list[float] = [0, 0]
|
||||||
self.transition: int = -30
|
self.transition: int = -30
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
while self.running:
|
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:
|
if self.dead:
|
||||||
self.dead += 1
|
self.dead += 1
|
||||||
self.screenshake = max(16, self.screenshake)
|
self.screenshake = max(16, self.screenshake)
|
||||||
if self.dead > 40:
|
if self.dead > 40:
|
||||||
self.load_level(map_id=self.level)
|
self.load_level(map_id=self.level)
|
||||||
|
|
||||||
|
|
||||||
self.screenshake = max(0, self.screenshake - 1)
|
self.screenshake = max(0, self.screenshake - 1)
|
||||||
|
|
||||||
if not len(self.enemies):
|
if not len(self.enemies):
|
||||||
|
|
@ -237,6 +243,10 @@ class Game:
|
||||||
if kill:
|
if kill:
|
||||||
self.sparks.remove(spark)
|
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)
|
# self.player.boost(self.boost)
|
||||||
# print(int(self.player.pos[0]))
|
# print(int(self.player.pos[0]))
|
||||||
# print(int(self.player.pos[1]))
|
# print(int(self.player.pos[1]))
|
||||||
|
|
@ -301,7 +311,10 @@ class Game:
|
||||||
random.random() * self.screenshake - self.screenshake / 2,
|
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()
|
pygame.display.update()
|
||||||
self.clock.tick(60)
|
self.clock.tick(60)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue