class SheepConfettiAnimation(SheepAnimation):
    def __init__(self, sheep, leds_percent_per_cycle):
        SheepAnimation.__init__(self, sheep)
        self.effect = ConfettiEffect(self.sheep.get_all_indexes(), leds_percent_per_cycle)
    
    def apply(self, time_percent):
        self.effect.apply(time_percent, self.sheep.get_array())
class SignsConfettiAnimation():
    def __init__(self, signs, leds_percent_per_cycle):
        self.signs = signs
        self.effect = ConfettiEffect(self.signs.get_all_indexes(),
                                     leds_percent_per_cycle * 2)

    def apply(self, time_percent):
        self.effect.apply(time_percent, self.signs.get_array())
class ConfettiFlowerAnimation():
    def __init__(self, flower, leds_percent_per_cycle):
        self.flower = flower
        self.effect = ConfettiEffect(self.flower.get_leaves(),
                                     leds_percent_per_cycle * 2)

    def apply(self, time_percent):
        self.effect.apply(time_percent, self.flower.get_array())
class ConfettiTreeAnimation(TreeAnimation):
    def __init__(self, tree, props):
        TreeAnimation.__init__(self, tree, props)

        leds_percent_per_beat = 0.4
        brightness = 1.0
        if self.props != None:
            if 'leds_percent_per_beat' in self.props:
                leds_percent_per_beat = self.props['leds_percent_per_beat']
            if 'brightness' in self.props:
                brightness = self.props['brightness']

        self.effect = ConfettiEffect(self.tree.get_all_indexes(), leds_percent_per_beat, brightness)

    def apply(self, time_percent):
        self.effect.apply(time_percent, self.tree.get_array())