diff --git a/main.py b/main.py index 5f895e8..d0d7790 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from models.game import Game from models.match import Match from models.player import Player +from models.team import Team def main(): import demoparser2 @@ -12,10 +13,15 @@ def main(): players = demo_parser.parse_player_info() start_tick = int(input()) - m = Match(map_name, game_info) + team_1 = Team() + team_2 = Team() + m = Match(map_name, game_info, team_1, team_2) m.tick = start_tick for index, row in players.iterrows(): - m.add_player(Player(row["name"], row["steamid"])) + if row["team_number"] == 1: + team_1.add_player(Player(row["name"], row["steamid"])) + else: + team_2.add_player(Player(row["name"], row["steamid"])) game = Game(m) diff --git a/models/game.py b/models/game.py index de149a1..6d690f3 100644 --- a/models/game.py +++ b/models/game.py @@ -1,6 +1,7 @@ import pygame from models.match import Match from models.player import Player +from models.team import Team from controllers.map_coord_controller import MapCoordController from controllers.image_coord_controller import ImageCoordController from utils.json_object import JSONObject @@ -73,7 +74,7 @@ class Game: text = self.font.render(f"Round: {self.match.round}", True, (255, 255, 255)) self.screen.blit(text, (10, 50)) - for player in self.match.players: + for player in self.match.get_players(): if player.dead: continue mapped_x, mapped_y = self.map_coord_controller.map_to_screen(player.x, player.y) @@ -105,10 +106,15 @@ if __name__ == "__main__": players = demo_parser.parse_player_info() start_tick = int(input()) - m = Match(map_name, game_info) + team_1 = Team() + team_2 = Team() + m = Match(map_name, game_info, team_1, team_2) m.tick = start_tick for index, row in players.iterrows(): - m.add_player(Player(row["name"], row["steamid"])) + if row["team_number"] == 1: + team_1.add_player(Player(row["name"], row["steamid"])) + else: + team_2.add_player(Player(row["name"], row["steamid"])) game = Game(m) diff --git a/models/match.py b/models/match.py index ec4c59e..618b7be 100644 --- a/models/match.py +++ b/models/match.py @@ -1,8 +1,11 @@ from models.player import Player +from models.team import Team class Match: - def __init__(self, map_name, game_info, tick_rate=64): - self.players = [] + def __init__(self, map_name, game_info, team_1: Team, team_2: Team, tick_rate=64): + self.team_1 = team_1 + self.team_2 = team_2 + self.map_name = map_name self.tick = 1 @@ -14,15 +17,6 @@ class Match: self.game_info = game_info # pd dataframe sorted by tick self.tick_rate = tick_rate - def add_player(self, player: Player) -> None: - self.players.append(player) - - def next_tick(self) -> None: - self.tick += 1 - self.current_tick = self.game_info[self.game_info["tick"] == self.tick] - self._update_player_positions() - self._update_round() - def _update_player_positions(self) -> None: # inefficient, might need to change @@ -30,7 +24,7 @@ class Match: if self.current_tick.empty: return - for player in self.players: + for player in self.get_players(): player.x = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["Y"].values[0] player.y = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["X"].values[0] player.z = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["Z"].values[0] @@ -41,4 +35,13 @@ class Match: def _update_round(self) -> None: if self.current_tick.empty: return - self.round = self.current_tick["team_rounds_total"].values[0] \ No newline at end of file + self.round = self.current_tick["team_rounds_total"].values[0] + + def next_tick(self) -> None: + self.tick += 1 + self.current_tick = self.game_info[self.game_info["tick"] == self.tick] + self._update_player_positions() + self._update_round() + + def get_players(self) -> list[Player]: + return self.team_1.players + self.team_2.players \ No newline at end of file diff --git a/models/team.py b/models/team.py new file mode 100644 index 0000000..3af4573 --- /dev/null +++ b/models/team.py @@ -0,0 +1,16 @@ +from models.player import Player + +class Team: + def __init__(self): + self.players = [] + self.is_ct = False + self.score = 0 + + def add_player(self, player: Player): + self.players.append(player) + + def remove_player(self, player: Player): + self.players.remove(player) + + def set_ct(self, is_ct: bool): + self.is_ct = is_ct \ No newline at end of file