From 3ce6ff75f89989d07d7429d9a9aa03e96ac748b7 Mon Sep 17 00:00:00 2001 From: Daniel Nagel Date: Wed, 6 May 2026 12:30:30 +0000 Subject: [PATCH] small changes --- data/data_api.py | 30 +++++++++++++++++++ match_calculations/achievments/achievments.py | 25 ++++++++++++++++ match_calculations/calc_match.py | 4 +++ 3 files changed, 59 insertions(+) create mode 100644 match_calculations/achievments/achievments.py diff --git a/data/data_api.py b/data/data_api.py index d6318c8..b9301af 100644 --- a/data/data_api.py +++ b/data/data_api.py @@ -174,6 +174,36 @@ def get_player_statistics(player_id): return result +def get_player_statistic(player_id, system_id): + connection = sqlite3.connect(DB_PATH) + connection.row_factory = sqlite3.Row + cursor = connection.cursor() + + query = """ + SELECT + sys.id AS gamesystem_id, + sys.name AS gamesystem_name, + sys.*, + stat.mmr, + stat.games_in_system, + stat.points, + stat.avv_points, + stat.last_played, + stat.win_rate, + stat.trend, + stat.tyrann_id, + stat.pushover_id, + stat.nemesis_id + FROM gamesystems sys + LEFT JOIN player_game_statistic stat + ON sys.id = stat.gamesystem_id AND stat.player_id = ? + WHERE sys.id = ? + """ + cursor.execute(query, (player_id, system_id)) + row = cursor.fetchone() + connection.close() + + return dict(row) if row else None diff --git a/match_calculations/achievments/achievments.py b/match_calculations/achievments/achievments.py new file mode 100644 index 0000000..9bde754 --- /dev/null +++ b/match_calculations/achievments/achievments.py @@ -0,0 +1,25 @@ +from data import data_api +from wood import logger +import sqlite3 + + +def check_player_achievments(player_id): + # Schauen ob der Spieler sich nach dem Match (function wird aufgerufen NACHDEM ein Match berechnet wurde) sich ein Achievment verdient hat. + game_stats = data_api.get_player_statistic(player_id, system_id) + + # Checken ob die Gamestats da sind und geladen sind. + if not game_stats: + logger.log(f"no game_stats could be loaded for PlayerID {player_id}.") + return + else: + if game_stats["mmr"] is None: + logger.log(f"PlayerID {player_id} has no game statistics AFTER match got calculated.") + return + + played_games_achievment(player_id) + + + + +def played_games_achievment(player_id): + return diff --git a/match_calculations/calc_match.py b/match_calculations/calc_match.py index 433cd04..7939a1d 100644 --- a/match_calculations/calc_match.py +++ b/match_calculations/calc_match.py @@ -3,6 +3,7 @@ from match_calculations import calculation import json import os from wood import logger +from match_calculations.achievments import achievments point_inflation = 1 # => entspricht % @@ -96,6 +97,9 @@ def calculate_match (match_id): logger.log(f"Match{match_id}: Winner {data_api.get_player_name(winner_id)}: Base {w_base} + Khorne({w_khorne}) + Slaanesh({slaanesh}) + Tzeentch({tzeentch}) = {calc_results[winner_id]["total"]}") logger.log(f"Match{match_id}: Looser {data_api.get_player_name(looser_id)}: -Base({l_base}) + Khorne({l_khorne}) - Slaanesh({slaanesh}) - Tzeentch({tzeentch}) = {calc_results[looser_id]["total"]}") data_api.save_calculated_match(calc_results) + achievments.check_player_achievments(winner_id, system_id) + achievments.check_player_achievments(looser_id, system_id) + def determine_draw_diff(sys_id):