py_yugi_clone/scripts/tiles.py
2024-07-12 16:56:47 +02:00

28 lines
1.3 KiB
Python

import pygame
import numpy as np
from scripts.utils import TILE_DICT, to_isometric
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']],to_isometric(tile['pos'],self.tile_size))
for tile in self.offgrid_tiles:
surface.blit(self.game.assets[tile['type']][tile['variant']],to_isometric(tile['pos'],self.tile_size)) #this tile is written offgrid so no mult by tile_size