Exemplo n.º 1
0
	def __init__(self):
		super(GameServer, self).__init__()
		self.tcp_server = None
		self.sequence = 0
		self.players = []
		self.teams = [ 
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] }
		]
		self.loop = loop
		self.tcp_server = TcpServer("0.0.0.0", 18888)
		self.tcp_server.on('connect', self.on_connect)
Exemplo n.º 2
0
class GameServer(object):
	"""docstring for GameServer"""
	def __init__(self):
		super(GameServer, self).__init__()
		self.tcp_server = None
		self.sequence = 0
		self.players = []
		self.teams = [ 
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] },
			{ 'w':0, "p":[] }
		]
		self.loop = loop
		self.tcp_server = TcpServer("0.0.0.0", 18888)
		self.tcp_server.on('connect', self.on_connect)
	
	def run(self):
		self.loop.run()

	def on_connect(self, connection):
		GameClient(self, connection)

	def getStats(self):
		r = []
		for t in self.teams:
			r.append(t['w'])
		return r
	
	def register(self, client):
		for i in self.teams:
			if len(i['p']) == 0:
				self.sequence += 1
				self.players.append(client)
				i['p'].append(client)
				client.number = self.sequence
				client.teamid = self.teams.index(i)
				break # ok? please?
	
	def unregister(self, client):
		self.teams[client.teamid]['p'].remove(client)
		self.players.remove(client)
		for p in self.players:
			p.removeOpponent(client)

	def getLevel(self, client):
		f = open(path.join(config.LEVELS_DIR, '0001.l'))
		return f.read()
	
	# we'd like to know about other
	def updatePosClient(self, client):
		for c in self.players:
			if client.number == c.number:
				continue
			client.updateOpponent(c)
	
	# other would like to know about us
	def updateClientPos(self, client):
		for c in self.players:
			if client.number == c.number:
				continue
			c.updateOpponent(client)
	
	def updateFire(self, client):
		for c in self.players:
			if client.number == c.number:
				continue
			c.updateOpponentFire(client)
			
	def updateHit(self, who, by):
		self.teams[by]['w'] += 1
		for c in self.players:
			c.anyHit(who, by)