diff --git a/Artbook/MinMpas.xcf b/Artbook/MinMpas.xcf
deleted file mode 100644
index 262d996..0000000
Binary files a/Artbook/MinMpas.xcf and /dev/null differ
diff --git a/Public/ecma/Mapeate.Base.ecma.js b/Public/ecma/Mapeate.Base.ecma.js
index 2a3007a..1777563 100644
--- a/Public/ecma/Mapeate.Base.ecma.js
+++ b/Public/ecma/Mapeate.Base.ecma.js
@@ -114,9 +114,9 @@ Mapeate.Base = function(mapeate, entradas){
innerText = mapeate.i18n(mensaje);
};
dialogo.querySelector("section").innerHTML = datos && typeof datos == "string" ? datos : (
- `
` + mapeate.i18n(mensaje + "_texto", datos) + `
`
+ `` + mapeate.i18n(mensaje + "_texto", datos) + `
` + (datos ? datos.final || `` : ``)
);
if(acciones){
@@ -132,7 +132,6 @@ Mapeate.Base = function(mapeate, entradas){
`);
((accion, i) => mapeate.precargar("[data-precarga=" + hash + "]", boton => {
- console.log(boton);
boton.removeAttribute("data-precarga");
boton.onclick = accion.accion;
!i && boton.focus();
diff --git a/Public/ecma/Mapeate.Mapas.ecma.js b/Public/ecma/Mapeate.Mapas.ecma.js
index 8ef7d10..bd37dc3 100644
--- a/Public/ecma/Mapeate.Mapas.ecma.js
+++ b/Public/ecma/Mapeate.Mapas.ecma.js
@@ -10,7 +10,10 @@ Mapeate.Mapas = function(mapeate, entradas){
sobreescribir_por_defecto,
sobreescribir_tipos_por_defecto,
mapas_hilo_de_proceso,
- fecha_inicio_juego;
+ fecha_inicio_juego,
+ tiempo_partida, tiempo_crudo_partida,
+ puntos_tiempo_respuesta, puntos_aciertos, puntos_fallos,
+ aciertos, fallos, puntos_total, finalizada_partida;
let selector = this.selector;
let global = this.global;
@@ -41,6 +44,9 @@ Mapeate.Mapas = function(mapeate, entradas){
sobreescribir_por_defecto = mapeate.configuracion(["mapas_sobreescribir", "sobreescribir"]);
sobreescribir_tipos_por_defecto = mapeate.configuracion(["mapas_tipos_sobreescribir", "mapas_sobreescribir", "sobreescribir"]);
+ puntos_tiempo_respuesta = mapeate.configuracion("puntos_tiempo_respuesta");
+ puntos_aciertos = mapeate.configuracion("puntos_aciertos");
+ puntos_fallos = mapeate.configuracion("puntos_fallos");
mapeate.ejecutar_array_asincrono([
"archivos_de_mapas_tipos_por_defecto",
@@ -77,8 +83,7 @@ Mapeate.Mapas = function(mapeate, entradas){
if(svg){
const limites = {},
- final = {},
- tiempo = Date.now() - fecha_inicio_juego;
+ final = {};
[limites.x, limites.y, limites.ancho, limites.alto] = svg.getAttribute("data-caja").split(" ").map(valor => Number(valor));
[final.x, final.y, final.ancho, final.alto] = mapeate.porcentuar(
@@ -106,12 +111,15 @@ Mapeate.Mapas = function(mapeate, entradas){
};
- mapeate.si_mismo.querySelector(".juego .temporizador>section").innerText = (
- ("00" + (tiempo / 3600000 >> 0)).slice(-2) + ":" +
- ("00" + (tiempo / 60000 % 60 >> 0)).slice(-2) + ":" +
- ("00" + (tiempo / 1000 % 60 >> 0)).slice(-2) + "." +
- ("00" + (tiempo % 1000 >> 0)).slice(-3)
- );
+ if(!finalizada_partida){
+ tiempo_crudo_partida = Date.now() - fecha_inicio_juego;
+ mapeate.si_mismo.querySelector(".juego .temporizador>section").innerText = tiempo_partida = (
+ ("00" + (tiempo_crudo_partida / 3600000 >> 0)).slice(-2) + ":" +
+ ("00" + (tiempo_crudo_partida / 60000 % 60 >> 0)).slice(-2) + ":" +
+ ("00" + (tiempo_crudo_partida / 1000 % 60 >> 0)).slice(-2) + "." +
+ ("00" + (tiempo_crudo_partida % 1000 >> 0)).slice(-3)
+ );
+ };
};
@@ -291,6 +299,10 @@ Mapeate.Mapas = function(mapeate, entradas){
mapeate.si_mismo.querySelectorAll(".juego fieldset:not(.mapa)").forEach(campo => campo.innerHTML += mapeate.vistas.coger("posicionador"));
fecha_inicio_juego = Date.now();
+ aciertos = 0;
+ fallos = 0;
+ puntos_total = 0;
+ finalizada_partida = false;
});
@@ -339,16 +351,43 @@ Mapeate.Mapas = function(mapeate, entradas){
seleccionado.setAttribute("data-seleccionado", false);
seleccionado.setAttribute("data-ok", true);
elemento.setAttribute("data-acertado", true);
- with(mapeate.si_mismo.querySelector(".juego .puntos section"))innerText = Number(innerText) + 5;
+ mapeate.si_mismo.querySelector(".juego .puntos section").innerText = puntos_total += puntos_aciertos;
+ aciertos ++;
if(siguiente){
siguiente.setAttribute("data-seleccionado", true);
seleccionado.parentNode.parentNode.scrollTop = siguiente.offsetTop - (siguiente.offsetHeight / 2) - (siguiente.parentNode.parentNode.offsetHeight / 2);
- }else
- mapeate.alerta("mapeate_mapas_ganaste", () => self.volver_al_menu(elemento, evento));
+ }else{
+
+ const total = aciertos + fallos,
+ porcentage_aciertos = aciertos / total,
+ marco_tiempo = tiempo_crudo_partida / aciertos,
+ puntos_tiempo = (
+ marco_tiempo < puntos_tiempo_respuesta[0] ? 1 :
+ marco_tiempo > puntos_tiempo_respuesta[1] ? 0 :
+ 1 * (puntos_tiempo_respuesta[1] - marco_tiempo - puntos_tiempo_respuesta[0]) / (puntos_tiempo_respuesta[1] - puntos_tiempo_respuesta[0])
+ );
+
+ finalizada_partida = true;
+
+ mapeate.alerta("mapeate_mapas_ganaste", () => self.volver_al_menu(elemento, evento), {
+ final : mapeate.vistas.coger("resumen_fin_juego", {
+ tiempo : tiempo_partida,
+ aciertos : aciertos,
+ fallos : fallos,
+ porcentaje_aciertos : (100 * porcentage_aciertos).toFixed(2),
+ porcentaje_fallos : (100 * fallos / total).toFixed(2),
+ puntos : puntos_total,
+ puntos_tiempo : (aciertos * puntos_tiempo).toFixed(2),
+ puntos_totales : (10 * porcentage_aciertos * puntos_tiempo).toFixed(2)
+ })
+ });
+
+ };
}else{
- with(mapeate.si_mismo.querySelector(".juego .puntos section"))innerText = Number(innerText) - 1;
+ mapeate.si_mismo.querySelector(".juego .puntos section").innerText = puntos_total -= puntos_fallos;
+ fallos ++;
mapeate.alerta("mapeate_mapas_mal_elegido");
};
diff --git a/Public/html/vistas.html b/Public/html/vistas.html
index 6232d23..79fea5f 100644
--- a/Public/html/vistas.html
+++ b/Public/html/vistas.html
@@ -192,5 +192,44 @@
+
+
+
+ -
+ {{tiempo}}
+ {tiempo}
+
+ -
+ {{aciertos}}
+ {aciertos}
+
+ -
+ {{fallos}}
+ {fallos}
+
+ -
+ {{porcentaje_fallos}}
+ {porcentaje_fallos}
+
+ -
+ {{porcentaje_aciertos}}
+ {porcentaje_aciertos}
+
+ -
+ {{puntos}}
+ {puntos}
+
+ -
+ {{puntos_tiempo}}
+ {puntos_tiempo}
+
+ -
+ {{puntos_totales}}
+ {puntos_totales}
+
+
+
+
+