75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from objects import match
 | |
| from objects import glob
 | |
| from constants import serverPackets
 | |
| 
 | |
| class matchList:
 | |
| 	matches = {}
 | |
| 	usersInLobby = []
 | |
| 	lastID = 1
 | |
| 
 | |
| 	def __init__(self):
 | |
| 		"""Initialize a matchList object"""
 | |
| 		self.matches = {}
 | |
| 		self.usersInLobby = []
 | |
| 		self.lastID = 1
 | |
| 
 | |
| 	def createMatch(self, matchName, matchPassword, beatmapID, beatmapName, beatmapMD5, gameMode, hostUserID):
 | |
| 		"""
 | |
| 		Add a new match to matches list
 | |
| 
 | |
| 		matchName -- match name, string
 | |
| 		matchPassword -- match md5 password. Leave empty for no password
 | |
| 		beatmapID -- beatmap ID
 | |
| 		beatmapName -- beatmap name, string
 | |
| 		beatmapMD5 -- beatmap md5 hash, string
 | |
| 		gameMode -- game mode ID. See gameModes.py
 | |
| 		hostUserID -- user id of who created the match
 | |
| 		return -- match ID
 | |
| 		"""
 | |
| 		# Add a new match to matches list
 | |
| 		matchID = self.lastID
 | |
| 		self.lastID+=1
 | |
| 		self.matches[matchID] = match.match(matchID, matchName, matchPassword, beatmapID, beatmapName, beatmapMD5, gameMode, hostUserID)
 | |
| 		return matchID
 | |
| 
 | |
| 	def lobbyUserJoin(self, userID):
 | |
| 		"""
 | |
| 		Add userID to users in lobby
 | |
| 
 | |
| 		userID -- user who joined mp lobby
 | |
| 		"""
 | |
| 		# Make sure the user is not already in mp lobby
 | |
| 		if userID not in self.usersInLobby:
 | |
| 			# We don't need to join #lobby, client will automatically send a packet for it
 | |
| 			self.usersInLobby.append(userID)
 | |
| 
 | |
| 	def lobbyUserPart(self, userID):
 | |
| 		"""
 | |
| 		Remove userID from users in lobby
 | |
| 
 | |
| 		userID -- user who left mp lobby
 | |
| 		"""
 | |
| 		# Make sure the user is in mp lobby
 | |
| 		if userID in self.usersInLobby:
 | |
| 			# Part lobby and #lobby channel
 | |
| 			self.usersInLobby.remove(userID)
 | |
| 
 | |
| 	def disposeMatch(self, matchID):
 | |
| 		"""
 | |
| 		Destroy match object with id = matchID
 | |
| 
 | |
| 		matchID -- ID of match to dispose
 | |
| 		"""
 | |
| 		# Make sure the match exists
 | |
| 		if matchID not in self.matches:
 | |
| 			return
 | |
| 
 | |
| 		# Remove match object
 | |
| 		self.matches.pop(matchID)
 | |
| 
 | |
| 		# Send match dispose packet to everyone in lobby
 | |
| 		for i in self.usersInLobby:
 | |
| 			token = glob.tokens.getTokenFromUserID(i)
 | |
| 			if token is not None:
 | |
| 				token.enqueue(serverPackets.disposeMatch(matchID))
 |