<spanid="evennia-contrib-grid-xyzgrid-xyzgrid"></span><h1>evennia.contrib.grid.xyzgrid.xyzgrid<aclass="headerlink"href="#module-evennia.contrib.grid.xyzgrid.xyzgrid"title="Permalink to this headline">¶</a></h1>
<p>The grid</p>
<p>This represents the full XYZ grid, which consists of</p>
<ulclass="simple">
<li><p>2D <strong>Map</strong>-objects parsed from Map strings and Map-legend components. Each represents one
Z-coordinate or location.</p></li>
<li><p><strong>Prototypes</strong> for how to build each XYZ component into ‘real’ rooms and exits.</p></li>
<li><p>Actual in-game rooms and exits, mapped to the game based on Map data.</p></li>
</ul>
<p>The grid has three main functions:
- Building new rooms/exits from scratch based on one or more Maps.
- Updating the rooms/exits tied to an existing Map when the Map string</p>
<blockquote>
<div><p>of that map changes.</p>
</div></blockquote>
<ulclass="simple">
<li><p>Fascilitate communication between the in-game entities and their Map.</p></li>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.grid.xyzgrid.xyzgrid.</code><codeclass="sig-name descname">XYZGrid</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>What we store persistently is data used to create each map (the legends, names etc)</p>
<emclass="property">property </em><codeclass="sig-name descname">grid</code><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.grid"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_map</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">zcoord</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.get_map"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.get_map"title="Permalink to this definition">¶</a></dt>
<dd><p>Get a specific xymap.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>zcoord</strong> (<em>str</em>) – The name/zcoord of the xymap.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>XYMap</em>– Or None if no map was found.</p>
<codeclass="sig-name descname">all_maps</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.all_maps"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.all_maps"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all xymaps stored in the grid.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>list</em>– All initialized xymaps stored with this grid.</p>
<codeclass="sig-name descname">log</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">msg</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.log"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.log"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_room</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">xyz</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.get_room"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.get_room"title="Permalink to this definition">¶</a></dt>
<dd><p>Get one or more room objects from XYZ coordinate.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>xyz</strong> (<em>tuple</em>) – X,Y,Z coordinate of room to fetch. ‘*’ acts</p></li>
<ddclass="field-even"><p><em>Queryset</em>– A queryset of XYZRoom(s) found.</p>
</dd>
<dtclass="field-odd">Raises</dt>
<ddclass="field-odd"><p><aclass="reference internal"href="evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom.DoesNotExist"title="evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom.DoesNotExist"><strong>XYZRoom.DoesNotExist</strong></a>– If room is not found.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This assumes the room was previously built.</p>
<codeclass="sig-name descname">get_exit</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">xyz</span></em>, <emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">'north'</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.get_exit"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.get_exit"title="Permalink to this definition">¶</a></dt>
<dd><p>Get one or more exit object at coordinate.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>xyz</strong> (<em>tuple</em>) – X,Y,Z coordinate of the room the
exit leads out of. ‘*’ acts as a wildcard.</p></li>
<li><p><strong>name</strong> (<em>str</em>) – The full name of the exit, e.g. ‘north’ or ‘northwest’.
The ‘*’ acts as a wild card.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>Queryset</em>– A queryset of XYZExit(s) found.</p>
<codeclass="sig-name descname">maps_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module_path</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.maps_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.maps_from_module"title="Permalink to this definition">¶</a></dt>
<dd><p>Load map data from module. The loader will look for a dict XYMAP_DATA or a list of
XYMAP_DATA_LIST (a list of XYMAP_DATA dicts). Each XYMAP_DATA dict should contain
<codeclass="sig-name descname">reload</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.reload"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.reload"title="Permalink to this definition">¶</a></dt>
<dd><p>Reload and rebuild the grid. This is done on a server reload.</p>
<codeclass="sig-name descname">add_maps</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">mapdatas</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.add_maps"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.add_maps"title="Permalink to this definition">¶</a></dt>
<dd><p>Add map or maps to the grid.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>*mapdatas</strong> (<em>dict</em>) – Each argument is a dict structure
<codeclass="sig-name descname">remove_map</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">zcoords</span></em>, <emclass="sig-param"><spanclass="n">remove_objects</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.remove_map"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.remove_map"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove an XYmap from the grid.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>*zoords</strong> (<em>str</em>) – The zcoords/XYmaps to remove.</p></li>
<li><p><strong>remove_objects</strong> (<em>bool</em><em>, </em><em>optional</em>) – If the synced database objects (rooms/exits) should
<codeclass="sig-name descname">delete</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.delete"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.delete"title="Permalink to this definition">¶</a></dt>
<dd><p>Clear the entire grid, including database entities, then the grid too.</p>
<codeclass="sig-name descname">spawn</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">xyz</span><spanclass="o">=</span><spanclass="default_value">'*', '*', '*'</span></em>, <emclass="sig-param"><spanclass="n">directions</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#XYZGrid.spawn"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.spawn"title="Permalink to this definition">¶</a></dt>
<dd><p>Create/recreate/update the in-game grid based on the stored Maps or for a specific Map
or coordinate.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>xyz</strong> (<em>tuple</em><em>, </em><em>optional</em>) – An (X,Y,Z) coordinate, where Z is the name of the map. <strong>‘*’</strong>
acts as a wildcard.</p></li>
<li><p><strong>directions</strong> (<em>list</em><em>, </em><em>optional</em>) – A list of cardinal directions (‘n’, ‘ne’ etc).
Spawn exits only the given direction. If unset, all needed directions are spawned.</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Examples</p>
<ulclass="simple">
<li><p><strong>xyz=(‘*’, ‘*’, ‘*’)</strong> (default) - spawn/update all maps.</p></li>
<li><p><strong>xyz=(1, 3, ‘foo’)</strong> - sync a specific element of map ‘foo’ only.</p></li>
<li><p><ahref="#id1"><spanclass="problematic"id="id2">**</span></a>xyz=(‘*’, ‘*’, ‘foo’) - sync all elements of map ‘foo’</p></li>
<li><p><ahref="#id3"><spanclass="problematic"id="id4">**</span></a>xyz=(1, 3, ‘*’) - sync all (1,3) coordinates on all maps (rarely useful)</p></li>
<li><dlclass="simple">
<dt><strong>xyz=(1, 3, ‘foo’)</strong>, <strong>direction=’ne’</strong> - sync only the north-eastern exit</dt><dd><p>out of the specific node on map ‘foo’.</p>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid'</em><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'XYZGrid'</em><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.typename"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.contrib.grid.xyzgrid.xyzgrid.</code><codeclass="sig-name descname">get_xyzgrid</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">print_errors</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/grid/xyzgrid/xyzgrid.html#get_xyzgrid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.grid.xyzgrid.xyzgrid.get_xyzgrid"title="Permalink to this definition">¶</a></dt>
<dd><p>Helper for getting the grid. This will create the XYZGrid global script if it didn’t
previously exist.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>print_errors</strong> (<em>bool</em><em>, </em><em>optional</em>) – Print errors directly to console rather than to log.</p>