refactor/typisierung-und-collisions #1

Merged
bhinz merged 5 commits from refactor/typisierung-und-collisions into main 2026-05-11 15:17:37 +00:00
Showing only changes of commit da973dd968 - Show all commits

View file

@ -1,6 +1,5 @@
import pygame as pg import pygame as pg
import json import json
from scripts.models import Tile
NEIGHBOR_OFFSETS = [ NEIGHBOR_OFFSETS = [
(0, 0), (0, 0),
@ -37,8 +36,16 @@ class Tilemap:
self.tilemap = {} self.tilemap = {}
self.offgrid_tiles = [] self.offgrid_tiles = []
for i in range(10): for i in range(10):
self.tilemap[str(3 + i) + ";10"] = Tile("grass", 1, (3 + i, 10)) self.tilemap[str(3 + i) + ";10"] = {
self.tilemap["10;" + str(5 + i)] = Tile("stone", 1, (10, i + 5)) "type": "grass",
"variant": 1,
"pos": (3 + i, 10),
}
self.tilemap["10;" + str(5 + i)] = {
"type": "stone",
"variant": 1,
"pos": (10, i + 5),
}
def render(self, surface: pg.Surface, offset: tuple = (0, 0)): def render(self, surface: pg.Surface, offset: tuple = (0, 0)):
for tile in self.offgrid_tiles: for tile in self.offgrid_tiles:
@ -127,27 +134,21 @@ class Tilemap:
tile["variant"] = AUTOTILE_MAP[neighbors] tile["variant"] = AUTOTILE_MAP[neighbors]
def save(self, path: str) -> None: def save(self, path: str) -> None:
data = { data = {
"tilemap": {k: tile.to_dict() for k, tile in self.tilemap.items()}, "tilemap": self.tilemap,
"tile_size": self.tile_size, "tile_size": self.tile_size,
"offgrid": [tile.to_dict() for tile in self.offgrid_tiles], "offgrid": self.offgrid_tiles,
} }
with open(path, "w") as f: with open(path, "w") as f:
json.dump(data, f) json.dump(data, f)
def load(self, path: str): def load(self, path: str) -> None:
"""Lädt die gespeicherte Tilemap.""" """Lädt die gespeicherte Tilemap."""
with open(path, "r") as f: with open(path, "r") as f:
map_data: dict = json.load(f) map_data: dict = json.load(f)
self.tilemap: dict[str:Tile] = {} self.tilemap: dict[str, dict] = map_data["tilemap"]
self.offgrid_tiles: list[Tile] = [] self.tile_size: int = map_data["tile_size"]
self.offgrid_tiles: list[dict] = map_data["offgrid"]
for key, data in map_data.items():
self.tilemap[key] = Tile.from_dict(data)
for tile in map_data["offgrid"]:
self.offgrid_tiles.append(Tile.from_dict(tile))