From 390ba86c640af75437ea3e4dd0ed5b3652cc9166 Mon Sep 17 00:00:00 2001 From: Acereca Date: Sat, 4 Jun 2022 18:30:45 +0200 Subject: [PATCH] add loading button and functionality --- main.py | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index d787e43..49f9b81 100755 --- a/main.py +++ b/main.py @@ -2,20 +2,43 @@ import pygame import pygame_gui as pgg import numpy as np import Tiles +import logging as log screen_size = np.array([16 / 9 / 2, 1]) * 1440 origin = np.array([screen_size[0] / 2, Tiles.tile_size]) -def load_map(map_file="map.dnd"): - for u, v, elevation, tile in lines: - getattr(Tiles, tile)(u, v, elevation) +def load_map(map_file="map.npz"): + print("started loading tiles") + data = np.load(map_file) + us = data["us"] + vs = data["vs"] + es = data["es"] + ts = data["ts"] + + map_tiles = pygame.sprite.RenderPlain() + for u, v, e, t in zip(us, vs, es, ts): + tile = getattr(Tiles, t)(u, v, e, origin) + map_tiles.add(tile) + + print(f"loaded {len(map_tiles)} tiles") + + return map_tiles -def save_map(map_tiles: pygame.sprite.RenderPlain, map_file: str = "map.dnd"): +def save_map(map_tiles: pygame.sprite.RenderPlain, map_file: str = "map.npz"): + us = np.array([]) + vs = np.array([]) + es = np.array([]) + ts = np.array([]) for tile in map_tiles.sprites(): - (tile.u, tile.v, tile.elevation, type(tile)) + us = np.append(us, tile.u) + vs = np.append(vs, tile.v) + es = np.append(es, tile.elevation) + ts = np.append(ts, tile.__class__.__name__) + + np.savez(file=map_file, us=us, vs=vs, es=es, ts=ts) def main(): @@ -33,15 +56,20 @@ def main(): text="Save", manager=gui_manager, ) + load_btn = pgg.elements.UIButton( + relative_rect=pygame.Rect((0, 20), (100, 20)), + text="Load", + manager=gui_manager, + ) # mouse_prev_x, mouse_prev_y = pygame.mouse.get_pos() # map_text = font.render("test", True, (0, 0, 0)) map_tiles = pygame.sprite.RenderPlain() - for xix in range(10): - for yix in range(10): - tile = Tiles.IsoMapTile(xix, yix, 0, origin) - map_tiles.add(tile) + # for xix in range(10): + # for yix in range(10): + # tile = Tiles.IsoMapTile(xix, yix, 0, origin) + # map_tiles.add(tile) gameit = 0 is_running = True @@ -66,7 +94,9 @@ def main(): if evt.type == pgg.UI_BUTTON_PRESSED: if evt.ui_element == save_btn: save_map(map_tiles) - gui_manager.process_events(evt) + if evt.ui_element == load_btn: + map_tiles = load_map() + gui_manager.process_events(evt) gui_manager.update(time_delta)