resultados_bkp.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. var estilo = { font: "40px Arial", fill: "#fff", align: "center" };
  2. var Resultados = new Phaser.Class({
  3. Extends: Phaser.Scene,
  4. initialize:
  5. function Resultados ()
  6. {
  7. Phaser.Scene.call(this, { key: 'resultados' });
  8. },
  9. preload: function ()
  10. {
  11. this.load.image('fundo', 'img/background.jpg');
  12. this.load.image('btVoltar', 'img/bto_voltar.png');
  13. this.load.image('iHealth', 'img/conquista.png');
  14. },
  15. create: function ()
  16. {
  17. // --- componentes da tela ---
  18. this.fundo = this.add.image(487, 775, 'fundo');
  19. const btoVoltar = this.add.image(500, 1300, 'btVoltar', { fill: '#0f0' })
  20. .setInteractive()
  21. .on('pointerdown', () => this.doVoltar() );
  22. this.grupo = this.add.group();
  23. //this.cursores = this.input.keyboard.createCursorKeys();
  24. //--- separa os registros de localização por ocorrências de caminhada ----
  25. var dbData = localStorage.getItem('Data'); // todos os registros de data
  26. var dbCoor = localStorage.getItem('Local');
  27. var arrDBData = dbData.split('|'); // registros separados por dia
  28. var arrDBCoor = dbCoor.split('|');
  29. var x1 = 1;
  30. var posImg = 0;
  31. var posTxt1 = 0;
  32. var posTxt2 = 0;
  33. do {
  34. //--- analisa o percurso e calcula tempo, distância e velocidade média ---
  35. var datafim = '';
  36. var coorfim = '';
  37. var distancia = 0;
  38. var tempo = 0;
  39. var velocidade = 0;
  40. var x2 = 0;
  41. var arrData = arrDBData[x1].split(','); // registros individuais de data
  42. var arrCoor = arrDBCoor[x1].split(','); // registros individuais de localização
  43. do {
  44. if (arrData[x2] != '' && arrData[x2] != null && arrData[x2] != 'null') {
  45. // --- calcula o tempo entre os registros ---
  46. var date1 = new Date(arrData[x2]);
  47. var date2 = new Date(datafim);
  48. if (date1.getDate() == date2.getDate() && date1.getMonth() == date2.getMonth() && date1.getYear() == date2.getYear()) { }
  49. else {
  50. if (!isNaN(date2)) {
  51. //Titulo.x = Titulo.x + posX;
  52. // --- início dos registros de um dia específico, mostra os resultados do dia anterior ---
  53. eval('var Destaque' + x1 + ' = this.add.image(' + posImg + ', 600, "iHealth");');
  54. eval('var Titulo' + x1 + ' = this.add.text(' + posTxt1 + ', 150, "CONQUISTA DESBLOQUEADA!", estilo);');
  55. eval('var Texto' + x1 + ' = this.add.text(' + posTxt2 + ', 480, "No dia ' + date1.getDate() + ' \\n\\n voce caminhou por \\n\\n' + parseFloat(distancia).toFixed(2) + ' metros!", estilo);');
  56. posImg = posImg + 500;
  57. posTxt1 = posTxt1 + 250;
  58. posTxt2 = posTxt2 + 330;
  59. }
  60. }
  61. if (isNaN(date2 - date1) == false) tempo = tempo + (date2 - date1);
  62. if (tempo < 0) tempo = tempo * (-1);
  63. // --- calcula a distância entre os regitros ---
  64. var PI = 3.14159265358979323846;
  65. if (arrCoor[x2].trim() != '' && coorfim.trim() != '' && (arrCoor[x2].trim() != coorfim.trim())) {
  66. var lat1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('la:')+4),(arrCoor[x2].indexOf('lo:')-6)));
  67. var lon1 = parseFloat(arrCoor[x2].substr((arrCoor[x2].indexOf('lo:')+4),arrCoor[x2].length));
  68. var lat2 = parseFloat(coorfim.substr((coorfim.indexOf('la:')+4),(coorfim.indexOf('lo:')-6)));
  69. var lon2 = parseFloat(coorfim.substr((coorfim.indexOf('lo:')+4),coorfim.length));
  70. rad = function(x) {return x*Math.PI/180;}
  71. var R = 6378.137; //Raio da Terra no km (WGS84)
  72. var dLat = rad( lat2 - lat1 );
  73. var dLong = rad( lon2 - lon1 );
  74. var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(lat1)) * Math.cos(rad(lat2)) * Math.sin(dLong/2) * Math.sin(dLong/2);
  75. var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  76. var d = R * c;
  77. distancia = distancia + (d*1000);
  78. }
  79. }
  80. datafim = arrData[x2];
  81. coorfim = arrCoor[x2];
  82. x2 = x2 + 1;
  83. } while (x2 < arrData.length); // cada um dos registros de localização
  84. // --- mostra os resultados do último dia ---
  85. x1 = x1 + 1;
  86. eval('var Destaque' + x1 + ' = this.add.image(' + posImg + ', 600, "iHealth");');
  87. eval('var Titulo' + x1 + ' = this.add.text(' + posTxt1 + ', 150, "CONQUISTA DESBLOQUEADA!", estilo);');
  88. eval('var Texto' + x1 + ' = this.add.text(' + posTxt2 + ', 480, "No dia ' + date1.getDate() + ' \\n\\n voce caminhou por \\n\\n' + parseFloat(distancia).toFixed(2) + ' metros!", estilo);');
  89. //velocidade = tempo / distancia;
  90. // apresentar os dados
  91. // pode ser um gráfico, pode ser um mapa de conquistas
  92. // mostra a projeção
  93. } while (x1 < arrDBData.length); // cada uma das caminhadas
  94. if (x1 <= 1) var Texto1 = this.add.text(posTxt1,150,'Comece suas caminhadas e veja aqui os resultados',estilo);
  95. else {
  96. for (x2 = 1; x2 <= x1; x2++) {
  97. eval('this.grupo.add(Destaque' + x2 + ')');
  98. eval('this.grupo.add(Titulo' + x2 + ')');
  99. eval('this.grupo.add(Texto' + x2 + ')');
  100. }
  101. }
  102. },
  103. update: function ()
  104. {
  105. //if (this.cursores.left.isDown) this.moveEsquerda();
  106. //if (this.cursores.right.isDown) this.moveDireita();
  107. },
  108. converteMes: function (mes)
  109. {
  110. if (mes == 'Jan') return '01';
  111. if (mes == 'Feb') return '02';
  112. if (mes == 'Mar') return '03';
  113. if (mes == 'Apr') return '04';
  114. if (mes == 'May') return '05';
  115. if (mes == 'Jun') return '06';
  116. if (mes == 'Jul') return '07';
  117. if (mes == 'Aug') return '08';
  118. if (mes == 'Sep') return '09';
  119. if (mes == 'Oct') return '10';
  120. if (mes == 'Nov') return '11';
  121. if (mes == 'Dec') return '12';
  122. },
  123. getDistanceFromLatLonInKm: function (position1, position2) {
  124. "use strict";
  125. var deg2rad = function (deg) { return deg * (Math.PI / 180); },
  126. R = 6371,
  127. dLat = deg2rad(position2.lat - position1.lat),
  128. dLng = deg2rad(position2.lng - position1.lng),
  129. a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
  130. + Math.cos(deg2rad(position1.lat))
  131. * Math.cos(deg2rad(position1.lat))
  132. * Math.sin(dLng / 2) * Math.sin(dLng / 2),
  133. c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  134. return ((R * c *1000).toFixed());
  135. },
  136. mostraTempo: function (tempo) {
  137. var difHrs = Math.floor((tempo % 86400000) / 3600000);
  138. var difMins = Math.round(((tempo % 86400000) % 3600000) / 60000);
  139. tempo = difHrs + 'h ' + difMins + 'm';
  140. },
  141. doVoltar: function ()
  142. {
  143. this.scene.start('inicio');
  144. },
  145. moveEsquerda: function ()
  146. {
  147. this.moveGrupo('-');
  148. this.cursores.left.isDown = false;
  149. },
  150. moveDireita: function ()
  151. {
  152. this.moveGrupo('+');
  153. this.cursores.right.isDown = false;
  154. },
  155. moveGrupo: function (direcao)
  156. {
  157. var veloc = 10;
  158. let resultados = this.grupo.getChildren();
  159. let qtdResultados = resultados.length;
  160. for (let i = 0; i < qtdResultados; i++) {
  161. if (direcao == '+') resultados[i].x += veloc;
  162. else resultados[i].x -= veloc;
  163. // faz parar quando sai da tela
  164. /*if (resultados[i].x >= this.enemyMaxY && resultados[i].speed > 0) {
  165. resultados[i].speed *= -1;
  166. } else if (resultados[i].x <= this.enemyMinY && resultados[i].speed < 0) {
  167. resultados[i].speed *= -1;*/
  168. }
  169. }
  170. });