32 lines
834 B
Python
32 lines
834 B
Python
import pygame
|
|
import numpy as np
|
|
|
|
tile_size = 64
|
|
MAT_ISO = np.array([[0.5, 0.25], [-0.5, 0.25]])
|
|
|
|
|
|
class MapTile(pygame.sprite.Sprite):
|
|
def __init__(self, x: int, y: int):
|
|
super(MapTile, self).__init__()
|
|
self.image = pygame.image.load("tileset/placeholder.png")
|
|
self.rect = self.image.get_rect()
|
|
self.rect.center = (x, y)
|
|
|
|
|
|
class IsoMapTile(MapTile):
|
|
def __init__(
|
|
self,
|
|
u: int,
|
|
v: int,
|
|
elevation: int = 0,
|
|
origin: np.ndarray = np.array([100, 100]),
|
|
):
|
|
vec = np.array([u, v]) @ MAT_ISO * tile_size + origin
|
|
super(IsoMapTile, self).__init__(vec[0], vec[1] + tile_size / 8 * elevation)
|
|
self.u = u
|
|
self.v = v
|
|
self.elevation = elevation
|
|
|
|
def update(self, dx: int, dy: int):
|
|
self.rect.move_ip(-dx, -dy)
|