Agregado codigo para resaltar todas las cartas iguales cuando se pone el mouse sobre ellas.
This commit is contained in:
parent
bc27726fbf
commit
882a258926
@ -1,14 +1,19 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div.cont-carta(@click="fnDescartar" style="display: inline-block")
|
div.cont-carta(
|
||||||
div.c-carta(v-if="valor === 0" :class="claseDora")
|
@click="fnDescartar"
|
||||||
|
style="display: inline-block"
|
||||||
|
@mouseenter="aplicarResaltadoCarta"
|
||||||
|
@mouseleave="quitarResaltadoCarta"
|
||||||
|
)
|
||||||
|
div.c-carta(v-if="valor === 0" :class="[claseDora, claseResaltado]")
|
||||||
div.c-carta-oculta(v-html="' '")
|
div.c-carta-oculta(v-html="' '")
|
||||||
div.c-carta(v-else-if="tipo === 0 || tipo === 1" :class="['carta-' + tipoCarta, claseDora]")
|
div.c-carta(v-else-if="tipo === 0 || tipo === 1" :class="['carta-' + tipoCarta, claseResaltado, claseDora]")
|
||||||
span.c-carta-numero {{ valorC }}
|
span.c-carta-numero {{ valorC }}
|
||||||
div.c-carta-img
|
div.c-carta-img
|
||||||
v-img-simbolo(:tipo="nombreSimbolo")
|
v-img-simbolo(:tipo="nombreSimbolo")
|
||||||
div.c-carta(v-else-if="tipo === 2 || tipo === 3 || tipo === 4 || tipo === 5" :class="['carta-' + tipoCarta, claseDora]")
|
div.c-carta(v-else-if="tipo === 2 || tipo === 3 || tipo === 4 || tipo === 5" :class="['carta-' + tipoCarta, claseResaltado, claseDora]")
|
||||||
img.img-dragon(:src="'/img/Dragon_' + colorDragon + '.webp'" :alt="'Dragon ' + colorDragon")
|
img.img-dragon(:src="'/img/Dragon_' + colorDragon + '.webp'" :alt="'Dragon ' + colorDragon")
|
||||||
div.c-carta(v-else :class="['carta-' + tipoCarta, claseDora]" v-html="valorC")
|
div.c-carta(v-else :class="['carta-' + tipoCarta, claseDora, claseResaltado]" v-html="valorC")
|
||||||
|
|
||||||
//
|
//
|
||||||
</template>
|
</template>
|
||||||
@ -40,16 +45,21 @@ export default defineComponent({
|
|||||||
escala: {
|
escala: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 1
|
default: 1
|
||||||
|
},
|
||||||
|
resaltarCarta: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
const {pH} = useDimensions();
|
const {pH} = useDimensions();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const pxesc = computed(() => pH.value + "px");
|
const pxesc = computed(() => pH.value + "px");
|
||||||
|
const valorR = computed(() => props.valor);
|
||||||
|
|
||||||
const {esOscuro} = getEsOscuro(store);
|
const {esOscuro} = getEsOscuro(store);
|
||||||
|
|
||||||
const tipo = computed<number>( () => (props.valor << 23) >>> 28);
|
const tipo = computed<number>( () => (valorR.value << 23) >>> 28);
|
||||||
const tipoCarta = computed<string>(() => {
|
const tipoCarta = computed<string>(() => {
|
||||||
switch (tipo.value) {
|
switch (tipo.value) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -77,7 +87,7 @@ export default defineComponent({
|
|||||||
switch (tipo.value) {
|
switch (tipo.value) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1: {
|
case 1: {
|
||||||
const valor = (props.valor << 27) >>> 28;
|
const valor = (valorR.value << 27) >>> 28;
|
||||||
return valor === 1? "A": valor;
|
return valor === 1? "A": valor;
|
||||||
}
|
}
|
||||||
case 6:
|
case 6:
|
||||||
@ -93,9 +103,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
const nombreSimbolo = computed(() => {
|
const nombreSimbolo = computed(() => {
|
||||||
if (tipo.value === 0) {
|
if (tipo.value === 0) {
|
||||||
return (((props.valor << 31) >>> 31) === 1)? "trebol": "pica";
|
return (((valorR.value << 31) >>> 31) === 1)? "trebol": "pica";
|
||||||
} else if (tipo.value === 1) {
|
} else if (tipo.value === 1) {
|
||||||
return (((props.valor << 31) >>> 31) === 1)? "corazon": "diamante";
|
return (((valorR.value << 31) >>> 31) === 1)? "corazon": "diamante";
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -115,7 +125,6 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const valorR = computed(() => props.valor);
|
|
||||||
const claseDora = ref("");
|
const claseDora = ref("");
|
||||||
const claseDoraWatcher = getClaseDora(valorR, store);
|
const claseDoraWatcher = getClaseDora(valorR, store);
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
@ -127,10 +136,28 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const claseResaltado = computed(() => {
|
||||||
|
if (!props.resaltarCarta) return "";
|
||||||
|
const valorPar = (valorR.value >>> 1) << 1;
|
||||||
|
return (valorPar === store.state.cartaResaltada)? "c-carta-resaltada": "";
|
||||||
|
});
|
||||||
|
|
||||||
const fnDescartar = () => {
|
const fnDescartar = () => {
|
||||||
props.fnDescartar!!(props.valor);
|
props.fnDescartar!!(valorR.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const aplicarResaltadoCarta = () => {
|
||||||
|
if (!props.resaltarCarta) return;
|
||||||
|
if (valorR.value <= 1) return;
|
||||||
|
const valorCarta = (valorR.value >>> 1) << 1;
|
||||||
|
store.commit("setCartaResaltada", valorCarta);
|
||||||
|
};
|
||||||
|
|
||||||
|
const quitarResaltadoCarta = () => {
|
||||||
|
if (!props.resaltarCarta) return;
|
||||||
|
store.commit("setCartaResaltada", -2);
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
tipo,
|
tipo,
|
||||||
tipoCarta,
|
tipoCarta,
|
||||||
@ -138,7 +165,10 @@ export default defineComponent({
|
|||||||
nombreSimbolo,
|
nombreSimbolo,
|
||||||
colorDragon,
|
colorDragon,
|
||||||
claseDora,
|
claseDora,
|
||||||
|
claseResaltado,
|
||||||
fnDescartar,
|
fnDescartar,
|
||||||
|
aplicarResaltadoCarta,
|
||||||
|
quitarResaltadoCarta,
|
||||||
pxesc
|
pxesc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,6 +178,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
<style lang="sass" vars="{pxesc, escala}">
|
<style lang="sass" vars="{pxesc, escala}">
|
||||||
|
|
||||||
|
.c-carta-resaltada
|
||||||
|
transform: translateY(-1rem)
|
||||||
|
|
||||||
.c-carta
|
.c-carta
|
||||||
position: relative
|
position: relative
|
||||||
font:
|
font:
|
||||||
@ -177,7 +210,6 @@ export default defineComponent({
|
|||||||
top: -95%
|
top: -95%
|
||||||
width: 100%
|
width: 100%
|
||||||
height: 100%
|
height: 100%
|
||||||
color: #ffb500
|
|
||||||
background-image: linear-gradient(135deg, rgba(210, 210, 210, 0.0) 0%, rgba(210, 210, 210, 0.0) 35%, rgba(210, 210, 210, 0.3) 45%, rgba(210, 210, 210, 0.9) 53%, rgba(210, 210, 210, 0.3) 57%, rgba(210, 210, 210, 0.0) 65%, rgba(210, 210, 210, 0.0) 100%)
|
background-image: linear-gradient(135deg, rgba(210, 210, 210, 0.0) 0%, rgba(210, 210, 210, 0.0) 35%, rgba(210, 210, 210, 0.3) 45%, rgba(210, 210, 210, 0.9) 53%, rgba(210, 210, 210, 0.3) 57%, rgba(210, 210, 210, 0.0) 65%, rgba(210, 210, 210, 0.0) 100%)
|
||||||
transition: transform 500ms
|
transition: transform 500ms
|
||||||
animation-duration: 5s
|
animation-duration: 5s
|
||||||
|
@ -6,6 +6,7 @@ const vuexLocal = new VuexPersistence({
|
|||||||
reducer(state: RiMaJonState) {
|
reducer(state: RiMaJonState) {
|
||||||
const datos = Object.assign({}, state);
|
const datos = Object.assign({}, state);
|
||||||
delete datos.dora;
|
delete datos.dora;
|
||||||
|
delete datos.cartaResaltada;
|
||||||
return datos;
|
return datos;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -15,7 +16,8 @@ export interface RiMaJonState {
|
|||||||
nombreUsuario: string | undefined,
|
nombreUsuario: string | undefined,
|
||||||
modoColor: string,
|
modoColor: string,
|
||||||
modoColorUsuario: string,
|
modoColorUsuario: string,
|
||||||
dora: [Array<number>, Array<number>]
|
dora: [Array<number>, Array<number>],
|
||||||
|
cartaResaltada: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export default createStore<RiMaJonState>({
|
export default createStore<RiMaJonState>({
|
||||||
@ -24,7 +26,8 @@ export default createStore<RiMaJonState>({
|
|||||||
nombreUsuario: undefined,
|
nombreUsuario: undefined,
|
||||||
modoColor: "auto",
|
modoColor: "auto",
|
||||||
modoColorUsuario: "claro",
|
modoColorUsuario: "claro",
|
||||||
dora: [[], []]
|
dora: [[], []],
|
||||||
|
cartaResaltada: -2
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
setIdUsuario(state, id) {
|
setIdUsuario(state, id) {
|
||||||
@ -44,6 +47,9 @@ export default createStore<RiMaJonState>({
|
|||||||
},
|
},
|
||||||
setDora(state, dora) {
|
setDora(state, dora) {
|
||||||
state.dora = dora;
|
state.dora = dora;
|
||||||
|
},
|
||||||
|
setCartaResaltada(state, valor) {
|
||||||
|
state.cartaResaltada = valor;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {},
|
actions: {},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
export const servidor = "0.0.0.0:8080"; // "rimajonb.araozu.dev"; // "0.0.0.0:8080"; //
|
export const servidor = "rimajonb.araozu.dev"; // "0.0.0.0:8080"; //
|
||||||
export const servidorF = `http://${servidor}`;
|
export const servidorF = `https://${servidor}`;
|
||||||
export const wsServidor = `ws://${servidor}`;
|
export const wsServidor = `wss://${servidor}`;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user