# Path: strips/operators.py
# class Action(Operator): 
#     cost = 1 # TODO: cost function


from strips.operators import Action
from itertools import combinations

class LoadBrush(Action):
    actionName = 'LoadBrush'
    def __init__(self, args):
        Action.__init__(self, args)
        (brush, paintCan, color) = self.args
        self.preconditions = [('clean', brush), ('clear', paintCan), ('paintsColor', paintCan, color), ('holding', brush)]
        self.positiveEffects = [('paintsColor', brush, color)]
        self.negativeEffects = [('clean', brush)]

class WashBrush(Action):
    actionName = 'WashBrush'
    def __init__(self, args):
        Action.__init__(self, args)
        (brush, waterBucket, color) = self.args
        self.preconditions = [('clear', waterBucket), ('holding', brush), ('paintsColor', brush, color)]
        self.positiveEffects = [('clean', brush)]
        self.negativeEffects = [('paintsColor', brush, color)]

def blocks_paint_1():
    print('Paint Blocks 1')
    BLOCKS = ['blockA']
    SPRAYERS = []
    BRUSHES = ['brush']
    PAINTCANS = ['redPaintCan']
    WATERBUCKETS = []
    COLORS = ['red']
    OBJECTS = BLOCKS + SPRAYERS + BRUSHES + PAINTCANS + WATERBUCKETS

    BLOCKACTIONS = [PickUp(args) for args in combinations([OBJECTS])] +\

# Path: strips/operators.py
# class Action(Operator): 
#     cost = 1 # TODO: cost function


# Path: strips/domains/retired/painting.py
from strips.operators import Action
from itertools import combinations


class LoadBrush(Action):
    actionName = 'LoadBrush'
    def __init__(self, args):
        Action.__init__(self, args)
        (brush, paintCan, color) = self.args
        self.preconditions = [('clean', brush), ('clear', paintCan), ('paintsColor', paintCan, color), ('holding', brush)]
        self.positiveEffects = [('paintsColor', brush, color)]
        self.negativeEffects = [('clean', brush)]

class WashBrush(Action):
    actionName = 'WashBrush'
    def __init__(self, args):
        Action.__init__(self, args)
        (brush, waterBucket, color) = self.args
        self.preconditions = [('clear', waterBucket), ('holding', brush), ('paintsColor', brush, color)]
        self.positiveEffects = [('clean', brush)]
        self.negativeEffects = [('paintsColor', brush, color)]

def blocks_paint_1():
    print('Paint Blocks 1')
    BLOCKS = ['blockA']
    SPRAYERS = []
    BRUSHES = ['brush']
    PAINTCANS = ['redPaintCan']
    WATERBUCKETS = []
    COLORS = ['red']
    OBJECTS = BLOCKS + SPRAYERS + BRUSHES + PAINTCANS + WATERBUCKETS

    BLOCKACTIONS = [PickUp(args) for args in combinations([OBJECTS])] +\

                    [PutDown(args) for args in combinations([OBJECTS])] +\