model.py
author Eugen Sawin <sawine@me73.com>
Tue, 15 Jun 2010 14:58:05 +0200
changeset 5 5ab3cc2e7851
child 6 9147c845cecb
permissions -rw-r--r--
Added debugging view. Packet loss suspected.
     1 import algorithm
     2 
     3 models = {}
     4 
     5 def createModel(name):
     6 	models[name] = Model(name)
     7 
     8 def addModel(model):
     9 	models[model.name] = model
    10 
    11 def deleteModel(name):
    12 	if name in models:
    13 		del models[name]
    14 		return True
    15 	return False
    16 
    17 # event = (type,value)	
    18 eventTypes = ("view", "model", "server")
    19 
    20 class Model(object):
    21 	def __init__(self, name):
    22 		self.name = name
    23 		self.cells = {}
    24 		self.observers = {}		
    25 		for t in eventTypes:
    26 			self.observers[t] = []
    27 		self.resolution = (0,0)	
    28 		self.range = (complex(0,0), complex(0,0))
    29 	def dispatch(self, event):
    30 		for o in self.observers:
    31 			o[0].sendto("%s" % (event), o[1])
    32 	def register(self, socket, observer, eventType):
    33 		self.observers[eventType].append((socket, observer))
    34 	def setResolution(self, x, y):
    35 		self.resolution = (x,y)
    36 	def setRange(self, begin, end):
    37 		self.range = (begin, end)
    38 	def update(self, max_iter):
    39 		m = algorithm.Mandelbrot(self.range, self.resolution)
    40 		self.cells = m.resolve(max_iter)
    41 		
    42