view gamelib/game_base.py @ 49:373c57ab4140

Product -> Schematic.
author Jeremy Thurgood <firxen@gmail.com>
date Mon, 07 May 2012 21:24:23 +0200
parents 3e3bed2ce248
children 52913ba12988
line wrap: on
line source



def get_subclasses(base_class, leaf_only=True):
    subclasses = []
    for cls in base_class.__subclasses__():
        if leaf_only and cls.__subclasses__():
            # Not a leaf class, and only want leaves
            continue
        subclasses.append(cls)
    return subclasses


class Science(object):
    NAME = None
    PREREQUISITES = ()
    ACQUISITION_CHANCE = 1.0
    SCIENCE_TYPE = None

    def __init__(self, points=0):
        self.points = points

    def spend_point(self):
        self.points += 1

    def can_spend(self, lab):
        return True

    @classmethod
    def save_name(cls):
        return "%s.%s" % (cls.SCIENCE_TYPE, cls.__name__)

    def save_data(self):
        return (self.save_name(), self.points)