refactor/typisierung-und-collisions #1
1 changed files with 16 additions and 15 deletions
|
|
@ -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))
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue