Advertisement
Guest User

foda MEN

a guest
Mar 22nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 72.43 KB | None | 0 0
  1. package com.ifsp.HUE.fragment;
  2.  
  3. import android.app.AlertDialog;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.graphics.Color;
  7. import android.graphics.drawable.Drawable;
  8. import android.os.Bundle;
  9. import android.support.annotation.Nullable;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.Button;
  14. import android.widget.ListAdapter;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import com.ifsp.HUE.adapters.EstacaoMetroAdapter;
  19. import com.ifsp.HUE.adapters.LinhaMetroAdapter;
  20. import com.ifsp.HUE.modelos.CaminhoRota;
  21. import com.ifsp.HUE.modelos.EstacaoMetro;
  22. import com.ifsp.HUE.modelos.LinhaMetro;
  23. import com.ifsp.HUE.huelocation.R;
  24.  
  25. import java.util.ArrayList;
  26.  
  27. /**
  28. * --> Fragment de Cálculo de Rota <--
  29. * Fragment que lida com o cálculo da rota do usuário. Possui métodos para Dialogs e o método
  30. * em que a rota é calculada. A rota calculada retorna na forma de um ArrayList que contém
  31. * os caminhos daquela rota, cada um do tipo CaminhoRota.
  32. * <p/>
  33. * OBS: Como a Linha Lilás não faz nenhuma integração direta com o metrô, então nao faz sentido em incluir
  34. * esta linha no cálculo já que não seria possível achar rotas usando as linhas do metro com essa
  35. * linha especifica, que nao e interligada.
  36. * Created by Juliano
  37. */
  38. public class RotaFragment extends android.app.Fragment {
  39.  
  40. public static final int ARG_OS = 1;
  41. private ArrayList<CaminhoRota> rotaCalculada;
  42. private Context mContext;
  43. private LinhaMetro[] listalinhas;
  44. private EstacaoMetro[] listaEstacoes;
  45. private int linhaOrigem[];
  46. private int linhaDestino[];
  47. private TextView tvEstacaoOrigem;
  48. private TextView tvEstacaoDestino;
  49.  
  50. /** SOBRE VALORES DA ESCOLHA DO USUÁRIO!!*/
  51.  
  52. /**
  53. * linhaOrigem[] e linhaDestino[] são os vetores que armazenam a linha e a estação escolhida pelo usuario.
  54. * No primeiro índice de cada um (ou seja, linhaOrigem[0], por exemplo) fica armazenado o numero da Linha:
  55. * Valor | Linha Correspondente
  56. * <p/>
  57. * 1 Azul
  58. * 2 Verde
  59. * 3 Vermelha
  60. * 4 Amarela
  61. * <p/>
  62. * Já a segunda casa do vetor ([1]), fica armazenada a estação. O valor da estação varia de acordo com a linha. O
  63. * Os valores específicos das estações se encontram no ÍNDICE do vetor listaEstacoes[], e depende das linhas escolhidas
  64. * pelo usuário.
  65. * <p/>
  66. * <p/>
  67. * Ver os métodos:
  68. * carregarEstacoesMetroLinhaAzul() para valores das estações da Linha AZUL,
  69. * carregarEstacoesMetroLinhaVerde() para valroes das estações da Linha VERDE,
  70. * carregarEstacoesMetroLinhaVermelha() para valores das estações da Linha VERMELHA e
  71. * carregarEstacoesMetroLinhaAmarela() para valores das estações da Linha AMARELA.
  72. */
  73. @Override
  74. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  75. linhaOrigem = new int[2];
  76. linhaDestino = new int[2];
  77. linhaOrigem[1] = 30;
  78. linhaDestino[1] = 30;
  79. mContext = this.getActivity();
  80. View view = inflater.inflate(R.layout.fragment_rota, null);
  81. Button btLinhaOrigem = (Button) view.findViewById(R.id.btorigemlinha);
  82. Button btLinhaDestino = (Button) view.findViewById(R.id.btdestinolinha);
  83. Button btCalcularRota = (Button) view.findViewById(R.id.botCalcRota);
  84. tvEstacaoOrigem = (TextView) view.findViewById(R.id.tvEstacaoOrigem);
  85. tvEstacaoDestino = (TextView) view.findViewById(R.id.tvEstacaoDestinoShow);
  86.  
  87.  
  88. btLinhaOrigem.setOnClickListener(new View.OnClickListener() {
  89. @Override
  90. public void onClick(View v) {
  91. carregaLinhaMetro();
  92. showDialogLinhas(v);
  93. }
  94. });
  95. btLinhaDestino.setOnClickListener(new View.OnClickListener() {
  96. @Override
  97. public void onClick(View v) {
  98. carregaLinhaMetro();
  99. showDialogLinhas(v);
  100. }
  101. });
  102.  
  103.  
  104. btCalcularRota.setOnClickListener(new View.OnClickListener() {
  105. @Override
  106. public void onClick(View v) {
  107. verificarAcaoCalcRota();
  108. }
  109. });
  110. return view;
  111. }
  112.  
  113. /* Metodo que verifica se realmente o usuário escolheu corretamente as estações*/
  114. private void verificarAcaoCalcRota() {
  115. AlertDialog.Builder builderAviso = new AlertDialog.Builder(mContext);
  116. if (linhaOrigem[0] == 0) //Usuário não escolheu linha de Origem
  117. {
  118. builderAviso.setMessage("Escolha uma Linha Inicial!").show();
  119. } else if (linhaOrigem[1] == 30) //Usuário não escolheu estação de Origem
  120. {
  121. builderAviso.setMessage("Escolha uma Estação Inicial!").show();
  122. } else if (linhaDestino[0] == 0) //Uusuário não escolhei linha de Destino
  123. {
  124. builderAviso.setMessage("Escolha uma Linha de Destino!").show();
  125. } else if (linhaDestino[1] == 30) //Usuário não escolheu Estação de Destino
  126. {
  127. builderAviso.setMessage("Escolha uma Estação Final!").show();
  128. } else if ((linhaOrigem[0] == linhaDestino[0]) && (linhaOrigem[1] == linhaDestino[1])) {
  129. //NÃO É POSSÍVEL CALCULAR ROTA ENTRE DUAS ESTAÇÕES IGUAIS!
  130. //OBS: Ainda é possível calcular rota entre estações iguais porém de linhas diferentes!!
  131. builderAviso.setMessage("Não é Possivel calcular rota!!").show();
  132. } else {
  133. //O método deve retornar um Array rotaCalculada[] que deve possuir a rota já calculada.
  134. rotaCalculada = new ArrayList<CaminhoRota>();
  135. rotaCalculada = calcularRota(linhaOrigem, linhaDestino);
  136.  
  137. //Volta os valores para o Default
  138. linhaOrigem[0] = 0;
  139. linhaOrigem[1] = 30;
  140. linhaDestino[0] = 0;
  141. linhaDestino[1] = 30;
  142.  
  143. tvEstacaoOrigem.setText("----------");
  144. tvEstacaoOrigem.setTextColor(Color.parseColor("#000000"));
  145. tvEstacaoDestino.setText("----------");
  146. tvEstacaoDestino.setTextColor(Color.parseColor("#000000"));
  147.  
  148. EstacaoMetro[] listaEstacoesRota = montarRotaLayout(rotaCalculada);
  149. if (listaEstacoesRota == null) {
  150. builderAviso.setMessage("Não foi possível calcular sua rota! :(").show();
  151. }
  152. //METODO PARA MONTAR LIST PASSANDO COMO PARÂMETRO A ROTACalculada
  153. else {
  154. montarLayoutRota(listaEstacoesRota);
  155. }
  156. }
  157. }
  158.  
  159. /* Método que cria uma Dialog exibindo a rota calculada, na forma de uma listView. */
  160. private void montarLayoutRota(EstacaoMetro[] listaEstacoesRota) {
  161.  
  162. ListAdapter adapterRota = new EstacaoMetroAdapter(mContext, listaEstacoesRota);
  163. AlertDialog.Builder builder1 = new AlertDialog.Builder(mContext);
  164. int selected = -1; //Não seleciona nenhum item no início
  165. builder1.setCancelable(false);
  166. builder1.setNegativeButton("Fechar",
  167. new DialogInterface.OnClickListener() {
  168. @Override
  169. public void onClick(DialogInterface dialog,
  170. int which) {
  171. Toast.makeText(
  172. mContext,
  173. "~~~ HueLoc ~~~",
  174. Toast.LENGTH_SHORT)
  175. .show();
  176. }
  177. });
  178. builder1.setSingleChoiceItems(adapterRota, selected, new DialogInterface.OnClickListener() {
  179. @Override
  180. public void onClick(DialogInterface dialog, int which) {
  181.  
  182. }
  183. });
  184.  
  185. builder1.setTitle("HueLoc - Rota Calculada");
  186. AlertDialog alert = builder1.create();
  187. alert.show();
  188. }
  189.  
  190. /**
  191. * Método que 'transforma' os números do array 'rotaCalculada' na lista de estações daquela rota específica,
  192. * com seu nome e ícone específicos.
  193. */
  194. private EstacaoMetro[] montarRotaLayout(ArrayList<CaminhoRota> rotaCalculada) {
  195. ArrayList<CaminhoRota> rotaFinal = rotaCalculada;
  196. listaEstacoes = new EstacaoMetro[rotaFinal.size()];
  197.  
  198. for (int i = 0; i < rotaFinal.size(); i++) {
  199. if (rotaFinal.get(i).getNumLinha() == 1) {
  200. switch (rotaFinal.get(i).getNumEstacao()) {
  201. case 0:
  202. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tucuruvi");
  203. break;
  204. case 1:
  205. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Parada Inglesa");
  206. break;
  207. case 2:
  208. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Ayrton Senna");
  209. break;
  210. case 3:
  211. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santana");
  212. break;
  213. case 4:
  214. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Carandiru");
  215. break;
  216. case 5:
  217. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Portuguesa-Tietê");
  218. break;
  219. case 6:
  220. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Armênia");
  221. break;
  222. case 7:
  223. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tiradentes");
  224. break;
  225. case 8:
  226. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
  227. break;
  228. case 9:
  229. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Bento");
  230. break;
  231. case 10:
  232. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
  233. break;
  234. case 11:
  235. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Liberdade");
  236. break;
  237. case 12:
  238. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Sao Joaquim");
  239. break;
  240. case 13:
  241. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vergueiro");
  242. break;
  243. case 14:
  244. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
  245. break;
  246. case 15:
  247. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
  248. break;
  249. case 16:
  250. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vila Mariana");
  251. break;
  252. case 17:
  253. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santa Cruz");
  254. break;
  255. case 18:
  256. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Praça da Árvore");
  257. break;
  258. case 19:
  259. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Saúde");
  260. break;
  261. case 20:
  262. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Judas");
  263. break;
  264. case 21:
  265. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Conceição");
  266. break;
  267. case 22:
  268. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Jabaquara");
  269. break;
  270. }
  271. } else if (rotaFinal.get(i).getNumLinha() == 2) {
  272. switch (rotaFinal.get(i).getNumEstacao()) {
  273. case 0:
  274. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Madalena");
  275. break;
  276. case 1:
  277. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sumaré");
  278. break;
  279. case 2:
  280. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Clínicas");
  281. break;
  282. case 3:
  283. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Consolação");
  284. break;
  285. case 4:
  286. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Trianon - MASP");
  287. break;
  288. case 5:
  289. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Brigadeiro");
  290. break;
  291. case 6:
  292. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
  293. break;
  294. case 7:
  295. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
  296. break;
  297. case 8:
  298. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Chácara Klabin");
  299. break;
  300. case 9:
  301. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Imigrantes");
  302. break;
  303. case 10:
  304. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Alto do Ipiranga");
  305. break;
  306. case 11:
  307. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sacomã");
  308. break;
  309. case 12:
  310. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Tamanduateí");
  311. break;
  312. case 13:
  313. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Prudente");
  314. break;
  315. }
  316. } else if (rotaFinal.get(i).getNumLinha() == 3) {
  317. switch (rotaFinal.get(i).getNumEstacao()) {
  318. case 0:
  319. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Palmeiras-Barra Funda");
  320. break;
  321. case 1:
  322. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Marechal Deodoro");
  323. break;
  324. case 2:
  325. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Santa Cecília");
  326. break;
  327. case 3:
  328. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
  329. break;
  330. case 4:
  331. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Anhangabaú");
  332. break;
  333. case 5:
  334. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
  335. break;
  336. case 6:
  337. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Pedro II");
  338. break;
  339. case 7:
  340. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Brás");
  341. break;
  342. case 8:
  343. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Bresser-Mooca");
  344. break;
  345. case 9:
  346. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Belém");
  347. break;
  348. case 10:
  349. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Tatuapé");
  350. break;
  351. case 11:
  352. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Carrão");
  353. break;
  354. case 12:
  355. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Penha");
  356. break;
  357. case 13:
  358. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Vila Matilde");
  359. break;
  360. case 14:
  361. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Guilhermina-Esperança");
  362. break;
  363. case 15:
  364. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Patriarca");
  365. break;
  366. case 16:
  367. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Artur-Alvim");
  368. break;
  369. case 17:
  370. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Corinthians-Itaquera");
  371. break;
  372. }
  373. } else if (rotaFinal.get(i).getNumLinha() == 4) {
  374. switch (rotaFinal.get(i).getNumEstacao()) {
  375. case 0:
  376. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Butantã");
  377. break;
  378. case 1:
  379. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Pinheiros");
  380. break;
  381. case 2:
  382. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Faria Lima");
  383. break;
  384. case 3:
  385. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Paulista");
  386. break;
  387. case 4:
  388. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
  389. break;
  390. case 5:
  391. listaEstacoes[i] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
  392. break;
  393. }
  394. }
  395. }
  396. return listaEstacoes;
  397. }
  398.  
  399. /* Método que carrega o vetor listaLinhas com as linhas do metro, já com o ícone e o nome*/
  400. private void carregaLinhaMetro() {
  401. listalinhas = new LinhaMetro[4];
  402. listalinhas[0] = new LinhaMetro(getImg(R.drawable.icolinhazul), " Azul");
  403. listalinhas[1] = new LinhaMetro(getImg(R.drawable.icolinhaverde), " Verde");
  404. listalinhas[2] = new LinhaMetro(getImg(R.drawable.icolinhavermelha), " Vermelha");
  405. listalinhas[3] = new LinhaMetro(getImg(R.drawable.icolinhamarela), " Amarela");
  406.  
  407. }
  408.  
  409. /* Recebe um input inteiro e retorna um drawable*/
  410. private Drawable getImg(int res) {
  411. Drawable img = getResources().getDrawable(res);
  412. //TOD: change the bounds..LEFT/TOP/RIGHT/BOTOM
  413. img.setBounds(0, 0, 90, 20);
  414. return img;
  415. }
  416.  
  417. /* Mesma funcionalidade que o getImg, porém é específico da estação (imagens da estação)*/
  418. private Drawable getImg1(int res, String estacao) {
  419. Drawable img = getResources().getDrawable(res);
  420. //TOD: change the bounds..LEFT/TOP/RIGHT/BOTOM
  421. if (estacao.equals("Luz") || estacao.equals("Sé") || estacao.equals("paraiso")
  422. || estacao.equals("ana rosa") || estacao.equals("republica")) {
  423. img.setBounds(0, 0, 65, 27);
  424. } else {
  425. img.setBounds(0, 0, 28, 28);
  426. }
  427. return img;
  428. }
  429.  
  430.  
  431. /*Método que cria a Dialog da classe 'LinhasMetro. Também lida com os listeners e eventos de
  432. OnClick.*/
  433. private void showDialogLinhas(View v) {
  434. ListAdapter adapter = new LinhaMetroAdapter(mContext, listalinhas);
  435. AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
  436. final View vz = v;
  437. int selected = -1; //Não selecionada nada no início
  438. builder.setIcon(R.id.icon);
  439. builder.setCancelable(false);
  440. builder.setNegativeButton("Cancelar",
  441. new DialogInterface.OnClickListener() {
  442. @Override
  443. public void onClick(DialogInterface dialog,
  444. int which) {
  445. Toast.makeText(
  446. mContext,
  447. "Nenhuma linha selecionada",
  448. Toast.LENGTH_SHORT
  449. )
  450. .show();
  451. if (vz.getId() == R.id.btorigemlinha) {
  452. tvEstacaoOrigem.setText("----------");
  453. } else {
  454. tvEstacaoDestino.setText("----------");
  455. }
  456. }
  457. }
  458. );
  459.  
  460. final int ind;
  461. if (v.getId() == R.id.btorigemlinha) //Clicou no botão para escolher estaçao de origem
  462. {
  463. ind = 1;
  464.  
  465. builder.setTitle("Escolha a linha de Origem");
  466. builder.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
  467. @Override
  468. public void onClick(DialogInterface dialog, int which) {
  469. Toast.makeText(mContext, "Linha Escolhida: " + listalinhas[which].getName(), Toast.LENGTH_SHORT).show();
  470.  
  471. //Criar parâmetros corretos com base na seleção da linha do usuario e então chamar
  472. // o método para exibir as estações corretas
  473. if (listalinhas[which].getName().equals(" Azul")) {
  474. showDialogEstacoesMetro(1, ind);
  475. dialog.dismiss();
  476.  
  477. } else if (listalinhas[which].getName().equals(" Verde")) {
  478. showDialogEstacoesMetro(2, ind);
  479. dialog.dismiss();
  480.  
  481.  
  482. } else if (listalinhas[which].getName().equals(" Vermelha")) {
  483. showDialogEstacoesMetro(3, ind);
  484. dialog.dismiss();
  485.  
  486. } else if (listalinhas[which].getName().equals(" Amarela")) {
  487. showDialogEstacoesMetro(4, ind);
  488. dialog.dismiss();
  489.  
  490. }
  491. }
  492. });
  493. AlertDialog alert = builder.create();
  494. alert.show();
  495.  
  496. } else {
  497. ind = 2; //Lida com a Dialog de estações de destino
  498. builder.setTitle("Escolha a linha de Destino");
  499. builder.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
  500. @Override
  501. public void onClick(DialogInterface dialog, int which) {
  502. Toast.makeText(mContext, "Linha Escolhida: " + listalinhas[which].getName(), Toast.LENGTH_SHORT).show();
  503. //chamar método correto baseado na estação escolhida
  504. if (listalinhas[which].getName().equals(" Azul")) {
  505. showDialogEstacoesMetro(1, ind);
  506. dialog.dismiss();
  507.  
  508. } else if (listalinhas[which].getName().equals(" Verde")) {
  509. showDialogEstacoesMetro(2, ind);
  510. dialog.dismiss();
  511.  
  512. } else if (listalinhas[which].getName().equals(" Vermelha")) {
  513. showDialogEstacoesMetro(3, ind);
  514. dialog.dismiss();
  515.  
  516. } else if (listalinhas[which].getName().equals(" Amarela")) {
  517. showDialogEstacoesMetro(4, ind);
  518. dialog.dismiss();
  519.  
  520. }
  521.  
  522. }
  523. });
  524. AlertDialog alert = builder.create();
  525. alert.show();
  526. }
  527.  
  528.  
  529. }
  530.  
  531. /**
  532. * METODO DAS ESTAÇÕES
  533. * Cria Dialog das estações de metrô de acordo com a linha escolhida
  534. */
  535. private int showDialogEstacoesMetro(int numLinha, int ind) {
  536. final int indicador;
  537. indicador = ind;
  538. if (indicador == 1) {
  539. linhaOrigem[0] = numLinha;
  540. }
  541. if (indicador == 2) {
  542. linhaDestino[0] = numLinha;
  543. }
  544.  
  545. switch (numLinha) { //Chama os métodos para carregar as estações de cada linha, dependendo da linha
  546. //escolhida.
  547. case 1:
  548. carregarEstacoesMetroLinhaAzul();
  549. break;
  550. case 2:
  551. carregarEstacoesMetroLinhaVerde();
  552. break;
  553. case 3:
  554. carregarEstacoesMetroLinhaVermelha();
  555. break;
  556. case 4:
  557. carregarEstacoesMetroLinhaAmarela();
  558. break;
  559. }
  560. ListAdapter adapter = new EstacaoMetroAdapter(mContext, listaEstacoes);
  561. AlertDialog.Builder builder1 = new AlertDialog.Builder(mContext);
  562. int selected = -1;
  563. builder1.setCancelable(false);
  564. builder1.setNegativeButton("Cancelar",
  565. new DialogInterface.OnClickListener() {
  566. @Override
  567. public void onClick(DialogInterface dialog,
  568. int which) {
  569. Toast.makeText(
  570. mContext,
  571. "Nenhuma estação selecionada",
  572. Toast.LENGTH_SHORT)
  573. .show();
  574. if (indicador == 1) {
  575. linhaOrigem[0] = 0;
  576. linhaOrigem[1] = 30;
  577. tvEstacaoOrigem.setText("----------");
  578. tvEstacaoOrigem.setTextColor(Color.parseColor("#000000"));
  579.  
  580. }
  581. if (indicador == 2) {
  582. linhaDestino[0] = 0;
  583. linhaDestino[1] = 30;
  584. tvEstacaoDestino.setText("----------");
  585. tvEstacaoDestino.setTextColor(Color.parseColor("#000000"));
  586. }
  587. }
  588. });
  589.  
  590. builder1.setTitle("Escolha a Estação:");
  591. builder1.setSingleChoiceItems(adapter, selected, new DialogInterface.OnClickListener() {
  592. @Override
  593. public void onClick(DialogInterface dialog, int which) {
  594. Toast.makeText(mContext, "Estação Escolhida: " + listaEstacoes[which].getNomeEstacao(), Toast.LENGTH_SHORT).show();
  595. dialog.dismiss();
  596. if (indicador == 1) { //Caso esteja escolhendo linha de Origem
  597. linhaOrigem[1] = which;
  598. tvEstacaoOrigem.setText(listaEstacoes[which].getNomeEstacao());
  599. if (listaEstacoes[which].getNomeEstacao().length() >= 22) {
  600. tvEstacaoOrigem.setTextSize(18);
  601. } else {
  602. tvEstacaoOrigem.setTextSize(22);
  603. }
  604. switch (linhaOrigem[0]) {//Muda as cores da TextView de acordo com a Linha.
  605. case 1:
  606. tvEstacaoOrigem.setTextColor(Color.parseColor("#000CB5"));
  607. break;
  608. case 2:
  609. tvEstacaoOrigem.setTextColor(Color.parseColor("#00631C"));
  610. break;
  611. case 3:
  612. tvEstacaoOrigem.setTextColor(Color.parseColor("#E20008"));
  613. break;
  614. case 4:
  615. tvEstacaoOrigem.setTextColor(Color.parseColor("#ACA808"));
  616. break;
  617.  
  618. }
  619. }//end indicador(1) if
  620. if (indicador == 2) {//Caso esteja escolhendo linha de Destino
  621. linhaDestino[1] = which;
  622. tvEstacaoDestino.setText(listaEstacoes[which].getNomeEstacao());
  623. if (listaEstacoes[which].getNomeEstacao().length() >= 21) {
  624. tvEstacaoDestino.setTextSize(18);
  625. } else {
  626. tvEstacaoDestino.setTextSize(22);
  627. }
  628. switch (linhaDestino[0]) {//Muda as cores da TextView de acordo com a Linha.
  629. case 1:
  630. tvEstacaoDestino.setTextColor(Color.parseColor("#000CB5"));
  631. break;
  632. case 2:
  633. tvEstacaoDestino.setTextColor(Color.parseColor("#00631C"));
  634. break;
  635. case 3:
  636. tvEstacaoDestino.setTextColor(Color.parseColor("#E20008"));
  637. break;
  638. case 4:
  639. tvEstacaoDestino.setTextColor(Color.parseColor("#ACA808"));
  640. break;
  641.  
  642. }
  643. }
  644. }
  645.  
  646. }
  647. );
  648. AlertDialog alert = builder1.create(); //Cria a Dialog
  649. alert.show(); //Mostra a Dialog
  650.  
  651. if (indicador == 1) { //retorna a Estação de Origem
  652. return linhaOrigem[1];
  653. } else { // retorna a Estação de Destino
  654. return linhaDestino[1];
  655. }
  656. }
  657.  
  658. //Métodos para carregar a lista das estações de cada linha para a DialogInterface.
  659. //Contém os valores de cada estação.
  660. private void carregarEstacoesMetroLinhaAzul() {
  661.  
  662. listaEstacoes = new EstacaoMetro[23];
  663. listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tucuruvi");
  664. listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Parada Inglesa");
  665. listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Ayrton Senna");
  666. listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santana");
  667. listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Carandiru");
  668. listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Portuguesa-Tietê");
  669. listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Armênia");
  670. listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Tiradentes");
  671. listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
  672. listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Bento");
  673. listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
  674. listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Liberdade");
  675. listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Sao Joaquim");
  676. listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vergueiro");
  677. listaEstacoes[14] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
  678. listaEstacoes[15] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
  679. listaEstacoes[16] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Vila Mariana");
  680. listaEstacoes[17] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Santa Cruz");
  681. listaEstacoes[18] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Praça da Árvore");
  682. listaEstacoes[19] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Saúde");
  683. listaEstacoes[20] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " São Judas");
  684. listaEstacoes[21] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Conceição");
  685. listaEstacoes[22] = new EstacaoMetro(getImg1(R.drawable.estacaoum, ""), " Jabaquara");
  686.  
  687. }
  688.  
  689. //Carrega estações da Linha Verde
  690. private void carregarEstacoesMetroLinhaVerde() {
  691.  
  692. listaEstacoes = new EstacaoMetro[14];
  693. listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Madalena");
  694. listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sumaré");
  695. listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Clínicas");
  696. listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Consolação");
  697. listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Trianon - MASP");
  698. listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Brigadeiro");
  699. listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "paraiso"), " Paraíso");
  700. listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaoparaisoanarosa, "ana rosa"), " Ana Rosa");
  701. listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Chácara Klabin");
  702. listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Imigrantes");
  703. listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Alto do Ipiranga");
  704. listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Sacomã");
  705. listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Tamanduateí");
  706. listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaodois, ""), " Vila Prudente");
  707.  
  708. }
  709.  
  710.  
  711. //Carrega estações da linha Vermelha
  712. private void carregarEstacoesMetroLinhaVermelha() {
  713.  
  714. listaEstacoes = new EstacaoMetro[18];
  715. listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Palmeiras-Barra Funda");
  716. listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Marechal Deodoro");
  717. listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Santa Cecília");
  718. listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
  719. listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Anhangabaú");
  720. listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaose, "Sé"), " Sé");
  721. listaEstacoes[6] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Pedro II");
  722. listaEstacoes[7] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Brás");
  723. listaEstacoes[8] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Bresser-Mooca");
  724. listaEstacoes[9] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Belém");
  725. listaEstacoes[10] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Tatuapé");
  726. listaEstacoes[11] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Carrão");
  727. listaEstacoes[12] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Penha");
  728. listaEstacoes[13] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Vila Matilde");
  729. listaEstacoes[14] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Guilhermina-Esperança");
  730. listaEstacoes[15] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Patriarca");
  731. listaEstacoes[16] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Artur-Alvim");
  732. listaEstacoes[17] = new EstacaoMetro(getImg1(R.drawable.estacaotres, ""), " Corinthians-Itaquera");
  733.  
  734.  
  735. }
  736.  
  737. //Carrega estações da linha Amarela
  738. private void carregarEstacoesMetroLinhaAmarela() {
  739.  
  740. listaEstacoes = new EstacaoMetro[6];
  741. listaEstacoes[0] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Butantã");
  742. listaEstacoes[1] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Pinheiros");
  743. listaEstacoes[2] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Faria Lima");
  744. listaEstacoes[3] = new EstacaoMetro(getImg1(R.drawable.estacaoquatro, ""), " Paulista");
  745. listaEstacoes[4] = new EstacaoMetro(getImg1(R.drawable.estacaorepublica, "republica"), " República");
  746. listaEstacoes[5] = new EstacaoMetro(getImg1(R.drawable.estacaoluz, "Luz"), " Luz");
  747. }
  748.  
  749. @Override
  750. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  751. super.onActivityCreated(savedInstanceState);
  752. }
  753.  
  754.  
  755. /**
  756. * -> MÉTODO PARA CÁLCULO DE ROTA <-
  757. * Cálculo de rota é feito em uma LONGA sequência de laços condicionais,
  758. * loops FOR e verificação de interconexões! ->HARDCODED
  759. * <p/>
  760. * <p/>
  761. * CADA possivel interação entre linhas é tratada em partes diferentes do método.
  762. * TODO: Melhorar legibilidade do método
  763. */
  764.  
  765.  
  766. public ArrayList<CaminhoRota> calcularRota(int linhaOrigem[], int linhaDestino[]) {
  767. //Rotas Linha x - Linha x
  768. if (linhaOrigem[0] == 1 && linhaDestino[0] == 4 && linhaDestino[1] == 5) {
  769. linhaDestino[0] = 1;
  770. linhaDestino[1] = 8;
  771. } else if (linhaOrigem[0] == 1 && linhaDestino[0] == 3 && linhaDestino[1] == 5) {
  772. linhaDestino[0] = 1;
  773. linhaDestino[1] = 10;
  774. } else if (linhaOrigem[0] == 1 && linhaDestino[0] == 2 && (linhaDestino[1] == 6 || linhaDestino[1] == 7)) {
  775. linhaDestino[0] = 1;
  776. if (linhaDestino[1] == 6) {
  777. linhaDestino[1] = 14;
  778. } else {
  779. linhaDestino[1] = 15;
  780. }
  781. } else if (linhaOrigem[0] == 2 && linhaDestino[0] == 1 && (linhaDestino[1] == 14 || linhaDestino[1] == 15)) {
  782. if (linhaOrigem[0] == 2 && linhaDestino[0] == 1 && (linhaOrigem[1] == 6 || linhaOrigem[1] == 7)) {
  783. linhaOrigem[0] = 1;
  784. if (linhaOrigem[1] == 6) {
  785. linhaOrigem[1] = 14;
  786. } else {
  787. linhaOrigem[1] = 15;
  788. }
  789. } else if (linhaDestino[1] == 14) {
  790. linhaDestino[1] = 6;
  791. } else {
  792. linhaDestino[1] = 7;
  793. }
  794.  
  795. } else if (linhaOrigem[0] == 3 && linhaDestino[0] == 4 && linhaDestino[1] == 4) {
  796. linhaDestino[0] = 3;
  797. linhaDestino[1] = 3;
  798. } else if (linhaOrigem[0] == 3 && linhaDestino[0] == 1 && linhaDestino[1] == 10) {
  799. linhaDestino[0] = 3;
  800. linhaDestino[1] = 5;
  801. } else if (linhaOrigem[0] == 4 && linhaDestino[0] == 3 && linhaDestino[1] == 3) {
  802. linhaDestino[0] = 4;
  803. linhaDestino[1] = 4;
  804. } else if ((linhaOrigem[0] == 4 && linhaDestino[0] == 1 && linhaDestino[1] == 8)) {
  805. linhaDestino[0] = 4;
  806. linhaDestino[1] = 5;
  807. }
  808. if (linhaOrigem[0] == linhaDestino[0]) {
  809. /**início if. São duas estações da mesma linha.*/
  810.  
  811.  
  812. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  813.  
  814. //Primeira estação
  815. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  816. if (rota.get(0).getNumEstacao() > linhaDestino[1]) {
  817. for (int i = 1; i < (rota.get(0).getNumEstacao() - linhaDestino[1]); i++) {
  818. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  819. }
  820. } else {
  821. for (int i = 1; i < (linhaDestino[1] - rota.get(0).getNumEstacao()); i++) {
  822. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  823. }
  824. }
  825. rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  826. return rota;
  827. } else {
  828.  
  829. /**LINHA AZUL PARA LINHA VERDE*/
  830. if (linhaOrigem[0] == 1 && linhaDestino[0] == 2) {
  831. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  832.  
  833. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  834. if (rota.get(0).getNumEstacao() > 15) {
  835. for (int i = 1; i < rota.get(0).getNumEstacao() - 15; i++) {
  836. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  837. }
  838. rota.add(new CaminhoRota(linhaOrigem[0], 15));//Ana Rosa
  839. } else //Se estiver antes de ana rosa/ paraíso
  840. {
  841. for (int i = 1; i < 14 - rota.get(0).getNumEstacao(); i++) {
  842. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  843. }
  844. rota.add(new CaminhoRota(linhaOrigem[0], 14));
  845. }
  846. if (linhaDestino[1] < 6) {
  847.  
  848. for (int i = 1; i < 6 - linhaDestino[1]; i++) {
  849. rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
  850. }
  851. } else {
  852. rota.add(new CaminhoRota(linhaOrigem[0], 15));
  853. for (int i = 1; i < linhaDestino[1] - 7; i++) {
  854. rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
  855. }
  856. }
  857. rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  858. return rota;
  859. }//fim if linha origem AZUL - linha destino Verde
  860. /**LINHA AZUL PARA LINHA VERMELHA*/
  861. else if (linhaOrigem[0] == 1 && linhaDestino[0] == 3) {
  862. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  863. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  864. if (rota.get(0).getNumEstacao() > 10) {
  865. for (int i = 1; i < rota.get(0).getNumEstacao() - 10; i++) {
  866. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  867. }
  868. } else //Se estiver antes da sé
  869. {
  870. for (int i = 1; i < 10 - rota.get(0).getNumEstacao(); i++) {
  871. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  872. }
  873. }
  874. rota.add(new CaminhoRota(linhaOrigem[0], 10));//Sé
  875. if (linhaDestino[1] < 5) {
  876. for (int i = 1; i < 5 - linhaDestino[1]; i++) {
  877. rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
  878. }
  879. } else {
  880. for (int i = 1; i < linhaDestino[1] - 5; i++) {
  881. rota.add(new CaminhoRota(linhaDestino[0], 5 + i));
  882. }
  883. }
  884. rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  885. return rota;
  886. }
  887. /**LINHA AZUL PARA LINHA AMARELA*/
  888. else if (linhaOrigem[0] == 1 && linhaDestino[0] == 4) {
  889. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  890. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  891. if (rota.get(0).getNumEstacao() > 8) {
  892. for (int i = 1; i < rota.get(0).getNumEstacao() - 8; i++) {
  893. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  894. }
  895. } else //Se estiver antes da luz
  896. {
  897. for (int i = 1; i < 8 - rota.get(0).getNumEstacao(); i++) {
  898. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  899. }
  900. }
  901. rota.add(new CaminhoRota(linhaOrigem[0], 8));//Luz
  902. if (linhaDestino[1] < 5) {
  903. for (int i = 1; i < 5 - linhaDestino[1]; i++) {
  904. rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
  905. }
  906. }
  907. rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  908. return rota;
  909. }
  910. /** LINHA VERDE PARA LINHA AZUL*/
  911. else if (linhaOrigem[0] == 2 && linhaDestino[0] == 1) {
  912. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  913. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  914. if (linhaOrigem[1] < 5 && (linhaDestino[1] < 11 || linhaDestino[1] > 4)) {
  915. if (linhaOrigem[1] <= 3) {
  916. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  917. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  918. }
  919. if (linhaDestino[1] != 3) {
  920. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  921. }
  922. } else {
  923. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  924. }
  925. rota.add(new CaminhoRota(4, 3));
  926. rota.add(new CaminhoRota(4, 4));
  927. if (linhaDestino[1] != 8) {
  928. rota.add(new CaminhoRota(4, 5));
  929. }
  930. if (linhaDestino[1] >= 8) {
  931. for (int i = 1; i < linhaDestino[1] - 8; i++) {
  932. rota.add(new CaminhoRota(linhaDestino[0], 8 + i));
  933. }
  934. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  935. return rota;
  936. } else {
  937. for (int i = 1; i < 8 - linhaDestino[1]; i++) {
  938. rota.add(new CaminhoRota(linhaDestino[0], 8 - i));
  939. }
  940. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  941. return rota;
  942. }
  943. }
  944.  
  945. if (rota.get(0).getNumEstacao() > 7) {
  946. for (int i = 1; i < rota.get(0).getNumEstacao() - 7; i++) {
  947. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  948. }
  949. rota.add(new CaminhoRota(linhaOrigem[0], 7));//Ana rosa
  950. } else //Se estiver antes da Paraíso ou igual
  951. {
  952. for (int i = 1; i < 6 - rota.get(0).getNumEstacao(); i++) {
  953. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  954. }
  955. if (linhaOrigem[1] != 6) {
  956. rota.add(new CaminhoRota(linhaOrigem[0], 6));
  957. }
  958. }
  959. if (linhaDestino[1] < 14) {
  960. for (int i = 1; i < 14 - linhaDestino[1]; i++) {
  961. rota.add(new CaminhoRota(linhaDestino[0], 14 - i));
  962. }
  963. } else {
  964. if (linhaOrigem[1] <= 6) {
  965. rota.add(new CaminhoRota(linhaDestino[0], 15));
  966. }
  967. for (int i = 1; i < linhaDestino[1] - 15; i++) {
  968. rota.add(new CaminhoRota(linhaDestino[0], 15 + i));
  969. }
  970. }
  971. rota.add(rota.size(), new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  972. return rota;
  973. }
  974. /**LINHA VERDE PARA LINHA VERMELHA*/
  975. else if (linhaOrigem[0] == 2 && linhaDestino[0] == 3) {
  976. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  977. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  978. if (rota.get(0).getNumEstacao() <= 3) {
  979. if (rota.get(0).getNumEstacao() == 3) {
  980. rota.add(new CaminhoRota(4, 3));
  981. rota.add(new CaminhoRota(4, 4));
  982. } else {
  983. for (int i = 1; i < 3 - rota.get(0).getNumEstacao(); i++) {
  984. rota.add(new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  985. }
  986. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  987. rota.add(new CaminhoRota(4, 3));
  988. rota.add(new CaminhoRota(4, 4));
  989. }
  990. } else if (rota.get(0).getNumEstacao() <= 6) {
  991. if (rota.get(0).getNumEstacao() < 6) {
  992. for (int i = 1; i < 6 - rota.get(0).getNumEstacao(); i++) {
  993. rota.add(new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() + i));
  994. }
  995. rota.add(new CaminhoRota(linhaOrigem[0], 6));
  996. rota.add(new CaminhoRota(1, 13));
  997. rota.add(new CaminhoRota(1, 12));
  998. rota.add(new CaminhoRota(1, 11));
  999. rota.add(new CaminhoRota(1, 10));//Sé
  1000. } else {
  1001. rota.add(new CaminhoRota(1, 13));
  1002. rota.add(new CaminhoRota(1, 12));
  1003. rota.add(new CaminhoRota(1, 11));
  1004. rota.add(new CaminhoRota(1, 10));//Sé
  1005. }
  1006. } else //estacao >> Ana rosa
  1007. {
  1008. if (rota.get(0).getNumEstacao() != 7) {
  1009. for (int i = 1; i < rota.get(0).getNumEstacao() - 7; i++) {
  1010. rota.add(i, new CaminhoRota(linhaOrigem[0], rota.get(0).getNumEstacao() - i));
  1011. }
  1012. rota.add(new CaminhoRota(linhaOrigem[0], 7));//Ana rosa
  1013. rota.add(new CaminhoRota(1, 14));
  1014. rota.add(new CaminhoRota(1, 13));
  1015. rota.add(new CaminhoRota(1, 12));
  1016. rota.add(new CaminhoRota(1, 11));
  1017. rota.add(new CaminhoRota(1, 10));//Sé
  1018. } else //estacao == ana rosa
  1019. {
  1020. rota.add(new CaminhoRota(1, 14));
  1021. rota.add(new CaminhoRota(1, 13));
  1022. rota.add(new CaminhoRota(1, 12));
  1023. rota.add(new CaminhoRota(1, 11));
  1024. rota.add(new CaminhoRota(1, 10));//Sé
  1025. }
  1026. }
  1027. if (rota.get(0).getNumEstacao() <= 3 && linhaDestino[1] >= 3) {
  1028. if (linhaDestino[1] == 3) {
  1029. return rota;
  1030. }
  1031. if (linhaDestino[1] > 3) {//LOOG
  1032. for (int i = linhaDestino[1] - 3; i >= 1; i--) {
  1033. if ((linhaDestino[1] - i) == 3) {
  1034. } else {
  1035. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1] - i));//CÓDIGO 11-i}
  1036. }
  1037. }
  1038. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1039. return rota;
  1040. }
  1041.  
  1042. } else if (linhaDestino[1] >= 5)//Destino = Sé ou maior
  1043. {
  1044. if (linhaDestino[1] == 5) {
  1045. return rota;
  1046. } else {
  1047. for (int i = linhaDestino[1] - 5; i >= 1; i--) {
  1048. if ((linhaDestino[1] - i) == 5) {
  1049. } else {
  1050. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1] - i));//CÓDIGO 11-i}
  1051. }
  1052. }
  1053. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1054. return rota;
  1055. }
  1056. } else {
  1057. if (linhaDestino[1] < 3 && linhaOrigem[1] <= 3) {
  1058. for (int i = 1; i < 3 - linhaDestino[1]; i++) {
  1059. rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
  1060. }
  1061. } else {
  1062. for (int i = 1; i < 5 - linhaDestino[1]; i++) {
  1063. rota.add(new CaminhoRota(linhaDestino[0], 5 - i));
  1064. }
  1065. }
  1066. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1067. return rota;
  1068.  
  1069. }
  1070. }
  1071. /**LINHA VERDE PARA LINHA AMARELA*/
  1072. else if (linhaOrigem[0] == 2 && linhaDestino[0] == 4) {
  1073. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1074. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1075. if (rota.get(0).getNumEstacao() <= 3) {
  1076. if (rota.get(0).getNumEstacao() == 3 && linhaDestino[1] == 3) //Consolação para paulista
  1077. {
  1078. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1079. return rota;
  1080. }
  1081. /*INFUNCIONAL NO MOMENTO
  1082. * if(linhaDestino[1]==5 && linhaOrigem[1]>=6)
  1083. {
  1084. for (int i = 1; i < linhaOrigem[1]-6; i++) {
  1085. rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]-i));
  1086. }
  1087. if(linhaOrigem[1]!=6){rota.add(new CaminhoRota(2,6));}
  1088. for (int i = 1; i < 14-8; i++) {
  1089. rota.add(new CaminhoRota(1,14-i));
  1090.  
  1091. }
  1092. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1093. return rota;
  1094. }*/
  1095. else {
  1096. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  1097. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1098. }
  1099. if (linhaOrigem[1] != 3) {
  1100. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  1101. }
  1102. }
  1103. } else {
  1104. for (int i = 1; i < linhaOrigem[1] - 3; i++) {
  1105. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1106. }
  1107. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  1108. }
  1109. if (linhaDestino[1] >= 3 || linhaDestino[1] < 3) {
  1110. rota.add(new CaminhoRota(linhaDestino[0], 3));
  1111. if (linhaDestino[1] == 3) {
  1112. return rota;
  1113. }
  1114. if (linhaDestino[1] > 3) {
  1115. for (int i = 1; i < linhaDestino[1] - 3; i++) {
  1116. rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
  1117. }
  1118. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1119. return rota;
  1120. } else {
  1121. for (int i = 1; i < 3 - linhaDestino[1]; i++) {
  1122. rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
  1123. }
  1124. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1125. return rota;
  1126. }
  1127.  
  1128. }
  1129. }
  1130. /**LINHA VERMELHA PARA LINHA AZUL*/
  1131. else if (linhaOrigem[0] == 3 && linhaDestino[0] == 1) {
  1132. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1133. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1134. if (rota.get(0).getNumEstacao() < 5) {
  1135. for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
  1136. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1137. }
  1138. rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
  1139. } else {
  1140. for (int i = 1; i < linhaOrigem[1] - 5; i++) {
  1141. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1142. }
  1143. if (linhaOrigem[1] != 5) {
  1144. rota.add(new CaminhoRota(linhaOrigem[0], 5));
  1145. } //Sé
  1146. }
  1147. if (linhaDestino[1] > 10) {
  1148. for (int i = 1; i < linhaDestino[1] - 10; i++) {
  1149. rota.add(new CaminhoRota(linhaDestino[0], 10 + i));
  1150. }
  1151. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1152. return rota;
  1153. } else {
  1154. for (int i = 1; i < 10 - linhaDestino[1]; i++) {
  1155. rota.add(new CaminhoRota(linhaDestino[0], 10 - i));
  1156. }
  1157. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1158. return rota;
  1159. }
  1160. }
  1161. /**LINHA VERMELHA PARA LINHA VERDE*/
  1162. else if (linhaOrigem[0] == 3 && linhaDestino[0] == 2) {
  1163. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1164. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1165. if (linhaDestino[1] <= 3 && linhaOrigem[1] <= 3)//não vai
  1166. {
  1167. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  1168. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1169. }
  1170. rota.add(new CaminhoRota(linhaOrigem[0], 3));//República
  1171. rota.add(new CaminhoRota(4, 3));//Paulista
  1172. rota.add(new CaminhoRota(2, 3));//Consolação
  1173. if (linhaDestino[1] == 3) {
  1174. return rota;
  1175. } else {
  1176. for (int i = 1; i < 3 - linhaDestino[1]; i++) {
  1177. rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
  1178. }
  1179. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1180. return rota;
  1181. }
  1182. } else if (linhaOrigem[1] >= 5 || linhaOrigem[1] == 4) //NÃO VAI
  1183. {
  1184.  
  1185. if (linhaOrigem[1] == 4) {
  1186. rota.add(new CaminhoRota(linhaOrigem[0], 5));
  1187. }//SÉ
  1188. else {
  1189. for (int i = 1; i < linhaOrigem[1] - 5; i++) {
  1190. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1191. }
  1192. if (linhaOrigem[1] != 5) {
  1193. rota.add(new CaminhoRota(linhaOrigem[0], 5));
  1194. } //Sé
  1195. }
  1196. rota.add(new CaminhoRota(1, 11));
  1197. rota.add(new CaminhoRota(1, 12));
  1198. rota.add(new CaminhoRota(1, 13));
  1199. rota.add(new CaminhoRota(1, 14));
  1200.  
  1201. if (linhaDestino[1] >= 7) {
  1202. rota.add(new CaminhoRota(2, 7));
  1203. if (linhaDestino[1] == 7) {
  1204. return rota;
  1205. } else {
  1206. for (int i = 1; i < linhaDestino[1] - 7; i++) {
  1207. rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
  1208. }
  1209. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1210. return rota;
  1211. }
  1212. } else {
  1213. if (linhaDestino[1] == 6) {
  1214. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1215. return rota;
  1216. } else {
  1217. for (int i = 1; i < 6 - linhaDestino[1]; i++) {
  1218. rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
  1219. }
  1220. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1221. return rota;
  1222. }
  1223. }
  1224.  
  1225. } else {
  1226. for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
  1227. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1228. }
  1229. rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
  1230. rota.add(new CaminhoRota(1, 11));
  1231. rota.add(new CaminhoRota(1, 12));
  1232. rota.add(new CaminhoRota(1, 13));
  1233. rota.add(new CaminhoRota(1, 14));
  1234. if (linhaDestino[1] >= 7) {
  1235. if (linhaDestino[1] == 7) {
  1236. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1237. return rota;
  1238. } else {
  1239. for (int i = 1; i < linhaDestino[1] - 7; i++) {
  1240. rota.add(new CaminhoRota(linhaDestino[0], 7 + i));
  1241. }
  1242. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1243. return rota;
  1244. }
  1245. } else {
  1246. for (int i = 1; i < 6 - linhaDestino[1]; i++) {
  1247. rota.add(new CaminhoRota(linhaDestino[0], 6 - i));
  1248. }
  1249. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1250. return rota;
  1251. }
  1252.  
  1253. }
  1254. }
  1255. /**LINHA VERMELHA PARA LINHA AMARELA*/
  1256. else if (linhaOrigem[0] == 3 && linhaDestino[0] == 4) {
  1257. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1258. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1259. if (rota.get(0).getNumEstacao() < 3) {
  1260. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  1261. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1262. }
  1263. rota.add(new CaminhoRota(linhaOrigem[0], 3));//República
  1264. } else {
  1265. if (linhaOrigem[1] >= 5 && linhaDestino[1] == 5) {
  1266. for (int i = 1; i < linhaOrigem[1] - 5; i++) {
  1267. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1268. }
  1269. if (linhaOrigem[1] != 5) {
  1270. rota.add(new CaminhoRota(linhaOrigem[0], 5));
  1271. }
  1272.  
  1273. }
  1274. for (int i = 1; i < linhaOrigem[1] - 3; i++) {
  1275. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1276. }
  1277. if (linhaOrigem[1] != 3) {
  1278. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  1279. }
  1280. //República
  1281. }
  1282. if (linhaDestino[1] > 4) {
  1283. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1284. return rota;
  1285. } else {
  1286. for (int i = 1; i < 4 - linhaDestino[1]; i++) {
  1287. rota.add(new CaminhoRota(linhaDestino[0], 4 - i));
  1288. }
  1289. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1290. return rota;
  1291. }
  1292. }
  1293. /**LINHA AMARELA PARA LINHA AZUL*/
  1294. else if (linhaOrigem[0] == 4 && linhaDestino[0] == 1) {
  1295. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1296. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1297. if (linhaDestino[1] > 11 && linhaOrigem[1] < 5) {
  1298. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  1299. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1300. }
  1301. if (linhaOrigem[1] != 3) {
  1302. rota.add(new CaminhoRota(linhaOrigem[0], 3));
  1303. }//Paulista
  1304. rota.add(new CaminhoRota(2, 3));
  1305. rota.add(new CaminhoRota(2, 4));
  1306. rota.add(new CaminhoRota(2, 5));
  1307. rota.add(new CaminhoRota(2, 6));
  1308. if (linhaDestino[1] == 14) {
  1309. return rota;
  1310. } else if (linhaDestino[1] < 14) {
  1311. for (int i = 1; i < 14 - linhaDestino[1]; i++) {
  1312. rota.add(new CaminhoRota(linhaDestino[0], 14 - i));
  1313. }
  1314. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1315. return rota;
  1316.  
  1317. } else {
  1318. rota.add(new CaminhoRota(2, 7));
  1319. if (linhaDestino[1] == 15) {
  1320. return rota;
  1321. }
  1322. for (int i = 1; i < linhaDestino[1] - 15; i++) {
  1323. rota.add(new CaminhoRota(linhaDestino[0], 15 + i));
  1324. }
  1325. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1326. return rota;
  1327. }
  1328.  
  1329. }
  1330. for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
  1331. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1332. }
  1333. if (linhaOrigem[1] != 5) {
  1334. rota.add(new CaminhoRota(linhaOrigem[0], 5));//LUZ
  1335. }
  1336. if (linhaDestino[1] > 8) {
  1337. for (int i = 1; i < linhaDestino[1] - 8; i++) {
  1338. rota.add(new CaminhoRota(linhaDestino[0], 8 + i));
  1339. }
  1340. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1341. return rota;
  1342.  
  1343. } else {
  1344.  
  1345. for (int i = 1; i < 8 - linhaDestino[1]; i++) {
  1346. rota.add(new CaminhoRota(linhaDestino[0], 8 - i));
  1347. System.out.println("ADICIONAA");
  1348. }
  1349. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1350. return rota;
  1351. }
  1352. }
  1353.  
  1354. /**LINHA AMARELA PARA LINHA VERDE*/
  1355. else if (linhaOrigem[0] == 4 && linhaDestino[0] == 2) {
  1356. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1357. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1358. if (rota.get(0).getNumEstacao() < 3) {
  1359. for (int i = 1; i < 3 - linhaOrigem[1]; i++) {
  1360. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1361. }
  1362. rota.add(new CaminhoRota(linhaOrigem[0], 3));//Paulista
  1363. rota.add(new CaminhoRota(2, 3));//Consolação
  1364. } else if (linhaOrigem[1] == 3) {
  1365. rota.add(new CaminhoRota(2, 3));//Consolação
  1366. } else {
  1367. for (int i = 1; i < linhaOrigem[1] - 3; i++) {
  1368. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1369. }
  1370. rota.add(new CaminhoRota(linhaOrigem[0], 3));//Paulista
  1371. rota.add(new CaminhoRota(2, 3));//Consolação
  1372. if (linhaDestino[1] == 3) {
  1373. return rota;
  1374. }
  1375. }
  1376. if (linhaDestino[1] == 3) {
  1377. } else if (linhaDestino[1] < 3) {
  1378. for (int i = 1; i < 3 - linhaDestino[1]; i++) {
  1379. rota.add(new CaminhoRota(linhaDestino[0], 3 - i));
  1380. }
  1381. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1382. return rota;
  1383. } else {
  1384. for (int i = 1; i < linhaDestino[1] - 3; i++) {
  1385. rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
  1386. }
  1387. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1388. return rota;
  1389. }
  1390. }
  1391. /**LINHA AMARELA PARA LINHA VERMELHA*/
  1392. else if (linhaOrigem[0] == 4 && linhaDestino[0] == 3) {
  1393. ArrayList<CaminhoRota> rota = new ArrayList<CaminhoRota>();
  1394. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1]));
  1395. if (rota.get(0).getNumEstacao() < 4) {
  1396. for (int i = 1; i < 4 - linhaOrigem[1]; i++) {
  1397. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] + i));
  1398. }
  1399. rota.add(new CaminhoRota(linhaOrigem[0], 4));//República
  1400. } else {
  1401. for (int i = 1; i < linhaOrigem[1] - 4; i++) {
  1402. rota.add(new CaminhoRota(linhaOrigem[0], linhaOrigem[1] - i));
  1403. }
  1404. rota.add(new CaminhoRota(linhaOrigem[0], 4));//República
  1405. }
  1406. if (linhaDestino[1] < 3) {
  1407. for (int i = 1; i < 3 - linhaDestino[1]; i++) {
  1408. rota.add(new CaminhoRota(linhaDestino[1], 3 - i));
  1409. }
  1410. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1411. return rota;
  1412. } else {
  1413. for (int i = 1; i < linhaDestino[1] - 3; i++) {
  1414. rota.add(new CaminhoRota(linhaDestino[0], 3 + i));
  1415. }
  1416. rota.add(new CaminhoRota(linhaDestino[0], linhaDestino[1]));
  1417. return rota;
  1418. }
  1419. }
  1420. //PADRÃO DE VERIFICAÇAO DE ROTA:
  1421. /*if(rota.get(0).getNumEstacao()<5)
  1422. {
  1423. //LINHA FINAL MAIOR QUE LINHA INICIAL
  1424. for (int i = 1; i < 5 - linhaOrigem[1]; i++) {
  1425. rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]+i));
  1426. }
  1427. rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
  1428. }
  1429. else
  1430. {
  1431. //Linha INICIAL MAIOR QUE A LINHA FINAL
  1432. for (int i = 1; i < linhaOrigem[1]-5; i++) {
  1433. rota.add(new CaminhoRota(linhaOrigem[0],linhaOrigem[1]-i));
  1434. }
  1435. rota.add(new CaminhoRota(linhaOrigem[0], 5)); //Sé
  1436. }
  1437. * */
  1438.  
  1439. }
  1440.  
  1441. return null;
  1442.  
  1443.  
  1444. }
  1445.  
  1446.  
  1447. @Override
  1448. public void setArguments(Bundle args) {
  1449. super.setArguments(args);
  1450. }
  1451. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement