def send(self, spaceship, packet_type): if spaceship in self.group: byte_data = from_data(*spaceship.information, packet_type) else: # sprite is killed byte_data = from_data(spaceship.get_id(), 0, 0, 0, PacketType.DEATH) self.server.send(byte_data) for perquisite in spaceship.render_objects: to_send = perquisite.information if to_send: self.server.send(from_data(*to_send, perquisite.packet_type))
def update(self): for s_id, s_x, s_y, s_a, pack_type in self.receive(): if pack_type == PacketType.ALL_CONNECTED: self.server.send( from_data(0, 0, 0, 0, PacketType.ALL_CONNECTED)) self.is_game_active = True if pack_type == PacketType.DEATH: self.server.send( from_data(self.enemy.get_id(), 0, 0, 0, PacketType.DEATH)) self.is_end = True self.is_game_active = False for sprite in self.group: sprite.kill() self.kill() if pack_type == PacketType.MOVEMENT: self.enemy.set_position((s_x, s_y)) self.enemy.set_angle(s_a) if pack_type == PacketType.EXPLOSIVE: self.enemy.render_objects.add(Explosive( self.enemy, (s_x, s_y))) if not self.is_game_active or self.is_end: return for spaceship in self.group: spaceship.render_objects.draw(self.screen) # call AllySpaceShip.update() and EnemySpaceShip.update() self.group.update() self.group.draw(self.screen) # draw objects try: self.send(self.ally, PacketType.MOVEMENT) except socket_error: self.kill() # update ALL_SPRITES for obj in (*self.group, *self.ally.render_objects, *self.enemy.render_objects): if obj not in ALL_SPRITES: ALL_SPRITES.add(obj)
def send(self, player_id, x, y, angle, packet_type): byte_data = from_data(player_id, x, y, angle, packet_type) self.server.send(byte_data)