;Animating Patches

WIDTH = 150
HEIGHT = 150
PAUSE = 0

%%

INIT = {32,32,32}
COLOR1 = {128,0,0}
COLOR2 = {128,128,0}
COLOR3 = {128,0,128}
COLOR4 = {0,128,0}
ERASER = {32,32,32}
ERASER2 = {32,32,32}


%%

DISCRETE IMAGE
DISCRETE SIMULATOR

%%

;Get initial color into image
IMAGE:INIT + SIMULATOR:COLOR1 -> COLOR1
IMAGE:INIT + SIMULATOR:COLOR2 -> COLOR2
IMAGE:INIT + SIMULATOR:COLOR3 -> COLOR3
IMAGE:INIT + SIMULATOR:COLOR4 -> COLOR4

;If the SIMULATOR color changes, change the IMAGE color
IMAGE:COLOR1 + SIMULATOR:COLOR2 -> COLOR2
IMAGE:COLOR1 + SIMULATOR:COLOR3 -> COLOR3
IMAGE:COLOR1 + SIMULATOR:COLOR4 -> COLOR4

IMAGE:COLOR2 + SIMULATOR:COLOR1 -> COLOR1
IMAGE:COLOR2 + SIMULATOR:COLOR3 -> COLOR3
IMAGE:COLOR2 + SIMULATOR:COLOR4 -> COLOR4

IMAGE:COLOR3 + SIMULATOR:COLOR2 -> COLOR2
IMAGE:COLOR3 + SIMULATOR:COLOR1 -> COLOR1
IMAGE:COLOR3 + SIMULATOR:COLOR4 -> COLOR4

IMAGE:COLOR4 + SIMULATOR:COLOR2 -> COLOR2
IMAGE:COLOR4 + SIMULATOR:COLOR3 -> COLOR3
IMAGE:COLOR4 + SIMULATOR:COLOR1 -> COLOR1

;Randomly drop seeds in initialized SIMULATOR field
SIMULATOR:INIT -> COLOR1*0.000001
SIMULATOR:INIT -> COLOR2*0.000001
SIMULATOR:INIT -> COLOR3*0.000001
SIMULATOR:INIT -> COLOR4*0.000001

;Colors spread probabilistically
SIMULATOR:INIT + 1COLOR1+ -> COLOR1*0.1
SIMULATOR:INIT + 1COLOR2+ -> COLOR2*0.1
SIMULATOR:INIT + 1COLOR3+ -> COLOR3*0.1
SIMULATOR:INIT + 1COLOR4+ -> COLOR4*0.1

SIMULATOR:INIT + 4COLOR1+ -> COLOR1
SIMULATOR:INIT + 4COLOR2+ -> COLOR2
SIMULATOR:INIT + 4COLOR3+ -> COLOR3
SIMULATOR:INIT + 4COLOR4+ -> COLOR4

;Randomly spawn eraser seeds
SIMULATOR:COLOR1 + 8COLOR1+ -> ERASER*0.0001
SIMULATOR:COLOR2 + 8COLOR2+ -> ERASER*0.0001
SIMULATOR:COLOR3 + 8COLOR3+ -> ERASER*0.0001
SIMULATOR:COLOR4 + 8COLOR4+ -> ERASER*0.0001

;Eraser spreads
SIMULATOR:ERASER -> ERASER2
SIMULATOR:ERASER2 -> INIT

;Erase colors
SIMULATOR:COLOR1 + 1ERASER+ -> ERASER*0.75
SIMULATOR:COLOR2 + 1ERASER+ -> ERASER*0.75
SIMULATOR:COLOR3 + 1ERASER+ -> ERASER*0.75
SIMULATOR:COLOR4 + 1ERASER+ -> ERASER*0.75


