diff --git a/__pycache__/common.cpython-314.pyc b/__pycache__/common.cpython-314.pyc index 7087e3f..e34ff9d 100644 Binary files a/__pycache__/common.cpython-314.pyc and b/__pycache__/common.cpython-314.pyc differ diff --git a/__pycache__/eb_engine.cpython-314.pyc b/__pycache__/eb_engine.cpython-314.pyc index a6b9755..b9e7e45 100644 Binary files a/__pycache__/eb_engine.cpython-314.pyc and b/__pycache__/eb_engine.cpython-314.pyc differ diff --git a/__pycache__/eb_objects.cpython-314.pyc b/__pycache__/eb_objects.cpython-314.pyc index f9e2b79..2bbb82d 100644 Binary files a/__pycache__/eb_objects.cpython-314.pyc and b/__pycache__/eb_objects.cpython-314.pyc differ diff --git a/common.py b/common.py index 8b15edc..7848acd 100644 --- a/common.py +++ b/common.py @@ -3,4 +3,10 @@ import json import uuid from dataclasses import dataclass, field from copy import deepcopy -import pygame \ No newline at end of file +import pygame + + +def scale_image(image, n): + orig_size = image.get_size() + new_size = (int(orig_size[0] * n), int(orig_size[1] * n)) + return pygame.transform.smoothscale(image, new_size) \ No newline at end of file diff --git a/def_map.json b/def_map.json index 48cfd80..b03e2d7 100644 --- a/def_map.json +++ b/def_map.json @@ -1,978 +1,742 @@ { "0": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": { + "id": "1", + "name": "2", + "sprite_name": "sword_default" + }, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "1": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "2": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "3": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "4": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "5": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "6": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "7": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ] } \ No newline at end of file diff --git a/eb_engine.py b/eb_engine.py index 83443d3..aec361f 100644 --- a/eb_engine.py +++ b/eb_engine.py @@ -3,20 +3,17 @@ import eb_objects import eb_terrain_objects import eb_creature_objects -cell_classes = {"Ground": eb_terrain_objects.Ground} +cell_classes = {"grass_small": eb_terrain_objects.Ground, + "sword_default": eb_objects.Item} + main_dir = os.path.dirname(os.path.abspath(__file__)) sprites_dir = os.path.join(main_dir, "res", "sprites") -def scale_image(image, n): - orig_size = image.get_size() - new_size = (int(orig_size[0] * n), int(orig_size[1] * n)) - return pygame.transform.scale(image, new_size) - @dataclass class Cell: terrain_obj: any - #item_obj: any - #creature_obj: any + item_obj: None = None + creature_obj: None = None is_target: bool = False @dataclass @@ -41,32 +38,34 @@ class Map: for line in range(len(buff)): self.cells[line] = [] for cell in buff[str(line)]: - final_cell = Cell(cell_classes[cell["type"]](**cell["cell"]["terrain_obj"])) + final_cell = deepcopy(Cell(cell_classes[cell["terrain_obj"]["sprite_name"]](**cell["terrain_obj"]))) + + if cell["item_obj"]: + final_cell.item_obj = deepcopy(cell_classes[cell["item_obj"]["sprite_name"]](**cell["item_obj"])) + self.cells[line].append(deepcopy(final_cell)) - def draw(self, screen, current_frame, grid = True): - for l in range(len(self.cells)): - for i, cell in enumerate(self.cells[l]): - x = int((i * self.size + self.cam_x) * self.scale) - y = int((l * self.size + self.cam_y) * self.scale) - w = int(self.size * self.scale - self.cell_dist) - h = int(self.size * self.scale - self.cell_dist) - - # add if scale != prev_scale: no scale - # current frame to decide, upgrade sprite or not sprite_state - scaled = scale_image(self.sprites[cell.terrain_obj.sprite_name][cell.terrain_obj.sprite_state], self.scale) - scaled_rect = scaled.get_rect(center = (x + w/2, y + h/2)) - screen.blit(scaled, scaled_rect) - - if cell.terrain_obj.sprite_state == len(self.sprites[cell.terrain_obj.sprite_name]) - 1: - if current_frame % self.sprites_refresh == 0: - cell.terrain_obj.sprite_state = 0 - elif current_frame % self.sprites_refresh == 0: - cell.terrain_obj.sprite_state += 1 - - if grid: - pygame.draw.rect(screen, self.color, pygame.Rect(x, y, w, h), self.bord) + + def draw_map(self, screen, current_frame, grid = True): + for j in range(len(self.cells)): + for i, cell in enumerate(self.cells[j]): + dd = {"x": int((i * self.size + self.cam_x) * self.scale), + "y": int((j * self.size + self.cam_y) * self.scale), + "w": int(self.size * self.scale - self.cell_dist), + "h": int(self.size * self.scale - self.cell_dist), + "spr_up": current_frame % self.sprites_refresh, + "sprites": self.sprites, "scale": self.scale, + "screen": screen} + + cell.terrain_obj.draw(dd) + if cell.item_obj: + cell.item_obj.draw(dd) + if cell.creature_obj: + cell.creature_obj.draw(dd) + + #if grid: + # pygame.draw.rect(screen, self.color, pygame.Rect(dd["x"], dd["y"], dd["w"], dd["h"]), self.bord) @dataclass class Engine: @@ -88,7 +87,7 @@ class Engine: def load_sprites(self, folder_path = sprites_dir): self.sprites = {} files = [f for f in os.listdir(folder_path) if f.lower().endswith('.png')] - + #TOTAL SLOR - REWRITE THIS FUNC PLS groups = {} for f in files: name = os.path.splitext(f)[0] @@ -125,7 +124,7 @@ class Engine: # fill the screen with a color to wipe away anything from last frame self.screen.fill("chartreuse4") - easy_map.draw(self.screen, current_frame + 1) + easy_map.draw_map(self.screen, current_frame + 1) if unlock: keys = pygame.key.get_pressed() diff --git a/eb_objects.py b/eb_objects.py index 31f774c..c1b5de9 100644 --- a/eb_objects.py +++ b/eb_objects.py @@ -1,5 +1,4 @@ -from common import dataclass, field - +from common import dataclass, scale_image @dataclass class Object: @@ -7,7 +6,29 @@ class Object: name: str sprite_name: str sprite_state: int = 0 + sprite_scale: int = 1 + sprite_cache: None = None + def draw(self, draw_data): + if draw_data["spr_up"] == 0: + if self.sprite_state == len(draw_data["sprites"][self.sprite_name]) - 1: + self.sprite_state = 0 + else: + self.sprite_state += 1 + + if self.sprite_cache is None: + self.sprite_cache = draw_data["sprites"][self.sprite_name][self.sprite_state] + + if self.sprite_scale != draw_data["scale"]: + self.sprite_scale = draw_data["scale"] + self.sprite_cache = scale_image(draw_data["sprites"][self.sprite_name][self.sprite_state], draw_data["scale"]) + rect = self.sprite_cache.get_rect(center = (draw_data["x"] + draw_data["w"] /2, draw_data["y"] + draw_data["h"]/ 2)) + else: + rect = self.sprite_cache.get_rect(center = (draw_data["x"] + draw_data["w"] /2, draw_data["y"] + draw_data["h"]/ 2)) + + draw_data["screen"].blit(self.sprite_cache, rect) + + @dataclass class Terrain(Object): pass @@ -15,6 +36,7 @@ class Terrain(Object): @dataclass class Creature(Object): pass + #status #actions #tasks #items diff --git a/main.py b/main.py index 98022d1..0d434a2 100644 --- a/main.py +++ b/main.py @@ -20,11 +20,19 @@ if __name__ == "__main__": # деревня на соседской локации и торговля с ней # перемещение по воде, течение + #техдолг: + #проверить дефолтдикт field и None = None + # проверить у ллм на ошибки - РЕГУЛЯРНАЯ АКТИВНОСТЬ: # - deepcopy + # - общие + main() + + # P.S. to previous commit: #instead of Sprite flow load_sprites function was changed: #gathering the number of sprites with the same names before second _ and hold it at - #sprites dict. also now sprites must be named as objectname_action_number \ No newline at end of file + #sprites dict. also now sprites must be named as objectname_action_number + # + # Main commit - full sprites support, with caching, transparency and smooth scaling + # drawing function moved to Object methods \ No newline at end of file diff --git a/res/items/sword.jfif b/res/items/sword.jfif new file mode 100644 index 0000000..6274ba3 Binary files /dev/null and b/res/items/sword.jfif differ diff --git a/res/maps/map_editor.py b/res/maps/map_editor.py index 4aacca0..0bbf69c 100644 --- a/res/maps/map_editor.py +++ b/res/maps/map_editor.py @@ -5,7 +5,7 @@ width = 10 height = 8 grass_def = {"id": "1", "name": "2", "sprite_name": "grass_small"} -cell_def = {"type": "Ground", "cell": {"terrain_obj": grass_def, "creature_obj": {}, "item_obj": {}}} +cell_def = {"terrain_obj": grass_def, "item_obj": {}, "creature_obj": {}} out = {} diff --git a/res/sprites/grass_small_2.png b/res/sprites/grass_small_2.png deleted file mode 100644 index a29f3f7..0000000 Binary files a/res/sprites/grass_small_2.png and /dev/null differ diff --git a/res/sprites/sword_default_1.png b/res/sprites/sword_default_1.png new file mode 100644 index 0000000..c2129d6 Binary files /dev/null and b/res/sprites/sword_default_1.png differ