2024-07-10 20:08:18 +02:00
import pygame
import numpy as np
2024-07-12 16:56:47 +02:00
from scripts . utils import TILE_DICT , to_isometric
2024-07-10 20:08:18 +02:00
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 ]
2024-07-12 16:56:47 +02:00
surface . blit ( self . game . assets [ tile [ ' type ' ] ] [ tile [ ' variant ' ] ] , to_isometric ( tile [ ' pos ' ] , self . tile_size ) )
2024-07-10 20:08:18 +02:00
for tile in self . offgrid_tiles :
2024-07-12 16:56:47 +02:00
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