diff --git a/game/common/player.py b/game/common/player.py index 33c94b59..cb9a6ec8 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 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() diff --git a/game/engine.py b/game/engine.py index 02a46f76..14826c9d 100644 --- a/game/engine.py +++ b/game/engine.py @@ -84,8 +84,17 @@ 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,15 +176,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) self.world["game_map"] = game_map 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']