Class GestorPartidas

java.lang.Object
Controlador.GestorPartidas

public class GestorPartidas extends Object
Controlador responsable de gestionar el ciclo de vida de las partidas.

Coordina la creación, pausa, reanudación y finalización de partidas, delegando la persistencia en GestorPersistencia.

Version:
1.2
Author:
JP-Aceves, Adrián
  • Field Details

    • contadorId

      private static int contadorId
      Contador global de partidas creadas. Se inicializa leyendo los ficheros existentes en disco para evitar colisiones de id entre ejecuciones.
    • partidaActual

      private Partida partidaActual
      Partida que se está jugando en este momento. null si no hay ninguna activa.
    • listaPartidas

      private ArrayList<Partida> listaPartidas
      Historial de partidas finalizadas durante esta ejecución.
    • persistencia

      private GestorPersistencia persistencia
      Capa de persistencia para guardar y recuperar partidas pausadas.
  • Constructor Details

    • GestorPartidas

      public GestorPartidas(GestorPersistencia persistencia)
      Construye el gestor con la implementación de persistencia indicada e inicializa el contador de ids leyendo los ficheros existentes en disco.
      Parameters:
      persistencia - implementación de GestorPersistencia a usar
  • Method Details

    • inicializarContador

      private void inicializarContador()
      Lee los ids de las partidas pausadas en disco y fija contadorId al valor máximo encontrado. Así cada nueva partida recibe un id único aunque la aplicación se haya reiniciado entre sesiones.
    • iniciarPartida

      public Partida iniciarPartida(Juego juego, ArrayList<Usuario> jugadores)
      Inicializa el juego y crea una nueva partida con los jugadores indicados. El id se asigna incrementando contadorId, garantizando unicidad entre ejecuciones.
      Parameters:
      juego - juego que se va a jugar
      jugadores - lista de usuarios que participan
      Returns:
      la Partida recién creada
    • pausarPartida

      public void pausarPartida()
      Pausa la partida actual y guarda su estado serializado en disco. No hace nada si no hay ninguna partida activa.
    • reanudarPartida

      public Partida reanudarPartida(int id, String datosCompletos, Juego juego, ArrayList<Usuario> jugadores)
      Reconstruye y reanuda una partida pausada a partir de los datos cargados de disco. El parámetro datosCompletos tiene el formato "nombreJuego|estadoSerializado" tal como lo guarda pausarPartida(). Para PasaPalabra se llama a juego.inicializar() antes de deserializar, porque necesita cargar el rosco desde fichero antes de restaurar los estados.
      Parameters:
      id - id de la partida pausada (se reutiliza para la nueva Partida)
      datosCompletos - string leído del fichero: "nombreJuego|estadoSerializado"
      juego - instancia del juego ya creada con GestorJuegos.crearJuego()
      jugadores - lista de jugadores que participarán
      Returns:
      la Partida ya activa y lista para jugar
    • finalizarPartida

      public void finalizarPartida()
      Finaliza la partida actual, la añade al historial y elimina su fichero de pausa. No hace nada si no hay ninguna partida activa.
    • listarPartidasPausadas

      public ArrayList<Integer> listarPartidasPausadas()
      Devuelve los identificadores de las partidas pausadas almacenadas en disco.
      Returns:
      lista de ids como Integer
    • listarPartidasUsuario

      public ArrayList<Integer> listarPartidasUsuario(String username)
      Devuelve solo los ids de partidas pausadas en las que participó username. Lee cada fichero y comprueba el campo de jugadores del formato "nombreJuego|user1,user2|estado".
    • cargarDatosPartida

      public String cargarDatosPartida(int id)
      Carga el estado serializado de una partida pausada a partir de su id.
      Parameters:
      id - identificador de la partida
      Returns:
      string con el estado serializado, o null si no existe
    • getPartidaActual

      public Partida getPartidaActual()
      Devuelve la partida que se está jugando en este momento.
      Returns:
      Partida actual, o null si no hay ninguna activa
    • getPartidasUsuario

      public ArrayList<Partida> getPartidasUsuario(Usuario usuario)
      Filtra el historial devolviendo solo las partidas en las que participó el usuario.
      Parameters:
      usuario - usuario por el que filtrar
      Returns:
      lista de Partida que contienen al usuario
    • getListaPartidas

      public ArrayList<Partida> getListaPartidas()
      Devuelve el historial completo de partidas finalizadas en esta sesión. Usado por VentanaAdmin para mostrar el listado de partidas.
      Returns:
      lista de Partida finalizadas
    • getResumenPartidasPausadas

      public ArrayList<String[]> getResumenPartidasPausadas()
      Devuelve un resumen legible de todas las partidas pausadas en disco. Cada entrada del array tiene el formato: "ID | nombreJuego | jugadores". Usado por VentanaAdmin para mostrar el listado de partidas pausadas.
      Returns:
      lista de Strings con el resumen de cada partida pausada