Source code for ecs.models

"""Entity, Component, and System classes."""

from __future__ import print_function
from abc import ABCMeta, abstractmethod

[docs]class Entity(object): """Encapsulation of a GUID to use in the entity database.""" def __init__(self, guid): """:param guid: globally unique identifier :type guid: :class:`int` """ self._guid = guid def __str__(self): """Stringify. :return: GUID as a string :rtype: :class:`str` """ return str(self._guid) def __hash__(self): """Hash function for this object. :return: the hash value :rtype: :class:`int` """ return self._guid def __eq__(self, other): """Equality method. :param other: other entity :type other: :class:`Entity` :return: ``True`` if equal :rtype: :class:`bool` """ return self._guid == hash(other)
[docs]class Component(object): """Class from which all components should derive.""" pass
[docs]class System(object): """An object that represents an operation on a set of objects from the game database. The :meth:`update` method must be implemented. """ __metaclass__ = ABCMeta @abstractmethod
[docs] def update(self, dt): """Run the system for this frame. This method is called by the system manager, and is where the functionality of the system is implemented. :param dt: delta time, or elapsed time for this frame :type dt: :class:`float` """ print("System's update() method was called " "with time delta of {}".format(dt))