Esempio n. 1
0
class AttributeResolver(Resolver):
    """
    Resolves an Attribute under a particular context, outputting a text
    description of where each modifier comes from.

    >>> attack = Attribute( "Attack Bonus", -4 )
    >>> attResolver = AttributeResolver( 5 )
    >>> print attResolver.resolve( attack, '\\n'.join )
    Attack Bonus                                                            :     -4
      Base                                                                  :     -4
    """
    def __init__(self, context, cap=1, identity=0, filterfunction=None):
        super(AttributeResolver,
              self).__init__(context,
                             (lambda self, target: target.function(self)), cap,
                             identity, filterfunction)
        self.intResolver = IntResolver(context, cap, identity, filterfunction)

    def resolveBase(self, target, condense, level, name=None):
        fmt = "%-72s:  %s% 4s"
        if IResolveable.providedBy(target.function):
            subvalue = [self.resolve(target.function, condense, level + 1)]
        else:
            subvalue = []
        if IModifier.providedBy(target):
            subvalue = subvalue + [
                self.resolve(IModifier(target).parent, condense, level + 1)
            ]
        value = self.evaluate(target)
        name = name or target.name
        base = [
            fmt % ("  " * level + name, {
                True: "+",
                False: " "
            }[value > -1], value)
        ]
        return condense(base + subvalue)

    resolveModifier = resolveBase

    def resolveTotal(self, target, condense, level, name=None):
        fmt = "%-72s:  %s% 4s"
        value = self.intResolver.resolve(target, sum)
        name = name or target.name
        base = fmt % ("  " * level + name, {
            True: "+",
            False: " "
        }[value > -1], value)
        return base

    def getRequiredResults(self, results):
        return results
Esempio n. 2
0
class AttributeResolver( Resolver ):
    """
    Resolves an Attribute under a particular context, outputting a text
    description of where each modifier comes from.

    >>> attack = Attribute( "Attack Bonus", -4 )
    >>> attResolver = AttributeResolver( 5 )
    >>> print attResolver.resolve( attack, '\\n'.join )
    Attack Bonus                                                            :     -4
      Base                                                                  :     -4
    """

    def __init__( self, context, cap=1, identity=0, filterfunction=None ):
        super( AttributeResolver, self ).__init__( context, (lambda self, target: target.function(self)), cap, identity, filterfunction )
        self.intResolver=IntResolver( context, cap, identity, filterfunction )

    def resolveBase( self, target, condense, level, name=None ):
        fmt="%-72s:  %s% 4s"
        if IResolveable.providedBy(target.function):
            subvalue=[self.resolve(target.function, condense, level+1)]
        else:
            subvalue=[]
        if IModifier.providedBy(target):
            subvalue = subvalue + [self.resolve(IModifier(target).parent, condense, level + 1)]
        value=self.evaluate(target)
        name=name or target.name
        base=[fmt % ("  " * level + name, {True: "+", False: " "}[value > -1], value)]
        return condense(base+subvalue)
    resolveModifier=resolveBase

    def resolveTotal( self, target, condense, level, name=None ):
        fmt="%-72s:  %s% 4s"
        value=self.intResolver.resolve(target, sum)
        name=name or target.name
        base=fmt % ("  " * level + name, {True: "+", False: " "}[value > -1], value)
        return base

    def getRequiredResults( self, results ):
        return results
Esempio n. 3
0
 def __init__( self, context, cap=1, identity=0, filterfunction=None ):
     super( AttributeResolver, self ).__init__( context, (lambda self, target: target.function(self)), cap, identity, filterfunction )
     self.intResolver=IntResolver( context, cap, identity, filterfunction )
Esempio n. 4
0
 def __init__(self, context, cap=1, identity=0, filterfunction=None):
     super(AttributeResolver,
           self).__init__(context,
                          (lambda self, target: target.function(self)), cap,
                          identity, filterfunction)
     self.intResolver = IntResolver(context, cap, identity, filterfunction)