Este manejo de clic en la unidad en realidad va a generar un método para cada una de ellas. Por lo tanto, va a crear un método que será llamado cuando esté listo, donde simplemente despachará una acción para seleccionar la entidad, la acción de seleccionar entidad. Simplemente va a establecer un ID seleccionado de lo que sea que haya clicado en ese momento. Y hemos añadido un poco de estado inicial aquí para null, que debería estar bien.
Y ahora cuando hacemos clic en él, y con un poco de magia extra de CSS para mostrar un poco de health en una barra de selección, ahora podemos hacer clic en él y hacer clic fuera, y hacer clic en él, y hacer clic fuera. ¿Quién no jugaría eso durante varias horas? ¿No es eso fantástico?
Ahora, si queremos poder hacer clic derecho para movernos, esto es muy similar a lo que puedes hacer clic derecho, tener un manejador de clic derecho, que es lo que hace este método de menú de contexto. Este es esencialmente tu método de clic derecho, si tuviera otro nombre. Y vamos a hacer lo mismo que hicimos para la unidad, donde para cada baldosa, le vamos a dar un manejador, donde vamos a manejar el clic derecho. Vamos a generar un nuevo método a partir de la X y la Y, y despachar este método. Esto es un poco más complicado que el otro, pero eso es porque queremos ir y encontrar la unidad seleccionada actualmente, y luego básicamente decirle que se mueva tomando la posición de esta nueva que acabamos de admitir, hemos clicado en una baldosa, queremos movernos allí. Y luego vamos a pasar por las unidades, actualizarla, y resetear el estado.
Así que ahora clic, boom, movimiento. Oh, eso es un poco rápido. Realmente no, eso parece injusto, y no parece muy realista para la era medieval tener teleportación todavía. Pero, como estamos moviéndolo solo usando variables de CSS, podemos establecer la transición a lineal, y de repente tenemos esta unidad en movimiento. ¿No es eso fantástico? Oh, en realidad. Bueno, ahora el problema con esto es, que se está moviendo suavemente, pero independientemente de cuánto se mueva, va a tomar un segundo, que es un poco demasiado largo. Lo que significa que si se mueve muy lejos, es super rápido, y cerca, super lento. Entonces, ¿cómo podemos cambiar esto? Bueno, podríamos establecer dinámicamente ese tiempo de transición de distancia basado en cuánto se ha movido. Así que ahora, si haces clic muy, muy lejos, la distancia será bastante larga. Y si haces clic muy cerca, será un tiempo bastante corto. Así que aquí hay un ejemplo de eso funcionando, donde ahora se está moviendo super lejos, y es un poco lento, y se mueve un poco, y es mucho más rápido. Mucho más consistente en la cantidad de tiempo. Pero entonces, si empiezas a hacer clic un poco más rápido, no está funcionando demasiado, y de repente esto no es exactamente lo que queremos. Estás haciendo clic aquí, estás haciendo clic en uno de ellos, y está estableciendo la posición. Haces clic en el siguiente lugar, acelera la animation, pero la unidad no se ha movido tanto. Y también, en realidad, si volvemos a ese desplazamiento que estaba sucediendo, en realidad solo se está desplazando cuando mueves el ratón. Así que si mueves el ratón al borde del marco, y no lo mueves en absoluto, no seguirá desplazándose por ti. Este no es realmente el comportamiento que quieres. Y la razón por la que esto está sucediendo es porque esa idea que tenía de usar ese useEffect como un bucle de juego, no está funcionando realmente, porque el useEffect solo se está ejecutando cuando realmente mueves tu ratón.
Comments