Source code for scripts.engine.world_objects.tile
from __future__ import annotations
import logging
from typing import Any, Dict, TYPE_CHECKING
from scripts.engine.internal.constant import Height, HeightType
if TYPE_CHECKING:
import pygame
[docs]class Tile:
"""
A Tile on the GameMap.
"""
[docs] def __init__(
self,
x: int,
y: int,
sprite: pygame.Surface,
sprite_path: str,
blocks_movement: bool = False,
height: HeightType = Height.MIN,
):
self.x = x
self.y = y
self.sprite = sprite
self.sprite_path = sprite_path
self.is_visible = False
self.height = height
self.blocks_movement = blocks_movement
[docs] def serialise(self) -> Dict[str, Any]:
"""
Serialise the Tile
"""
_dict = {
"x": self.x,
"y": self.y,
"sprite_path": self.sprite_path,
"is_visible": self.is_visible,
"height": self.height,
"blocks_movement": self.blocks_movement,
}
return _dict
[docs] @classmethod
def deserialise(cls, serialised: Dict[str, Any]):
"""
Loads the details from the serialised data back into the Tile.
"""
try:
x = serialised["x"]
y = serialised["y"]
sprite_path = serialised["sprite_path"]
from scripts.engine.core import utility
sprite = utility.get_image(sprite_path)
is_visible = serialised["is_visible"]
height = serialised["height"]
blocks_movement = serialised["blocks_movement"]
tile = Tile(x, y, sprite, sprite_path, blocks_movement, height)
tile.is_visible = is_visible
return tile
except KeyError as e:
logging.warning(f"Tile.Deserialise: Incorrect key ({e.args[0]}) given. Data not loaded correctly.")
raise KeyError # throw exception to hit outer error handler and exit