import golly as g 
import os 
rul = "B2cn3acekq4air5-acn7e/S12k3-jkn4airtw5acjnq6-ce78"
robrul = "255"
rle1 = os.path.join(g.getdir("files"), "12.rle")

oldcells = set()

def getband():
	global oldcells
	
	cells = g.getcells(g.getrect())
	xy = [] 

	for i in range(1, len(cells)):
		x = cells[i - 1]
		y = cells[i]
		
		if not ((x, y) in oldcells):
			xy.append([x, y, 1])

	num_stable = 150
	
	for i in range(num_stable):
		g.run(1)
		
		for j in range(len(xy)):
			x, y, s = xy[j]
			
			if s == 1 and g.getcell(x, y) == 0:
				xy[j][2] = 0
				
	xyres = []
	
	
	for x, y, s in xy:
		if s == 1:
			xyres.append((x, y))
			oldcells.add((x, y))
			
	return xyres

def addband(idx, rle2):
	xy = getband()
	g.save(rle1, "rle")
	g.open(rle2)
	g.fit()
	g.show(str(idx))
	g.update()
	for x, y in xy:
		g.setcell(x, y, idx)
	
	g.save(rle2, "rle")
	g.open(rle1)


def raber_generate(iter):
	global oldcells
	
	oldcells = set()

	g.new("")
	g.setrule(rul)
	g.select([-5, -5, 11, 11])
	#g.randfill(50)
	#g.select([200, -5, 11, 11])
	g.randfill(50)
	g.run(300)
	
	g.save(rle1, "rle")

	rle2 = os.path.join(g.getdir("files"), 'Cicles1/single/{0}.rle'.format(iter))

	g.new("")
	g.setrule("255")
	g.save(rle2, "rle")
	g.open(rle1)

	idx = 1
	for i in range(20):
		addband(idx, rle2)
		idx = (idx + 1) % 256

for i in range(100):
	rle2 = os.path.join(g.getdir("files"), 'Cicles1/single/{0}.rle'.format(i))
	
	try:
		g.open(rle2)
		
		rect = g.getrect()
		
		if rect[2] < 300:
			raber_generate(i)
	except:
		raber_generate(i)