class Game(object):
	conn = None
	view = None
	ais = []
	map = None
	gameOver = False
	
	#Initialises the game
	def initGame(self, connector, view, parameters):
		if(len(parameters) == 2):
			width = int(parameters[0])
			height = int(parameters[1])
		else:
			width = 42
			height = 42
		
		self.conn = connector
		self.view = view
		self.map = Map(self.view, width, height)
		self.gameOver = False
		self.view.displayGrid(0, 0, width * 10, height * 10, 10, 10, 0x303030, False)
	
	#Sets the player score
	def setScore(self, aiId, score):
		self.connector.setScore(aiId, score)
	
	#Adds an AI
	def addAi(self, aiId, playerName, aiName):
		self.ais.append(aiId)
		self.map.addHunter(aiId)
	
	#Removes an AI
	def aiTimedOut(self, aiId):
		self.map.getHunter(aiId).delete()
		self.ais.remove(aiId)
		self.conn.stopAi(aiId)
	
	#Ends the game
	def endGame(self):
		self.gameOver = True
	
	#Plays the game
	def play(self):
		for aiId in self.ais:
			self.conn.callAiFunction(aiId, PHASE_INIT)
		
		for numTurn in range(1000):
			for aiId in self.ais:
				self.conn.callAiFunction(aiId, PHASE_PLAY)
				nb = self.map.treasuresFound(aiId)
				if nb > 0:
					self.conn.incrementScore(aiId, nb)
					for aiId in self.ais:
						self.conn.callAiFunction(aiId, PHASE_REINIT)
			
			self.conn.setFrame()
			self.view.deleteTemporaryShapes()
			
			if self.gameOver:
				break
	
	#getMapSize
	def getMapSize(self):
		return self.map.getSize()
	
	#getPosition
	def getPosition(self, aiId) :
		return self.map.getHunter(aiId).getPosition()
	
	#move
	def move(self, aiId, direction):
		self.map.getHunter(aiId).move(direction)
	
	#peek
	def peek(self, aiId):
		return self.map.peek(aiId)