/
sususer
/
ColonyGEN
Обзор
Документация
Войти
/
sususer
/
ColonyGEN
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
core/map/map_serializer.py
98 строк
2 KB
Chekr
f11
03 июн 2026, 13:53
03 июн 2026, 13:53
d260831
Код
Авторство
О чём код?
import json import os from core.map.tile import Tile SAVE_DIR = "data/saves" class MapSerializer: @staticmethod def save(game_state, filename="save.json"): os.makedirs(SAVE_DIR, exist_ok=True) game_map = game_state.map data = { "width": game_map.width, "height": game_map.height, "seed": game_map.seed, "dynamics": game_map.dynamics, "layers": getattr(game_map, "layers", {}), "tiles": [] } for y in range(game_map.height): row = [] for x in range(game_map.width): t = game_map.grid[y][x] row.append({ "type": t.type, "biome": getattr(t, "biome", "unknown"), "resource": t.resource, "locked": t.locked, "explored": getattr(t, "explored", False), "base": getattr(t, "base", False), }) data["tiles"].append(row) path = os.path.join(SAVE_DIR, filename) with open(path, "w", encoding="utf-8") as f: json.dump(data, f, indent=2) print(f"[СОХР] сохранено -> {path}") @staticmethod def load(game_state, filename="save.json"): path = os.path.join(SAVE_DIR, filename) if not os.path.exists(path): print("[СОХР] файл не найден") return False with open(path, "r", encoding="utf-8") as f: data = json.load(f) game_map = game_state.map game_map.width = data["width"] game_map.height = data["height"] game_map.seed = data["seed"] game_map.dynamics = data["dynamics"] game_map.layers = data.get("layers", {}) grid = [] for y in range(game_map.height): row = [] for x in range(game_map.width): td = data["tiles"][y][x] tile = Tile(td["type"], td.get("biome", "unknown")) tile.resource = td["resource"] tile.locked = td["locked"] tile.explored = td["explored"] tile.base = td["base"] row.append(tile) grid.append(row) game_map.grid = grid print(f"[СОХР] загружено <- {path}") return True