Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ifsp.HUE.fragment;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.graphics.Color;
- import android.graphics.drawable.Drawable;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.ListAdapter;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.ifsp.HUE.adapters.EstacaoMetroAdapter;
- import com.ifsp.HUE.adapters.LinhaMetroAdapter;
- import com.ifsp.HUE.modelos.CaminhoRota;
- import com.ifsp.HUE.modelos.EstacaoMetro;
- import com.ifsp.HUE.modelos.LinhaMetro;
- import com.ifsp.HUE.huelocation.R;
- import java.util.ArrayList;
- /**
- * --> Fragment de Cálculo de Rota <--
- * Fragment que lida com o cálculo da rota do usuário. Possui métodos para Dialogs e o método
- * em que a rota é calculada. A rota calculada retorna na forma de um ArrayList que contém
- * os caminhos daquela rota, cada um do tipo CaminhoRota.
- * <p/>
- * OBS: Como a Linha Lilás não faz nenhuma integração direta com o metrô, então nao faz sentido em incluir
- * esta linha no cálculo já que não seria possível achar rotas usando as linhas do metro com essa
- * linha especifica, que nao e interligada.
- * Created by Juliano
- */
- public class RotaFragment extends android.app.Fragment {
- public static final int ARG_OS = 1;
- private ArrayList<CaminhoRota> rotaCalculada;
- private Context mContext;
- private LinhaMetro[] listalinhas;
- private EstacaoMetro[] listaEstacoes;
- private int linhaOrigem[];
- private int linhaDestino[];
- private TextView tvEstacaoOrigem;
- private TextView tvEstacaoDestino;
- /** SOBRE VALORES DA ESCOLHA DO USUÁRIO!!*/
- /**
- * linhaOrigem[] e linhaDestino[] são os vetores que armazenam a linha e a estação escolhida pelo usuario.
- * No primeiro índice de cada um (ou seja, linhaOrigem[0], por exemplo) fica armazenado o numero da Linha:
- * Valor | Linha Correspondente
- * <p/>
- * 1 Azul
- * 2 Verde
- * 3 Vermelha
- * 4 Amarela
- * <p/>
- * Já a segunda casa do vetor ([1]), fica armazenada a estação. O valor da estação varia de acordo com a linha. O
- * Os valores específicos das estações se encontram no ÍNDICE do vetor listaEstacoes[], e depende das linhas escolhidas
- * pelo usuário.
- * <p/>
- * <p/>
- * Ver os métodos:
- * carregarEstacoesMetroLinhaAzul() para valores das estações da Linha AZUL,
- * carregarEstacoesMetroLinhaVerde() para valroes das estações da Linha VERDE,
- * carregarEstacoesMetroLinhaVermelha() para valores das estações da Linha VERMELHA e
- * carregarEstacoesMetroLinhaAmarela() para valores das estações da Linha AMARELA.
- */
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- linhaOrigem = new int[2];
- linhaDestino = new int[2];
- linhaOrigem[1] = 30;
- linhaDestino[1] = 30;
- mContext = this.getActivity();
- View view = inflater.inflate(R.layout.fragment_rota, null);
- Button btLinhaOrigem = (Button) view.findViewById(R.id.btorigemlinha);
- Button btLinhaDestino = (Button) view.findViewById(R.id.btdestinolinha);
- Button btCalcularRota = (Button) view.findViewById(R.id.botCalcRota);
- tvEstacaoOrigem = (TextView) view.findViewById(R.id.tvEstacaoOrigem);
- tvEstacaoDestino = (TextView) view.findViewById(R.id.tvEstacaoDestinoShow);
- btLinhaOrigem.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- carregaLinhaMetro();
- showDialogLinhas(v);
- }
- });
- btLinhaDestino.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- carregaLinhaMetro();
- showDialogLinhas(v);
- }
- });
- btCalcularRota.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- verificarAcaoCalcRota();
- }
- });
- return view;
- }
- /* Metodo que verifica se realmente o usuário escolheu corretamente as estações*/
- private void verificarAcaoCalcRota() {
- AlertDialog.Builder builderAviso = new AlertDialog.Builder(mContext);
- if (linhaOrigem[0] == 0) //Usuário não escolheu linha de Origem
- {
- builderAviso.setMessage("Escolha uma Linha Inicial!").show();
- } else if (linhaOrigem[1] == 30) //Usuário não escolheu estação de Origem
- {
- builderAviso.setMessage("Escolha uma Estação Inicial!").show();
- } else if (linhaDestino[0] == 0) //Uusuário não escolhei linha de Destino
- {
- builderAviso.setMessage("Escolha uma Linha de Destino!").show();
- } else if (linhaDestino[1] == 30) //Usuário não escolheu Estação de Destino
- {
- builderAviso.setMessage("Escolha uma Estação Final!").show();
- } else if ((linhaOrigem[0] == linhaDestino[0]) && (linhaOrigem[1] == linhaDestino[1])) {
- //NÃO É POSSÍVEL CALCULAR ROTA ENTRE DUAS ESTAÇÕES IGUAIS!
- //OBS: Ainda é possível calcular rota entre estações iguais porém de linhas diferentes!!
- builderAviso.setMessage("Não é Possivel calcular rota!!").show();
- } else {
- //O método deve retornar um Array rotaCalculada[] que deve possuir a rota já calculada.
- rotaCalculada = new ArrayList<CaminhoRota>();
- rotaCalculada = calcularRota(linhaOrigem, linhaDestino);
- //Volta os valores para o Default
- linhaOrigem[0] = 0;
- linhaOrigem[1] = 30;
- linhaDestino[0] = 0;
- linhaDestino[1] = 30;
- tvEstacaoOrigem.setText("----------");
- tvEstacaoOrigem.setTextColor(Color.parseColor("#000000"));
- tvEstacaoDestino.setText("----------");
- tvEstacaoDestino.setTextColor(Color.parseColor("#000000"));
- EstacaoMetro[] listaEstacoesRota = montarRotaLayout(rotaCalculada);
- if (listaEstacoesRota == null) {
- builderAviso.setMessage("Não foi possível calcular sua rota! :(").show();
- }
- //METODO PARA MONTAR LIST PASSANDO COMO PARÂMETRO A ROTACalculada
- else {
- montarLayoutRota(listaEstacoesRota);
- }
- }
- }
- /* Método que cria uma Dialog exibindo a rota calculada, na forma de uma listView. */
- private void montarLayoutRota(EstacaoMetro[] listaEstacoesRota) {
- ListAdapter adapterRota = new EstacaoMetroAdapter(mContext, listaEstacoesRota);
- AlertDialog.Builder builder1 = new AlertDialog.Builder(mContext);
- int selected = -1; //Não seleciona nenhum item no início
- builder1.setCancelable(false);
- builder1.setNegativeButton("Fechar",
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- Toast.makeText(
- mContext,
- "~~~ HueLoc ~~~",
- Toast.LENGTH_SHORT)
- .show();
- }
- });
- builder1.setSingleChoiceItems(adapterRota, selected, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- });
- builder1.setTitle("HueLoc - Rota Calculada");
- AlertDialog alert = builder1.create();
- alert.show();
- }
- /**
- * Método que 'transforma' os números do array 'rotaCalculada' na lista de estações daquela rota específica,
- * com seu nome e ícone específicos.
- */
- private EstacaoMetro[] montarRotaLayout(ArrayList<CaminhoRota> rotaCalculada) {
- ArrayList<CaminhoRota> rotaFinal = rotaCalculada;
- listaEstacoes = new EstacaoMetro[rotaFinal.size()];
- for (int i = 0; i < rotaFinal.size(); i++) {
- if (rotaFinal.get(i).getNumLinha() == 1) {
- switch (rotaFinal.get(i).getNumEstacao()) {
- case 0:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tucuruvi");
- break;
- case 1:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Parada Inglesa");
- break;
- case 2:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Ayrton Senna");
- break;
- case 3:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santana");
- break;
- case 4:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Carandiru");
- break;
- case 5:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Portuguesa-Tietê");
- break;
- case 6:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Armênia");
- break;
- case 7:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tiradentes");
- break;
- case 8:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
- break;
- case 9:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Bento");
- break;
- case 10:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
- break;
- case 11:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Liberdade");
- break;
- case 12:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Sao Joaquim");
- break;
- case 13:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vergueiro");
- break;
- case 14:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
- break;
- case 15:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
- break;
- case 16:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vila Mariana");
- break;
- case 17:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santa Cruz");
- break;
- case 18:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Praça da Árvore");
- break;
- case 19:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Saúde");
- break;
- case 20:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Judas");
- break;
- case 21:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Conceição");
- break;
- case 22:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Jabaquara");
- break;
- }
- } else if (rotaFinal.get(i).getNumLinha() == 2) {
- switch (rotaFinal.get(i).getNumEstacao()) {
- case 0:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Madalena");
- break;
- case 1:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sumaré");
- break;
- case 2:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Clínicas");
- break;
- case 3:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Consolação");
- break;
- case 4:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Trianon - MASP");
- break;
- case 5:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Brigadeiro");
- break;
- case 6:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
- break;
- case 7:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
- break;
- case 8:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Chácara Klabin");
- break;
- case 9:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Imigrantes");
- break;
- case 10:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Alto do Ipiranga");
- break;
- case 11:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sacomã");
- break;
- case 12:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Tamanduateí");
- break;
- case 13:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Prudente");
- break;
- }
- } else if (rotaFinal.get(i).getNumLinha() == 3) {
- switch (rotaFinal.get(i).getNumEstacao()) {
- case 0:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Palmeiras-Barra Funda");
- break;
- case 1:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Marechal Deodoro");
- break;
- case 2:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Santa Cecília");
- break;
- case 3:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
- break;
- case 4:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Anhangabaú");
- break;
- case 5:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
- break;
- case 6:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Pedro II");
- break;
- case 7:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Brás");
- break;
- case 8:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Bresser-Mooca");
- break;
- case 9:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Belém");
- break;
- case 10:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Tatuapé");
- break;
- case 11:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Carrão");
- break;
- case 12:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Penha");
- break;
- case 13:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Vila Matilde");
- break;
- case 14:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Guilhermina-Esperança");
- break;
- case 15:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Patriarca");
- break;
- case 16:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Artur-Alvim");
- break;
- case 17:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Corinthians-Itaquera");
- break;
- }
- } else if (rotaFinal.get(i).getNumLinha() == 4) {
- switch (rotaFinal.get(i).getNumEstacao()) {
- case 0:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Butantã");
- break;
- case 1:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Pinheiros");
- break;
- case 2:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Faria Lima");
- break;
- case 3:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Paulista");
- break;
- case 4:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
- break;
- case 5:
- listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
- break;
- }
- }
- }
- return listaEstacoes;
- }
- /* Método que carrega o vetor listaLinhas com as linhas do metro, já com o ícone e o nome*/
- private void carregaLinhaMetro() {
- listalinhas = new LinhaMetro[4];
- listalinhas[0] = new LinhaMetro(getImg(R.drawable.icolinhazul), " Azul");
- listalinhas[1] = new LinhaMetro(getImg(R.drawable.icolinhaverde), " Verde");
- listalinhas[2] = new LinhaMetro(getImg(R.drawable.icolinhavermelha), " Vermelha");
- listalinhas[3] = new LinhaMetro(getImg(R.drawable.icolinhamarela), " Amarela");
- }
- /* Recebe um input inteiro e retorna um drawable*/
- private Drawable getImg(int res) {
- Drawable img = getResources().getDrawable(res);
- //TOD: change the bounds..LEFT/TOP/RIGHT/BOTOM
- img.setBounds(0, 0, 90, 20);
- return img;
- }
- /* Mesma funcionalidade que o getImg, porém é específico da estação (imagens da estação)*/
- private Drawable getImg1(int res, String estacao) {
- Drawable img = getResources().getDrawable(res);
- //TOD: change the bounds..LEFT/TOP/RIGHT/BOTOM
- if (estacao.equals("Luz") || estacao.equals("Sé") || estacao.equals("paraiso")
- || estacao.equals("ana rosa") || estacao.equals("republica")) {
- img.setBounds(0, 0, 65, 27);
- } else {
- img.setBounds(0, 0, 28, 28);
- }
- return img;
- }
- /*Método que cria a Dialog da classe 'LinhasMetro. Também lida com os listeners e eventos de
- OnClick.*/
- private void showDialogLinhas(View v) {
- ListAdapter adapter = new LinhaMetroAdapter(mContext, listalinhas);
- AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
- final View vz = v;
- int selected = -1; //Não selecionada nada no início
- builder.setIcon(R.id.icon);
- builder.setCancelable(false);
- builder.setNegativeButton("Cancelar",
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- Toast.makeText(
- mContext,
- "Nenhuma linha selecionada",
- Toast.LENGTH_SHORT
- )
- .show();
- if (vz.getId() == R.id.btorigemlinha) {
- tvEstacaoOrigem.setText("----------");
- } else {
- tvEstacaoDestino.setText("----------");
- }
- }
- }
- );
- final int ind;
- if (v.getId() == R.id.btorigemlinha) //Clicou no botão para escolher estaçao de origem
- {
- ind = 1;
- builder.setTitle("Escolha a linha de Origem");
- builder.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(mContext, "Linha Escolhida: " + listalinhas[which].getName(), Toast.LENGTH_SHORT).show();
- //Criar parâmetros corretos com base na seleção da linha do usuario e então chamar
- // o método para exibir as estações corretas
- if (listalinhas[which].getName().equals(" Azul")) {
- showDialogEstacoesMetro(1, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Verde")) {
- showDialogEstacoesMetro(2, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Vermelha")) {
- showDialogEstacoesMetro(3, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Amarela")) {
- showDialogEstacoesMetro(4, ind);
- dialog.dismiss();
- }
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
- } else {
- ind = 2; //Lida com a Dialog de estações de destino
- builder.setTitle("Escolha a linha de Destino");
- builder.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(mContext, "Linha Escolhida: " + listalinhas[which].getName(), Toast.LENGTH_SHORT).show();
- //chamar método correto baseado na estação escolhida
- if (listalinhas[which].getName().equals(" Azul")) {
- showDialogEstacoesMetro(1, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Verde")) {
- showDialogEstacoesMetro(2, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Vermelha")) {
- showDialogEstacoesMetro(3, ind);
- dialog.dismiss();
- } else if (listalinhas[which].getName().equals(" Amarela")) {
- showDialogEstacoesMetro(4, ind);
- dialog.dismiss();
- }
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
- }
- }
- /**
- * METODO DAS ESTAÇÕES
- * Cria Dialog das estações de metrô de acordo com a linha escolhida
- */
- private int showDialogEstacoesMetro(int numLinha, int ind) {
- final int indicador;
- indicador = ind;
- if (indicador == 1) {
- linhaOrigem[0] = numLinha;
- }
- if (indicador == 2) {
- linhaDestino[0] = numLinha;
- }
- switch (numLinha) { //Chama os métodos para carregar as estações de cada linha, dependendo da linha
- //escolhida.
- case 1:
- carregarEstacoesMetroLinhaAzul();
- break;
- case 2:
- carregarEstacoesMetroLinhaVerde();
- break;
- case 3:
- carregarEstacoesMetroLinhaVermelha();
- break;
- case 4:
- carregarEstacoesMetroLinhaAmarela();
- break;
- }
- ListAdapter adapter = new EstacaoMetroAdapter(mContext, listaEstacoes);
- AlertDialog.Builder builder1 = new AlertDialog.Builder(mContext);
- int selected = -1;
- builder1.setCancelable(false);
- builder1.setNegativeButton("Cancelar",
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- Toast.makeText(
- mContext,
- "Nenhuma estação selecionada",
- Toast.LENGTH_SHORT)
- .show();
- if (indicador == 1) {
- linhaOrigem[0] = 0;
- linhaOrigem[1] = 30;
- tvEstacaoOrigem.setText("----------");
- tvEstacaoOrigem.setTextColor(Color.parseColor("#000000"));
- }
- if (indicador == 2) {
- linhaDestino[0] = 0;
- linhaDestino[1] = 30;
- tvEstacaoDestino.setText("----------");
- tvEstacaoDestino.setTextColor(Color.parseColor("#000000"));
- }
- }
- });
- builder1.setTitle("Escolha a Estação:");
- builder1.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(mContext, "Estação Escolhida: " + listaEstacoes[which].getNomeEstacao(), Toast.LENGTH_SHORT).show();
- dialog.dismiss();
- if (indicador == 1) { //Caso esteja escolhendo linha de Origem
- linhaOrigem[1] = which;
- tvEstacaoOrigem.setText(listaEstacoes[which].getNomeEstacao());
- if (listaEstacoes[which].getNomeEstacao().length() >= 22) {
- tvEstacaoOrigem.setTextSize(18);
- } else {
- tvEstacaoOrigem.setTextSize(22);
- }
- switch (linhaOrigem[0]) {//Muda as cores da TextView de acordo com a Linha.
- case 1:
- tvEstacaoOrigem.setTextColor(Color.parseColor("#000CB5"));
- break;
- case 2:
- tvEstacaoOrigem.setTextColor(Color.parseColor("#00631C"));
- break;
- case 3:
- tvEstacaoOrigem.setTextColor(Color.parseColor("#E20008"));
- break;
- case 4:
- tvEstacaoOrigem.setTextColor(Color.parseColor("#ACA808"));
- break;
- }
- }//end indicador(1) if
- if (indicador == 2) {//Caso esteja escolhendo linha de Destino
- linhaDestino[1] = which;
- tvEstacaoDestino.setText(listaEstacoes[which].getNomeEstacao());
- if (listaEstacoes[which].getNomeEstacao().length() >= 21) {
- tvEstacaoDestino.setTextSize(18);
- } else {
- tvEstacaoDestino.setTextSize(22);
- }
- switch (linhaDestino[0]) {//Muda as cores da TextView de acordo com a Linha.
- case 1:
- tvEstacaoDestino.setTextColor(Color.parseColor("#000CB5"));
- break;
- case 2:
- tvEstacaoDestino.setTextColor(Color.parseColor("#00631C"));
- break;
- case 3:
- tvEstacaoDestino.setTextColor(Color.parseColor("#E20008"));
- break;
- case 4:
- tvEstacaoDestino.setTextColor(Color.parseColor("#ACA808"));
- break;
- }
- }
- }
- }
- );
- AlertDialog alert = builder1.create(); //Cria a Dialog
- alert.show(); //Mostra a Dialog
- if (indicador == 1) { //retorna a Estação de Origem
- return linhaOrigem[1];
- } else { // retorna a Estação de Destino
- return linhaDestino[1];
- }
- }
- //Métodos para carregar a lista das estações de cada linha para a DialogInterface.
- //Contém os valores de cada estação.
- private void carregarEstacoesMetroLinhaAzul() {
- listaEstacoes = new EstacaoMetro[23];
- listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tucuruvi");
- listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Parada Inglesa");
- listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Ayrton Senna");
- listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santana");
- listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Carandiru");
- listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Portuguesa-Tietê");
- listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Armênia");
- listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tiradentes");
- listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
- listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Bento");
- listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
- listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Liberdade");
- listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Sao Joaquim");
- listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vergueiro");
- listaEstacoes[14] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
- listaEstacoes[15] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
- listaEstacoes[16] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vila Mariana");
- listaEstacoes[17] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santa Cruz");
- listaEstacoes[18] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Praça da Árvore");
- listaEstacoes[19] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Saúde");
- listaEstacoes[20] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Judas");
- listaEstacoes[21] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Conceição");
- listaEstacoes[22] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Jabaquara");
- }
- //Carrega estações da Linha Verde
- private void carregarEstacoesMetroLinhaVerde() {
- listaEstacoes = new EstacaoMetro[14];
- listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Madalena");
- listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sumaré");
- listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Clínicas");
- listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Consolação");
- listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Trianon - MASP");
- listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Brigadeiro");
- listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
- listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
- listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Chácara Klabin");
- listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Imigrantes");
- listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Alto do Ipiranga");
- listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sacomã");
- listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Tamanduateí");
- listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Prudente");
- }
- //Carrega estações da linha Vermelha
- private void carregarEstacoesMetroLinhaVermelha() {
- listaEstacoes = new EstacaoMetro[18];
- listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Palmeiras-Barra Funda");
- listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Marechal Deodoro");
- listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Santa Cecília");
- listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
- listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Anhangabaú");
- listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
- listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Pedro II");
- listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Brás");
- listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Bresser-Mooca");
- listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Belém");
- listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Tatuapé");
- listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Carrão");
- listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Penha");
- listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Vila Matilde");
- listaEstacoes[14] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Guilhermina-Esperança");
- listaEstacoes[15] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Patriarca");
- listaEstacoes[16] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Artur-Alvim");
- listaEstacoes[17] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Corinthians-Itaquera");
- }
- //Carrega estações da linha Amarela
- private void carregarEstacoesMetroLinhaAmarela() {
- listaEstacoes = new EstacaoMetro[6];
- listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Butantã");
- listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Pinheiros");
- listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Faria Lima");
- listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Paulista");
- listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
- listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
- }
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- }
- /**
- * -> MÉTODO PARA CÁLCULO DE ROTA <-
- * Cálculo de rota é feito em uma LONGA sequência de laços condicionais,
- * loops FOR e verificação de interconexões! ->HARDCODED
- * <p/>
- * <p/>
- * CADA possivel interação entre linhas é tratada em partes diferentes do método.
- * TODO: Melhorar legibilidade do método
- */
- public ArrayList<CaminhoRota> calcularRota(int linhaOrigem[], int linhaDestino[]) {
- //Rotas Linha x - Linha x
- if (linhaOrigem[0] == 1 && linhaDestino[0] == 4 && linhaDestino[1] == 5) {
- linhaDestino[0] = 1;
- linhaDestino[1] = 8;
- } else if (linhaOrigem[0] == 1 && linhaDestino[0] == 3 && linhaDestino[1] == 5) {
- linhaDestino[0] = 1;
- linhaDestino[1] = 10;
- } else if (linhaOrigem[0] == 1 && linhaDestino[0] == 2 && (linhaDestino[1] == 6 || linhaDestino[1] == 7)) {
- linhaDestino[0] = 1;
- if (linhaDestino[1] == 6) {
- linhaDestino[1] = 14;
- } else {
- linhaDestino[1] = 15;
- }
- } else if (linhaOrigem[0] == 2 && linhaDestino[0] == 1 && (linhaDestino[1] == 14 || linhaDestino[1] == 15)) {
- if (linhaOrigem[0] == 2 && linhaDestino[0] == 1 && (linhaOrigem[1] == 6 || linhaOrigem[1] == 7)) {
- linhaOrigem[0] = 1;
- if (linhaOrigem[1] == 6) {
- linhaOrigem[1] = 14;
- } else {
- linhaOrigem[1] = 15;
- }
- } else if (linhaDestino[1] == 14) {
- linhaDestino[1] = 6;
- } else {
- linhaDestino[1] = 7;
- }
- } else if (linhaOrigem[0] == 3 && linhaDestino[0] == 4 && linhaDestino[1] == 4) {
- linhaDestino[0] = 3;
- linhaDestino[1] = 3;
- } else if (linhaOrigem[0] == 3 && linhaDestino[0] == 1 && linhaDestino[1] == 10) {
- linhaDestino[0] = 3;
- linhaDestino[1] = 5;
- } else if (linhaOrigem[0] == 4 && linhaDestino[0] == 3 && linhaDestino[1] == 3) {
- linhaDestino[0] = 4;
- linhaDestino[1] = 4;
- } else if ((linhaOrigem[0] == 4 && linhaDestino[0] == 1 && linhaDestino[1] == 8)) {
- linhaDestino[0] = 4;
- linhaDestino[1] = 5;
- }
- if (linhaOrigem[0] == linhaDestino[0]) {
- /**início if. São duas estações da mesma linha.*/
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- //Primeira estação
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() > linhaDestino[1]) {
- for (int i = 1; i < (rota.get(0).getNumEstacao() - linhaDestino[1]); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- } else {
- for (int i = 1; i < (linhaDestino[1] - rota.get(0).getNumEstacao()); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- }
- rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- /**LINHA AZUL PARA LINHA VERDE*/
- if (linhaOrigem[0] == 1 && linhaDestino[0] == 2) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() > 15) {
- for (int i = 1; i < rota.get(0).getNumEstacao() - 15; i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 15));//Ana Rosa
- } else //Se estiver antes de ana rosa/ paraíso
- {
- for (int i = 1; i < 14 - rota.get(0).getNumEstacao(); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 14));
- }
- if (linhaDestino[1] < 6) {
- for (int i = 1; i < 6 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
- }
- } else {
- rota.add(new CaminhoRota(linhaOrigem[0], 15));
- for (int i = 1; i < linhaDestino[1] - 7; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
- }
- }
- rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }//fim if linha origem AZUL - linha destino Verde
- /**LINHA AZUL PARA LINHA VERMELHA*/
- else if (linhaOrigem[0] == 1 && linhaDestino[0] == 3) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() > 10) {
- for (int i = 1; i < rota.get(0).getNumEstacao() - 10; i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- } else //Se estiver antes da sé
- {
- for (int i = 1; i < 10 - rota.get(0).getNumEstacao(); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 10));//Sé
- if (linhaDestino[1] < 5) {
- for (int i = 1; i < 5 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
- }
- } else {
- for (int i = 1; i < linhaDestino[1] - 5; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 5 + i));
- }
- }
- rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- /**LINHA AZUL PARA LINHA AMARELA*/
- else if (linhaOrigem[0] == 1 && linhaDestino[0] == 4) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() > 8) {
- for (int i = 1; i < rota.get(0).getNumEstacao() - 8; i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- } else //Se estiver antes da luz
- {
- for (int i = 1; i < 8 - rota.get(0).getNumEstacao(); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 8));//Luz
- if (linhaDestino[1] < 5) {
- for (int i = 1; i < 5 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
- }
- }
- rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- /** LINHA VERDE PARA LINHA AZUL*/
- else if (linhaOrigem[0] == 2 && linhaDestino[0] == 1) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (linhaOrigem[1] < 5 && (linhaDestino[1] < 11 || linhaDestino[1] > 4)) {
- if (linhaOrigem[1] <= 3) {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- if (linhaDestino[1] != 3) {
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }
- } else {
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }
- rota.add(new CaminhoRota(4, 3));
- rota.add(new CaminhoRota(4, 4));
- if (linhaDestino[1] != 8) {
- rota.add(new CaminhoRota(4, 5));
- }
- if (linhaDestino[1] >= 8) {
- for (int i = 1; i < linhaDestino[1] - 8; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 8 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 8 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 8 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- if (rota.get(0).getNumEstacao() > 7) {
- for (int i = 1; i < rota.get(0).getNumEstacao() - 7; i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 7));//Ana rosa
- } else //Se estiver antes da Paraíso ou igual
- {
- for (int i = 1; i < 6 - rota.get(0).getNumEstacao(); i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- if (linhaOrigem[1] != 6) {
- rota.add(new CaminhoRota(linhaOrigem[0], 6));
- }
- }
- if (linhaDestino[1] < 14) {
- for (int i = 1; i < 14 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 14 - i));
- }
- } else {
- if (linhaOrigem[1] <= 6) {
- rota.add(new CaminhoRota(linhaDestino[0], 15));
- }
- for (int i = 1; i < linhaDestino[1] - 15; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 15 + i));
- }
- }
- rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- /**LINHA VERDE PARA LINHA VERMELHA*/
- else if (linhaOrigem[0] == 2 && linhaDestino[0] == 3) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() <= 3) {
- if (rota.get(0).getNumEstacao() == 3) {
- rota.add(new CaminhoRota(4, 3));
- rota.add(new CaminhoRota(4, 4));
- } else {
- for (int i = 1; i < 3 - rota.get(0).getNumEstacao(); i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- rota.add(new CaminhoRota(4, 3));
- rota.add(new CaminhoRota(4, 4));
- }
- } else if (rota.get(0).getNumEstacao() <= 6) {
- if (rota.get(0).getNumEstacao() < 6) {
- for (int i = 1; i < 6 - rota.get(0).getNumEstacao(); i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 6));
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 10));//Sé
- } else {
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 10));//Sé
- }
- } else //estacao >> Ana rosa
- {
- if (rota.get(0).getNumEstacao() != 7) {
- for (int i = 1; i < rota.get(0).getNumEstacao() - 7; i++) {
- rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 7));//Ana rosa
- rota.add(new CaminhoRota(1, 14));
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 10));//Sé
- } else //estacao == ana rosa
- {
- rota.add(new CaminhoRota(1, 14));
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 10));//Sé
- }
- }
- if (rota.get(0).getNumEstacao() <= 3 && linhaDestino[1] >= 3) {
- if (linhaDestino[1] == 3) {
- return rota;
- }
- if (linhaDestino[1] > 3) {//LOOG
- for (int i = linhaDestino[1] - 3; i >= 1; i--) {
- if ((linhaDestino[1] - i) == 3) {
- } else {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1] - i));//CÓDIGO 11-i}
- }
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- } else if (linhaDestino[1] >= 5)//Destino = Sé ou maior
- {
- if (linhaDestino[1] == 5) {
- return rota;
- } else {
- for (int i = linhaDestino[1] - 5; i >= 1; i--) {
- if ((linhaDestino[1] - i) == 5) {
- } else {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1] - i));//CÓDIGO 11-i}
- }
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- } else {
- if (linhaDestino[1] < 3 && linhaOrigem[1] <= 3) {
- for (int i = 1; i < 3 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
- }
- } else {
- for (int i = 1; i < 5 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
- }
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- /**LINHA VERDE PARA LINHA AMARELA*/
- else if (linhaOrigem[0] == 2 && linhaDestino[0] == 4) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() <= 3) {
- if (rota.get(0).getNumEstacao() == 3 && linhaDestino[1] == 3) //Consolação para paulista
- {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- /*INFUNCIONAL NO MOMENTO
- * if(linhaDestino[1]==5 && linhaOrigem[1]>=6)
- {
- for (int i = 1; i < linhaOrigem[1]-6; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]-i));
- }
- if(linhaOrigem[1]!=6){rota.add(new CaminhoRota(2,6));}
- for (int i = 1; i < 14-8; i++) {
- rota.add(new CaminhoRota(1,14-i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }*/
- else {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- if (linhaOrigem[1] != 3) {
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }
- }
- } else {
- for (int i = 1; i < linhaOrigem[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }
- if (linhaDestino[1] >= 3 || linhaDestino[1] < 3) {
- rota.add(new CaminhoRota(linhaDestino[0], 3));
- if (linhaDestino[1] == 3) {
- return rota;
- }
- if (linhaDestino[1] > 3) {
- for (int i = 1; i < linhaDestino[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 3 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- }
- /**LINHA VERMELHA PARA LINHA AZUL*/
- else if (linhaOrigem[0] == 3 && linhaDestino[0] == 1) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() < 5) {
- for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
- } else {
- for (int i = 1; i < linhaOrigem[1] - 5; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- if (linhaOrigem[1] != 5) {
- rota.add(new CaminhoRota(linhaOrigem[0], 5));
- } //Sé
- }
- if (linhaDestino[1] > 10) {
- for (int i = 1; i < linhaDestino[1] - 10; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 10 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 10 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 10 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- /**LINHA VERMELHA PARA LINHA VERDE*/
- else if (linhaOrigem[0] == 3 && linhaDestino[0] == 2) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (linhaDestino[1] <= 3 && linhaOrigem[1] <= 3)//não vai
- {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));//República
- rota.add(new CaminhoRota(4, 3));//Paulista
- rota.add(new CaminhoRota(2, 3));//Consolação
- if (linhaDestino[1] == 3) {
- return rota;
- } else {
- for (int i = 1; i < 3 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- } else if (linhaOrigem[1] >= 5 || linhaOrigem[1] == 4) //NÃO VAI
- {
- if (linhaOrigem[1] == 4) {
- rota.add(new CaminhoRota(linhaOrigem[0], 5));
- }//SÉ
- else {
- for (int i = 1; i < linhaOrigem[1] - 5; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- if (linhaOrigem[1] != 5) {
- rota.add(new CaminhoRota(linhaOrigem[0], 5));
- } //Sé
- }
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 14));
- if (linhaDestino[1] >= 7) {
- rota.add(new CaminhoRota(2, 7));
- if (linhaDestino[1] == 7) {
- return rota;
- } else {
- for (int i = 1; i < linhaDestino[1] - 7; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- } else {
- if (linhaDestino[1] == 6) {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 6 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- } else {
- for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
- rota.add(new CaminhoRota(1, 11));
- rota.add(new CaminhoRota(1, 12));
- rota.add(new CaminhoRota(1, 13));
- rota.add(new CaminhoRota(1, 14));
- if (linhaDestino[1] >= 7) {
- if (linhaDestino[1] == 7) {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < linhaDestino[1] - 7; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- } else {
- for (int i = 1; i < 6 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- }
- /**LINHA VERMELHA PARA LINHA AMARELA*/
- else if (linhaOrigem[0] == 3 && linhaDestino[0] == 4) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() < 3) {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));//República
- } else {
- if (linhaOrigem[1] >= 5 && linhaDestino[1] == 5) {
- for (int i = 1; i < linhaOrigem[1] - 5; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- if (linhaOrigem[1] != 5) {
- rota.add(new CaminhoRota(linhaOrigem[0], 5));
- }
- }
- for (int i = 1; i < linhaOrigem[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- if (linhaOrigem[1] != 3) {
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }
- //República
- }
- if (linhaDestino[1] > 4) {
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 4 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 4 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- /**LINHA AMARELA PARA LINHA AZUL*/
- else if (linhaOrigem[0] == 4 && linhaDestino[0] == 1) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (linhaDestino[1] > 11 && linhaOrigem[1] < 5) {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- if (linhaOrigem[1] != 3) {
- rota.add(new CaminhoRota(linhaOrigem[0], 3));
- }//Paulista
- rota.add(new CaminhoRota(2, 3));
- rota.add(new CaminhoRota(2, 4));
- rota.add(new CaminhoRota(2, 5));
- rota.add(new CaminhoRota(2, 6));
- if (linhaDestino[1] == 14) {
- return rota;
- } else if (linhaDestino[1] < 14) {
- for (int i = 1; i < 14 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 14 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- rota.add(new CaminhoRota(2, 7));
- if (linhaDestino[1] == 15) {
- return rota;
- }
- for (int i = 1; i < linhaDestino[1] - 15; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 15 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- if (linhaOrigem[1] != 5) {
- rota.add(new CaminhoRota(linhaOrigem[0], 5));//LUZ
- }
- if (linhaDestino[1] > 8) {
- for (int i = 1; i < linhaDestino[1] - 8; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 8 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < 8 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 8 - i));
- System.out.println("ADICIONAA");
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- /**LINHA AMARELA PARA LINHA VERDE*/
- else if (linhaOrigem[0] == 4 && linhaDestino[0] == 2) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() < 3) {
- for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));//Paulista
- rota.add(new CaminhoRota(2, 3));//Consolação
- } else if (linhaOrigem[1] == 3) {
- rota.add(new CaminhoRota(2, 3));//Consolação
- } else {
- for (int i = 1; i < linhaOrigem[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 3));//Paulista
- rota.add(new CaminhoRota(2, 3));//Consolação
- if (linhaDestino[1] == 3) {
- return rota;
- }
- }
- if (linhaDestino[1] == 3) {
- } else if (linhaDestino[1] < 3) {
- for (int i = 1; i < 3 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < linhaDestino[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- /**LINHA AMARELA PARA LINHA VERMELHA*/
- else if (linhaOrigem[0] == 4 && linhaDestino[0] == 3) {
- ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
- if (rota.get(0).getNumEstacao() < 4) {
- for (int i = 1; i < 4 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 4));//República
- } else {
- for (int i = 1; i < linhaOrigem[1] - 4; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 4));//República
- }
- if (linhaDestino[1] < 3) {
- for (int i = 1; i < 3 - linhaDestino[1]; i++) {
- rota.add(new CaminhoRota(linhaDestino[1], 3 - i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- } else {
- for (int i = 1; i < linhaDestino[1] - 3; i++) {
- rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
- }
- rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
- return rota;
- }
- }
- //PADRÃO DE VERIFICAÇAO DE ROTA:
- /*if(rota.get(0).getNumEstacao()<5)
- {
- //LINHA FINAL MAIOR QUE LINHA INICIAL
- for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]+i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
- }
- else
- {
- //Linha INICIAL MAIOR QUE A LINHA FINAL
- for (int i = 1; i < linhaOrigem[1]-5; i++) {
- rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]-i));
- }
- rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
- }
- * */
- }
- return null;
- }
- @Override
- public void setArguments(Bundle args) {
- super.setArguments(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement