evennia/docs/latest/api/evennia.contrib.base_systems.components.component.html
Evennia docbuilder action e90ea409c5 Updated HTML docs.
2024-06-14 09:45:42 +00:00

333 lines
No EOL
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.contrib.base_systems.components.component &#8212; Evennia latest documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.contrib.base_systems.components.dbfield" href="evennia.contrib.base_systems.components.dbfield.html" />
<link rel="prev" title="evennia.contrib.base_systems.components" href="evennia.contrib.base_systems.components.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.dbfield.html" title="evennia.contrib.base_systems.components.dbfield"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.html" title="evennia.contrib.base_systems.components"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia latest</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.components.html" accesskey="U">evennia.contrib.base_systems.components</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.components.component</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.components.html"
title="previous chapter">evennia.contrib.base_systems.components</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.components.dbfield.html"
title="next chapter">evennia.contrib.base_systems.components.dbfield</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.contrib.base_systems.components.component.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li><a href="evennia.contrib.base_systems.components.component.html">latest (main branch)</a></li>
<li><a href="../4.x/index.html">v4.0.0 branch (outdated)</a></li>
<li><a href="../3.x/index.html">v3.0.0 branch (outdated)</a></li>
<li><a href="../2.x/index.html">v2.0.0 branch (outdated)</a></li>
<li><a href="../1.x/index.html">v1.0.0 branch (outdated)</a></li>
<li><a href="../0.x/index.html">v0.9.5 branch (outdated)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.contrib.base_systems.components.component">
<span id="evennia-contrib-base-systems-components-component"></span><h1>evennia.contrib.base_systems.components.component<a class="headerlink" href="#module-evennia.contrib.base_systems.components.component" title="Permalink to this headline"></a></h1>
<p>Components - ChrisLR 2022</p>
<p>This file contains the base class to inherit for creating new components.</p>
<dl class="py class">
<dt id="evennia.contrib.base_systems.components.component.BaseComponent">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.component.</code><code class="sig-name descname">BaseComponent</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">parents</span></em>, <em class="sig-param"><span class="n">attrs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#BaseComponent"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.BaseComponent" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">type</span></code></p>
<p>This is the metaclass for components,
responsible for registering components to the listing.</p>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.components.component.Component">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.component.</code><code class="sig-name descname">Component</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This is the base class for components.
Any component must inherit from this class to be considered for usage.</p>
<p>Each Component must supply the name, it is used as a slot name but also part of the attribute key.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.components.component.Component.name">
<code class="sig-name descname">name</code><em class="property"> = ''</em><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.components.component.Component.slot">
<code class="sig-name descname">slot</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.slot" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.components.component.Component.host">
<code class="sig-name descname">host</code><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.host" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.default_create">
<em class="property">classmethod </em><code class="sig-name descname">default_create</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.default_create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.default_create" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>This is called when the host is created</dt><dd><p>and should return the base initialized state of a component.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>host</strong> (<em>object</em>) The host typeclass instance</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>Component</em> The created instance of the component</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.create">
<em class="property">classmethod </em><code class="sig-name descname">create</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.create" title="Permalink to this definition"></a></dt>
<dd><p>This is the method to call when supplying kwargs to initialize a component.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>object</em>) The host typeclass instance</p></li>
<li><p><strong>**kwargs</strong> Key-Value of default values to replace.
To persist the value, the key must correspond to a DBField.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>Component</em> The created instance of the component</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.cleanup">
<code class="sig-name descname">cleanup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.cleanup" title="Permalink to this definition"></a></dt>
<dd><p>This deletes all component attributes from the hosts db</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.load">
<em class="property">classmethod </em><code class="sig-name descname">load</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.load" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Loads a component instance</dt><dd><p>This is called whenever a component is loaded (ex: Server Restart)</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>host</strong> (<em>object</em>) The host typeclass instance</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>Component</em> The loaded instance of the component</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.at_added">
<code class="sig-name descname">at_added</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.at_added"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.at_added" title="Permalink to this definition"></a></dt>
<dd><p>This is the method called when a component is registered on a host.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>host</strong> (<em>object</em>) The host typeclass instance</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.at_removed">
<code class="sig-name descname">at_removed</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.at_removed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.at_removed" title="Permalink to this definition"></a></dt>
<dd><p>This is the method called when a component is removed from a host.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>host</strong> (<em>object</em>) The host typeclass instance</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.attributes">
<em class="property">property </em><code class="sig-name descname">attributes</code><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.attributes" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut property returning the hosts AttributeHandler.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>AttributeHandler</em> The Hosts AttributeHandler</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.pk">
<em class="property">property </em><code class="sig-name descname">pk</code><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.pk" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut property returning the hosts primary key.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>int</em> The Hosts primary key.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This is requried to allow AttributeProperties to correctly update <strong>_SaverMutable</strong> data
(like lists) in-place (since the DBField sits on the Component which doesnt itself
have a primary key, this save operation would otherwise fail).</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.nattributes">
<em class="property">property </em><code class="sig-name descname">nattributes</code><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.nattributes" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut property returning the hosts In-Memory AttributeHandler (Non Persisted).</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>AttributeHandler</em> The Hosts In-Memory AttributeHandler</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.add_field">
<em class="property">classmethod </em><code class="sig-name descname">add_field</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">field</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.add_field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.add_field" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.get_fields">
<em class="property">classmethod </em><code class="sig-name descname">get_fields</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.get_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.get_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.component.Component.get_component_slot">
<em class="property">classmethod </em><code class="sig-name descname">get_component_slot</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/component.html#Component.get_component_slot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.component.Component.get_component_slot" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.dbfield.html" title="evennia.contrib.base_systems.components.dbfield"
>next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.html" title="evennia.contrib.base_systems.components"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia latest</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.components.html" >evennia.contrib.base_systems.components</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.components.component</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>