62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
from data import data_api
|
|
from mmr_calculations import *
|
|
|
|
# Mach die DB abfrage für die Relevanten Daten. Von hier aus werden die "Aufgaben" und Daten dann an die kleineren Berechnungs Funktionen verteilt.
|
|
def calculate_inserted_match (gamesystem, match_id):
|
|
match_data = data_api.get_match_by_id(match_id)
|
|
if not match_data:
|
|
print("Fehler: Match nicht gefunden!")
|
|
return
|
|
# Laden und umsetzen der Match Daten
|
|
p1_id = match_data['player1_id']
|
|
p2_id = match_data['player2_id']
|
|
p1_score = match_data['score_player1']
|
|
p2_score = match_data['score_player2']
|
|
sys_name = match_data['gamesystem_name']
|
|
sys_id = match_data['gamesystem_id']
|
|
|
|
rules = load_mmr_rule_matrix(systemname)
|
|
draw_diff = rules["draw_point_difference"]
|
|
|
|
calculated = False
|
|
winner_id = None
|
|
looser_id = None
|
|
match_is_draw = False
|
|
winner_score = 0
|
|
looser_score = 0
|
|
|
|
# Abgrenzen ob das Match schon berechnet wurde. Weil ein Draw kan 4 Punkte unterschied haben
|
|
# 43-41 ist ein Draw aber rein Mathematisch würde es auch ein anderes if triggern
|
|
while not calculated:
|
|
# Match is a Draw
|
|
if -draw_diff <= (p1_score-p2_score) <= draw_diff:
|
|
match_is_draw = True
|
|
winner_id = p1_id
|
|
looser_id = p2_id
|
|
winner_score = p1_score
|
|
looser_score = p2_score
|
|
|
|
calculated = True
|
|
break
|
|
|
|
# p1 ist der Sieger.
|
|
if score_p1 > score_p2:
|
|
winner_id = p1_id
|
|
looser_id = p2_id
|
|
winner_score = p1_score
|
|
looser_score = p2_score
|
|
|
|
calculated = True
|
|
break
|
|
|
|
# p2 ist der Sieger.
|
|
if score_p1 < score_p2:
|
|
winner_id = p2_id
|
|
looser_id = p1_id
|
|
winner_score = p2_score
|
|
looser_score = p1_score
|
|
|
|
calculated = True
|
|
break
|
|
|
|
calc_mmr_change.calc_mmr_change(sys_name, winner_id, looser_id, winner_score, looser_score, match_is_draw) |