import pygame import numpy as np from scripts.utils import TILE_DICT BASE_MAP_PATH = 'data/maps/' class Tilemap: def __init__(self, game, tile_size, map_path): self.game = game self.tile_size = np.array(tile_size) self.offgrid_tiles = [] self.load_map(map_path) def load_map(self, map_path): print(map_path) tile_arr = np.transpose(np.loadtxt(BASE_MAP_PATH + map_path, delimiter=',', dtype=np.int8)) self.tilemap = np.empty_like(tile_arr, dtype = object) for row in range(tile_arr.shape[0]): for col in range(tile_arr.shape[1]): type_var = TILE_DICT[tile_arr[row,col]] self.tilemap[row,col] = {'type' : type_var[0], 'variant' : type_var[1], 'pos': np.array([row,col])} def render(self, surface): for x in range(self.tilemap.shape[0]): for y in range(self.tilemap.shape[1]): tile = self.tilemap[x,y] surface.blit(self.game.assets[tile['type']][tile['variant']],tile['pos'] * self.tile_size) for tile in self.offgrid_tiles: surface.blit(self.game.assets[tile['type']][tile['variant']],tile.pos) #this tile is written offgrid so no mult by tile_size