Mercurial > parpg-source
view grease/__init__.py @ 12:9c7a96c6fe41
Refactored components and began defining basic Entities and Systems.
* Moved the components from parpg.objects.components into their own top-level package, components, and separated them into individual modules.
* Added a few new components, including Behavior, Container and Containable.
* Created the systems top-level package for defining Grease Systems and added stub classes for the ScriptingSystem and GameRulesSystem.
* Created the entities top-level package for defining Grease Entities and added an incomplete definition of the Character entity type.
author | M. George Hansen <technopolitica@gmail.com> |
---|---|
date | Wed, 27 Jul 2011 12:16:30 -1000 |
parents | 710f299ed275 |
children |
line wrap: on
line source
############################################################################# # # Copyright (c) 2010 by Casey Duncan and contributors # All Rights Reserved. # # This software is subject to the provisions of the MIT License # A copy of the license should accompany this distribution. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # ############################################################################# __versioninfo__ = (0, 3, 0) __version__ = '.'.join(str(n) for n in __versioninfo__) __all__ = ('BaseWorld', 'Entity', 'System', 'Renderer') import component import geometry import collision from entity import Entity from world import BaseWorld import abc class System(object): """Grease system abstract base class. Systems define behaviorial aspects of a |World|. All systems must define a :meth:`step` method that is invoked by the world each timestep. User-defined systems are not required to subclass this class. See :ref:`an example system from the tutorial <tut-system-example>`. """ __metaclass__ = abc.ABCMeta world = None """The |World| this system belongs to""" def set_world(self, world): """Bind the system to a world""" self.world = world @abc.abstractmethod def step(self, dt): """Execute a time step for the system. Must be defined by all system classes. :param dt: Time since last step invocation :type dt: float """ class Renderer(object): """Grease renderer abstract base class. Renderers define the presentation of a |World|. All renderers must define a :meth:`draw` method that is invoked by the world when the display needs to be redrawn. User-defined renderers are not required to subclass this class. See :ref:`an example renderer from the tutorial <tut-renderer-example>`. """ __metaclass__ = abc.ABCMeta world = None """The |World| this renderer belongs to""" def set_world(self, world): """Bind the system to a world""" self.world = world @abc.abstractmethod def draw(self): """Issue drawing commands for this renderer. Must be defined for all renderer classes. """