grid.py
author Eugen Sawin <sawine@me73.com>
Thu, 30 Dec 2010 15:19:36 +0100
changeset 5 dd036093fc09
permissions -rwxr-xr-x
More efficient grid iteration.
sawine@0
     1
grids = {}
sawine@0
     2
sawine@0
     3
def createGrid(name):
sawine@0
     4
	grids[name] = Grid(name)
sawine@0
     5
sawine@0
     6
class Cell(object):
sawine@0
     7
sawine@0
     8
	def __init__(self, id, value):
sawine@0
     9
		self.id = id
sawine@0
    10
		self.value = value
sawine@0
    11
sawine@0
    12
	def __str__(self):
sawine@0
    13
		return "(id:%s value:%s)" % (self.id, self.value)
sawine@0
    14
		
sawine@0
    15
class Grid(object):
sawine@0
    16
sawine@0
    17
	def __init__(self, name):
sawine@0
    18
		self.name = name
sawine@0
    19
		self.cells = {}
sawine@0
    20
		self.observers = []
sawine@0
    21
			
sawine@0
    22
	def set(self, cellId, value):		
sawine@0
    23
		if value and cellId not in self.cells:	
sawine@0
    24
			self.cells[cellId] = Cell(cellId, value)
sawine@0
    25
			self.dispatch(Cell(cellId, 0), self.cells[cellId])
sawine@0
    26
		elif not value and cellId in self.cells:
sawine@0
    27
			self.dispatch(self.cells[cellId], Cell(cellId, 0))
sawine@0
    28
			del self.cells[cellId]			
sawine@0
    29
	
sawine@0
    30
	def dispatch(self, old, new):
sawine@0
    31
		for o in self.observers:
sawine@0
    32
			o[0].sendto("old: %s\nnew: %s\n" % (old, new), o[1])
sawine@0
    33
sawine@0
    34
	def addObserver(self, socket, observer):
sawine@0
    35
		self.observers.append((socket, observer))
sawine@0
    36
		
sawine@0
    37