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 |
|