From b8c423c7a033cfa9b80e4110e32954cd64fc960d Mon Sep 17 00:00:00 2001 From: Sean Hagen Date: Sat, 24 Jul 2021 17:57:52 -0500 Subject: [PATCH 1/3] Fixed issue with partition to/from json, added logic that puts shooter in client --- game/common/player.py | 10 +++++++--- game/engine.py | 23 +++++++++++++---------- game/utils/generate_game.py | 4 ++-- game/utils/partition_grid.py | 4 ++-- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/game/common/player.py b/game/common/player.py index 33c94b59..fcb6e7fb 100644 --- a/game/common/player.py +++ b/game/common/player.py @@ -3,18 +3,19 @@ from game.common.action import Action from game.common.game_object import GameObject from game.common.enums import * +from game.common.moving.shooter import Shooter class Player(GameObject): - def __init__(self, code=None, team_name=None, action=None): + def __init__(self, code=None, team_name=None, action=None, shooter=None): super().__init__() self.object_type = ObjectType.player - self.functional = True self.error = None self.team_name = team_name self.code = code self.action = action + self.shooter = shooter def to_json(self): data = super().to_json() @@ -22,6 +23,7 @@ def to_json(self): data['functional'] = self.functional data['error'] = self.error data['team_name'] = self.team_name + data['shooter'] = self.shooter.to_json() data['action'] = self.action.to_json( ) if self.action is not None else None @@ -33,6 +35,8 @@ def from_json(self, data): self.functional = data['functional'] self.error = data['error'] self.team_name = data['team_name'] + shtr = Shooter() + self.shooter = shtr.from_json(data['shooter']) act = Action() self.action = act.from_json( data['action']) if data['action'] is not None else None @@ -42,4 +46,4 @@ def __str__(self): Team name: {self.team_name} Action: {self.action} """ - return p + return p \ No newline at end of file diff --git a/game/engine.py b/game/engine.py index 02a46f76..880fe2d1 100644 --- a/game/engine.py +++ b/game/engine.py @@ -84,8 +84,19 @@ def boot(self): continue # Otherwise, instantiate the player - player = Player() - self.clients.append(player) + if len(self.clients) == 0: + # Add players one and two + ar = GameStats.player_stats["hitbox"][0] + hit = Hitbox(ar[0], ar[1], (ar[2], ar[3])) + player = Player(shooter = Shooter(hitbox=hit)) + self.clients.append(player) + else: + ar = GameStats.player_stats["hitbox"][1] + hit = Hitbox(ar[0], ar[1], (ar[2], ar[3])) + player = Player(shooter=Shooter(hitbox=hit)) + self.clients.append(player) + + # Verify client isn't using invalid imports or opening anything imports, opening = verify_code(filename + '.py') @@ -167,14 +178,6 @@ def load(self): gameBoard = GameBoard() game_map = gameBoard.from_json(world['game_map']) - # Add players one and two - ar = GameStats.player_stats["hitbox"][0] - hit = Hitbox(ar[0], ar[1], (ar[2], ar[3])) - game_map.player_list.append(Shooter(hitbox=hit)) - - ar = GameStats.player_stats["hitbox"][1] - hit = Hitbox(ar[0], ar[1], (ar[2], ar[3])) - game_map.player_list.append(Shooter(hitbox=hit)) # add game map object to dictionary world.pop("game_map", None) diff --git a/game/utils/generate_game.py b/game/utils/generate_game.py index e46d7e5f..b4934e2c 100644 --- a/game/utils/generate_game.py +++ b/game/utils/generate_game.py @@ -103,8 +103,8 @@ def generate(): wall_copy = copy.deepcopy(wall) x_offset = plot.position[0] + wall_copy.hitbox.position[0] y_offset = plot.position[1] + wall_copy.hitbox.position[1] - wall_copy.position = (x_offset, y_offset) - game_map.wall_list.append(wall_copy) + wall_copy.hitbox.position = (x_offset, y_offset) + game_map.partition.add_object(wall_copy) # Verify logs location exists if not os.path.exists(GAME_MAP_DIR): diff --git a/game/utils/partition_grid.py b/game/utils/partition_grid.py index 980581a3..602e75ec 100644 --- a/game/utils/partition_grid.py +++ b/game/utils/partition_grid.py @@ -93,7 +93,7 @@ def remove_object(self, obj: MapObject) -> None: def to_json(self): data = {'matrix': [ [ - [obj.to_json() for obj in self.__matrix[row][column]] + [obj.to_json() if "to_json" in dir(obj) else obj for obj in self.__matrix[row][column]] for column in range(len(self.__matrix[row])) ] for row in range(len(self.__matrix)) @@ -104,7 +104,7 @@ def to_json(self): def from_json(self, data): self.__matrix = [ [ - [obj.from_json() for obj in column] + [obj.from_json() if "from_json" in dir(obj) else obj for obj in column] for column in row ] for row in data['matrix'] From 2469345166d57b8b64cfffc7a2b4150e65707bed Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sat, 24 Jul 2021 22:59:09 +0000 Subject: [PATCH 2/3] Automated autopep8 fixes --- game/common/player.py | 2 +- game/engine.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/game/common/player.py b/game/common/player.py index fcb6e7fb..cb9a6ec8 100644 --- a/game/common/player.py +++ b/game/common/player.py @@ -46,4 +46,4 @@ def __str__(self): Team name: {self.team_name} Action: {self.action} """ - return p \ No newline at end of file + return p diff --git a/game/engine.py b/game/engine.py index 880fe2d1..14826c9d 100644 --- a/game/engine.py +++ b/game/engine.py @@ -88,7 +88,7 @@ def boot(self): # Add players one and two ar = GameStats.player_stats["hitbox"][0] hit = Hitbox(ar[0], ar[1], (ar[2], ar[3])) - player = Player(shooter = Shooter(hitbox=hit)) + player = Player(shooter=Shooter(hitbox=hit)) self.clients.append(player) else: ar = GameStats.player_stats["hitbox"][1] @@ -96,8 +96,6 @@ def boot(self): player = Player(shooter=Shooter(hitbox=hit)) self.clients.append(player) - - # Verify client isn't using invalid imports or opening anything imports, opening = verify_code(filename + '.py') if len(imports) != 0: @@ -178,7 +176,6 @@ def load(self): gameBoard = GameBoard() game_map = gameBoard.from_json(world['game_map']) - # add game map object to dictionary world.pop("game_map", None) self.world["game_map"] = game_map From d0808cae4132d0e581602aee01337efb19122363 Mon Sep 17 00:00:00 2001 From: Sean Hagen Date: Sat, 31 Jul 2021 17:36:49 -0500 Subject: [PATCH 3/3] Switched to tick, added clients to tojson --- game/controllers/master_controller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/game/controllers/master_controller.py b/game/controllers/master_controller.py index b1a0fc3b..794d38cc 100644 --- a/game/controllers/master_controller.py +++ b/game/controllers/master_controller.py @@ -60,7 +60,8 @@ def turn_logic(self, clients, turn): # Return serialized version of game def create_turn_log(self, clients, turn): data = dict() - data['turn'] = turn + data['tick'] = turn + data['clients'] = [client.to_json() for client in clients] # Add things that should be thrown into the turn logs here. data['game_map'] = self.current_world_data["game_map"].to_json()