import pygame as pg import numpy as np import xml.etree.ElementTree as ET class Map: def __init__(self, world): self.world = world self.cam = np.array([0.0, 0.0]) self.data = self.load() self.tileset = pg.image.load('data/tilemap.png') def draw(self, screen): # MAP for i in range(0, 64): for j in range(0, 64): k = i * 64 + j index = int(self.data[k]) - 1 self.draw_tile(screen, (j*32, i*32), index) # PLAYER player = self.world.get_player() self.cam = (player.pos[0] - screen.get_width()/2, player.pos[1] - screen.get_height()/2) pg.draw.rect(screen, 'white', ( player.pos[0] - player.size[0]/2.0 - self.cam[0], player.pos[1] - player.size[1]/2.0 - self.cam[1], player.size[0], player.size[1] )) def draw_tile(self, screen, pos, index): p = (pos[0] - self.cam[0], pos[1] - self.cam[1]) screen.blit(self.tileset, p, (index * 32, 0, 32, 32)) def load(self): tree = ET.parse('data/map.tmx') root = tree.getroot() csv = root[1][0] return csv.text.split(',')