From f6e66214632ab0cf44fc03717af6308a792beabd Mon Sep 17 00:00:00 2001 From: henddher Date: Sun, 9 Oct 2022 22:34:28 -0500 Subject: [PATCH] Replace NodeTypeclass (XYZRoom) with specified Typeclass in prototype. --- evennia/contrib/grid/xyzgrid/tests.py | 13 +++++++++---- evennia/contrib/grid/xyzgrid/xymap_legend.py | 16 ++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/evennia/contrib/grid/xyzgrid/tests.py b/evennia/contrib/grid/xyzgrid/tests.py index ee31e5d161..8d7f74ab0c 100644 --- a/evennia/contrib/grid/xyzgrid/tests.py +++ b/evennia/contrib/grid/xyzgrid/tests.py @@ -3,6 +3,8 @@ Tests for the XYZgrid system. """ +from unittest import mock +from unittest.mock import patch from random import randint from parameterized import parameterized @@ -1419,11 +1421,11 @@ class TestBuildExampleGrid(BaseEvenniaTest): class TestXyzRoom(xyzroom.XYZRoom): def at_object_creation(self): - breakpoint() + pass class TestXyzExit(xyzroom.XYZExit): def at_object_creation(self): - breakpoint() + pass MAP_DATA = { "map": """ @@ -1469,8 +1471,8 @@ class TestCallbacks(BaseEvenniaTest): # XYZROOM_PROTOTYPE_OVERRIDE={ # "typeclass": "evennia.contrib.grid.xyzgrid.tests.TestXyzRoom", # }) - # def setUp(self): - # super().setUp() + def setUp(self): + super().setUp() # self.setup_grid(MAP_DATA) def setup_grid(self, map_data): @@ -1493,6 +1495,7 @@ class TestCallbacks(BaseEvenniaTest): self.grid.add_maps(map_data) def tearDown(self): + super().tearDown() self.grid.delete() # @override_settings( @@ -1502,6 +1505,8 @@ class TestCallbacks(BaseEvenniaTest): # XYZROOM_PROTOTYPE_OVERRIDE={ # "typeclass": "evennia.contrib.grid.xyzgrid.tests.TestXyzRoom", # }) + # @patch('evennia.contrib.grid.xyzgrid.tests.TestXyzRoom') + # def test_dummy(self, MockTestXyzRoom): def test_dummy(self): map_data = dict(MAP_DATA) for prototype_key, prototype_value in map_data["prototypes"].items(): diff --git a/evennia/contrib/grid/xyzgrid/xymap_legend.py b/evennia/contrib/grid/xyzgrid/xymap_legend.py index 4dfd05a72a..157ec321a0 100644 --- a/evennia/contrib/grid/xyzgrid/xymap_legend.py +++ b/evennia/contrib/grid/xyzgrid/xymap_legend.py @@ -22,6 +22,7 @@ from collections import defaultdict from django.core import exceptions as django_exceptions from evennia.prototypes import spawner +from evennia.utils.utils import class_from_module from .utils import MAPSCAN, REVERSE_DIRECTIONS, MapParserError, BIGVAL @@ -302,7 +303,6 @@ class MapNode: to their destinations. """ - # breakpoint() global NodeTypeclass if not NodeTypeclass: from .xyzroom import XYZRoom as NodeTypeclass @@ -317,13 +317,13 @@ class MapNode: try: nodeobj = NodeTypeclass.objects.get_xyz(xyz=xyz) except django_exceptions.ObjectDoesNotExist: - # create a new entity with proper coordinates etc - tclass = self.prototype["typeclass"] - tclass = ( - f" ({tclass})" if tclass != "evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom" else "" - ) - self.log(f" spawning room at xyz={xyz}{tclass}") - nodeobj, err = NodeTypeclass.create(self.prototype.get("key", "An empty room"), xyz=xyz) + # create a new entity, using the specified typeclass (if there's one) and + # with proper coordinates etc + typeclass = self.prototype.get("typeclass", "") + self.log(f" spawning room at xyz={xyz} ({typeclass})") + Typeclass = class_from_module(typeclass, + fallback="evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom") + nodeobj, err = Typeclass.create(self.prototype.get("key", "An empty room"), xyz=xyz) if err: raise RuntimeError(err) else: