Add !mp abort, fix match not being set as in progress when starting it

This commit is contained in:
Giuseppe Guerra 2017-08-07 21:38:18 +02:00
parent 3653447761
commit 5adc7f4261
4 changed files with 35 additions and 9 deletions

View File

@ -936,6 +936,11 @@ def multiplayer(fro, chan, message):
_match.sendUpdates() _match.sendUpdates()
return "Match settings have been updated!" return "Match settings have been updated!"
def mpAbort():
_match = glob.matches.matches[getMatchIDFromChannel(chan)]
_match.abort()
return "Match aborted!"
try: try:
subcommands = { subcommands = {
"make": mpMake, "make": mpMake,
@ -951,6 +956,7 @@ def multiplayer(fro, chan, message):
"invite": mpInvite, "invite": mpInvite,
"map": mpMap, "map": mpMap,
"set": mpSet, "set": mpSet,
"abort": mpAbort,
} }
requestedSubcommand = message[0].lower().strip() requestedSubcommand = message[0].lower().strip()
if requestedSubcommand not in subcommands: if requestedSubcommand not in subcommands:

View File

@ -77,7 +77,8 @@ server_silenceEnd = 92
server_userSilenced = 94 server_userSilenced = 94
server_userPresenceBundle = 96 server_userPresenceBundle = 96
client_userPanelRequest = 97 client_userPanelRequest = 97
client_tournamentMatchInfoRequest = 93 client_tournamentMatchInfoRequest = 937
server_matchAbort = 106
server_switchServer = 107 server_switchServer = 107
client_tournamentJoinMatchChannel = 108 client_tournamentJoinMatchChannel = 108
client_tournamentLeaveMatchChannel = 109 client_tournamentLeaveMatchChannel = 109

View File

@ -264,6 +264,9 @@ def playerFailed(slotID):
def matchTransferHost(): def matchTransferHost():
return packetHelper.buildPacket(packetIDs.server_matchTransferHost) return packetHelper.buildPacket(packetIDs.server_matchTransferHost)
def matchAbort():
return packetHelper.buildPacket(packetIDs.server_matchAbort)
def switchServer(address): def switchServer(address):
return packetHelper.buildPacket(packetIDs.server_switchServer, [[address, dataTypes.STRING]]) return packetHelper.buildPacket(packetIDs.server_switchServer, [[address, dataTypes.STRING]])

View File

@ -396,13 +396,7 @@ class match:
self.inProgress = False self.inProgress = False
# Reset slots # Reset slots
for i in range(0,16): self.resetSlotsReady()
if self.slots[i].user is not None and self.slots[i].status == slotStatuses.PLAYING:
self.slots[i].status = slotStatuses.NOT_READY
self.slots[i].loaded = False
self.slots[i].skip = False
self.slots[i].complete = False
self.slots[i].score = 0
# Send match update # Send match update
self.sendUpdates() self.sendUpdates()
@ -417,6 +411,15 @@ class match:
# Console output # Console output
log.info("MPROOM{}: Match completed".format(self.matchID)) log.info("MPROOM{}: Match completed".format(self.matchID))
def resetSlotsReady(self):
for i in range(0,16):
if self.slots[i].user is not None and self.slots[i].status == slotStatuses.PLAYING:
self.slots[i].status = slotStatuses.NOT_READY
self.slots[i].loaded = False
self.slots[i].skip = False
self.slots[i].complete = False
self.slots[i].score = 0
def getUserSlotID(self, userID): def getUserSlotID(self, userID):
""" """
Get slot ID occupied by userID Get slot ID occupied by userID
@ -726,7 +729,7 @@ class match:
glob.streams.add(self.playingStreamName) glob.streams.add(self.playingStreamName)
# Change inProgress value # Change inProgress value
match.inProgress = True self.inProgress = True
# Set playing to ready players and set load, skip and complete to False # Set playing to ready players and set load, skip and complete to False
# Make clients join playing stream # Make clients join playing stream
@ -752,3 +755,16 @@ class match:
for i in range(matchSize, 16): for i in range(matchSize, 16):
if self.slots[i].status != slotStatuses.LOCKED: if self.slots[i].status != slotStatuses.LOCKED:
self.toggleSlotLocked(i) self.toggleSlotLocked(i)
def abort(self):
if not self.inProgress:
log.warning("MPROOM{}: Match is not in progress!".format(self.matchID))
return
self.inProgress = False
self.isStarting = False
self.resetSlotsReady()
self.sendUpdates()
glob.streams.broadcast(self.playingStreamName, serverPackets.matchAbort())
glob.streams.dispose(self.playingStreamName)
glob.streams.remove(self.playingStreamName)
log.info("MPROOM{}: Match aborted".format(self.matchID))