Package controlador

Source Code of controlador.PartidaControlador

package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;

import vista.JuegoVista;
import vista.PartidaVista;
import modelo.Partida;
import modelo.mapa.*;

public class PartidaControlador {
  private Partida modeloPartida;
  private JuegoVista vista;
  private PartidaVista panel;

  private ViajeControlador viajeControlador;
  private GanadorControlador ganadorControlador;
  private InfoPoliciaControlador infoPoliciaControlador;
  private InterrogarControlador interrogarControlador;
  private LadronesControlador ladronesControlador;
  private OrdenArrestoControlador ordenArrestoControlador;
  private PerdedorControlador perdedorControlador;

  private static int MAX_LOCALES = 3;

  public PartidaControlador(Partida modeloPartida, JuegoVista vista) {
    this.modeloPartida = modeloPartida;
    this.vista = vista;

    viajeControlador = new ViajeControlador(modeloPartida, vista);
    ganadorControlador = new GanadorControlador(vista);
    infoPoliciaControlador = new InfoPoliciaControlador(modeloPartida, vista);
    interrogarControlador = new InterrogarControlador(modeloPartida, vista);
    ladronesControlador = new LadronesControlador(modeloPartida, vista);
    ordenArrestoControlador = new OrdenArrestoControlador(modeloPartida, vista);
    perdedorControlador = new PerdedorControlador(vista);

    activar();

    if (!quedaTiempo())
      return;

    this.panel.addAbrirPanelInfoPoliciaListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        AbrirPanelInfoPolicia();
      }
    });

    this.panel.addAbrirPanelLadronesListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        AbrirPanelLadrones();
      }
    });

    this.panel.addAbrirPanelViajarListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        AbrirPanelViajar();
      }
    });

    this.panel.addAbrirPanelOrdenArrestoListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        AbrirPanelOrdenArresto();
      }
    });

    this.panel.addVolverAPanelNuevaPartidaListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        volverAPanelNuevaPartida();
      }
    });

    this.panel.addInterrogarListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String localString = ((JButton) e.getSource()).getText();
        interrogar(localString);
      }
    });
  }

  private void AbrirPanelInfoPolicia() {
    infoPoliciaControlador.activar();
  }

  private void AbrirPanelLadrones() {
    ladronesControlador.activar();
  }

  private void AbrirPanelViajar() {
    viajeControlador.activar();
  }

  private void AbrirPanelOrdenArresto() {
    ordenArrestoControlador.activar();
  }

  public void activar() {

    int horasRestantes = modeloPartida.getHorasRestantes();
    int horaActual = modeloPartida.getHoraActual();
    String nombreLocal1 = modeloPartida.verLocalNro(1).getNombre();
    String nombreLocal2 = modeloPartida.verLocalNro(2).getNombre();
    String nombreLocal3 = modeloPartida.verLocalNro(3).getNombre();
    String nombreCiudad = modeloPartida.ciudadActual().getNombre();

    this.panel = new PartidaVista(horasRestantes, horaActual, nombreLocal1, nombreLocal2, nombreLocal3,
        nombreCiudad);

    vista.mostrarPanel(panel);
  }

  public void interrogar(String localString) {
    String pista = null;
    for (int i = 1; i <= MAX_LOCALES; i++) {
      Local local = modeloPartida.verLocalNro(i);
      if (local.getNombre().toUpperCase() == localString.toUpperCase()) {
        pista = modeloPartida.interrogar(local);
        boolean fueAtacado = modeloPartida.fueAtacado();
        if (fueAtacado)
          JOptionPane.showMessageDialog(null, "Oh! Has sido atacado! Esto te demorar� un poco...");
        break;
      }
    }

    if (!quedaTiempo())
      return;

    if (modeloPartida.ladronNoPuedeEscapar()) {
      modeloPartida.atraparLadron();
    }

    if (modeloPartida.partidaGanada()) {
      ganadorControlador.activar();
    } else if (modeloPartida.partidaTerminada()) {
      JOptionPane
          .showMessageDialog(null,
              "Has atrapado al ladr�n pero fue liberado debido a que no exist�a una orden de arresto emitida en su contra.");
      perdedorControlador.activar();
    } else {
      interrogarControlador.activar(pista);
    }
  }

  public void volverAPanelNuevaPartida() {
    new NuevaPartidaControlador(modeloPartida, vista);
  }

  private boolean quedaTiempo() {
    if (!modeloPartida.quedaTiempo()) {
      JOptionPane.showMessageDialog(null, "Oops! Te quedaste sin tiempo!");
      perdedorControlador.activar();
      return false;
    }
    return true;
  }
}
TOP

Related Classes of controlador.PartidaControlador

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.