domingo, 24 de febrero de 2019

Actualización de estado #3

Hoy domingo 24 de febrero de 2019, he grabado un vídeo para enseñar las adiciones que he ido haciendo al proyecto desde la semana pasada.


El termino definitivo para los elementos que representan bloques lógicos es "Pieza", el antiguo Elemento sigue haciendo de base pero ha sido adaptada a las mecánicas que faltaban en la primera demo.

A parte de los orgánulos básicos que tienen los elementos he creado el par Tip-Hole. (Referencia al par Electron-Hueco) Los tips son elementos especiales que comienzan siendo arrastrados y si se sueltan y no están conectados un hueco, se eliminan. La mayoría de huecos son estáticos, porque están hechos para una categoría especifica de Tips. Pero hay un componente recurrente que utiliza huecos dinámicamente.


Estoy hablando de el Constructor, usado para generar expresiones. Admite cualquier combinación de literales, variables, paréntesis, operadores lógicos y aritméticos. Sus huecos se adaptan al tamaño de la pieza, el constructor se adapta al tamaño de sus huecos y avisa a la pieza que lo contiene para que se actualice. Hay dos tipos de Hole en un Constructor; un hueco Daft y un hueco Punk, es broma se llama Linker. Los Linkers son operadores y los Daft son variables o literales. En general el usuario puede crear cualquier abominación, pero la secuencia Daft-Linker mantiene un poco de coherencia. Los paréntesis no encajan en ningún grupo, pueden ser colocados en cualquiera y no provocan alteración en la secuencia.



Para que los Tips encajen perfectamente se hace una aproximación fina hasta el centro del hueco. (La cual dio problemas por el tratamiento que tienen las posiciones en el código base)


Para conectar piezas se usa un mecanismo más avanzado de par Macho-Hembra. El puerto hembra, caracterizado por tener dos terminales a los extremos, tiene el trabajo de mover al macho. El puerto macho, con un terminal central, no se encarga de otra tarea más que realizar una aproximación fina hasta encajar perfectamente.
En realidad no hay piezas macho o hembra, sino que son los puertos los que tienen género. Una pieza puede estar conectada con un puerto macho, y tener a su vez otra pieza conectada por un puerto hembra.
Como resultado, si la hembra se mueve el macho le sigue; para desconectarlos hay que mover al macho.


El usuario arrastra las Piezas y Tips desde un generador ubicado en el lateral izquierdo. El Summoner tiene una forma y texto para identificar el elemento que generará cuando se pulsa en él. Existen colecciones de Summoners que aparecen dependido de el elemento seleccionado.



Adjunto una anécdota del problema que cariñosamente he apodado "Piezas gays"
Puestos a decir verdades; el nombre Tip no tiene nada que ver con lo que hace, se lo puse porque fue lo primero que se me vino a la cabeza al crear la clase. Lo mismo con Daft, le puse el nombre porque estaba escuchando Steam Machine.


He tenido que reconstruir todo el mecanismo de docking. Las cajas que se incrustan en los huecos (llamados Tip y Hole, respectivamente) tienen un mecanismo completamente diferente a las piezas grandes (Al final yamadas Pieces).
Al principio la conexión entre piezas era muy sencilla. Cuando terminas de arrastrar algo, el controlador miraba que puertos estaban en superposición y si coincidían en nombre (El puerto de uno tiene el mismo nombre que la otra pieza y vice versa) se lo decía a los objetos.
En la conexión hoy dos roles. La hembra (conexión con dos patillas) mueve consigo al macho, pero el macho puede moverse libremente. Si cuando el macho se mueve se aleja demasiado acaban desconectados.
Pero hay una pieza (el ExtraVar) que tiene un puerto macho que va al Declarator o a otro ExtraVar y un hembra al que se conecta otro ExtraVar. El problema es que la conexión solo se podía hacer si el puerto coincidía con la otra pieza. El ExtraVar solo podía conectarse a si mismo mediante Hembra-Hembra y os podéis imaginar como acaba eso.
He creado un objeto de tipo puerto que se configura como macho o hembra y que actúa de mediador entre las piezas. Ahora los puertos del ExtraVar son los dos del mismo tipo, pero uno macho y otro hembra.
Ahora está bien hecho.
Yo lo llamo "El error de las piezas gays"

No hay comentarios:

Publicar un comentario