From 99fa086a3f44e5acb8a5664f52076969bdcd2001 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sat, 1 Feb 2020 11:09:46 +0100 Subject: [PATCH] fix teambalance query --- StorrageBackend.py | 24 ++++++++++++++++-------- httpAPI.py | 3 ++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/StorrageBackend.py b/StorrageBackend.py index 0a805a2..573be51 100644 --- a/StorrageBackend.py +++ b/StorrageBackend.py @@ -150,7 +150,7 @@ def getPlayerRank(playerID): except KeyError: return "N/A" -def getBalancedTeams(players, buddies=None, teamCount=2): +def getBalancedTeams(players, buddies=None, teamCount=2, useNames=False): '''Balance a number of players into teams''' if teamCount != 2: @@ -158,17 +158,25 @@ def getBalancedTeams(players, buddies=None, teamCount=2): if not players: return ValueError("Input contains no players") - if type(players[0]) == str: + if useNames: + players = [ Player.DummyPlayer(searchPlayerByName(playerID)[0][0]) for playerID in players ] + elif type(players[0]) == str: players = [ Player.DummyPlayer(playerID) for playerID in players] sync_from_database(players) - arr = sorted(players, key=lambda x: x.rating.mu, reverse=True) - ret="" - i = 0 - while i < len(arr): - ret += "{}|{},".format(players[i].name,(i%2)+2) - i += 1 + sortedPlayers = sorted(players, key=lambda x: x.rating.mu, reverse=True) + team1Rating = 0 + team2Rating = 0 + ret = "" + + for p in sortedPlayers: + if team1Rating <= team2Rating: + ret += "{}|{},".format(p.name, 2) + team1Rating += p.rating.mu + else: + ret += "{}|{},".format(p.name, 3) + team2Rating += p.rating.mu return ret def qualityForTeams(teamArray, useNames=False): diff --git a/httpAPI.py b/httpAPI.py index 86e2324..d28f089 100644 --- a/httpAPI.py +++ b/httpAPI.py @@ -46,7 +46,8 @@ def hasChanged(): @app.route('/getbalancedteams') def getBalancedTeams(): players = flask.request.args.get("players").split(",") - return SB.getBalancedTeams(players) + useNames = flask.request.args.get("names") + return SB.getBalancedTeams(players, useNames=bool(useNames)) @app.route('/quality') def quality():