Aquí está el código por si alguien quiere echarle un vistazo y tiene alguna sugerencia, o simplemente quiere alabar nuestras grandes virtudes de programador xD (Cartel de sarcasmo)
Habilidades.h
Habilidades.cpp
Básicamente lo que hemos buscado es la mayor facilidad de uso:
Ejemplo:
- Código: Seleccionar todo
//Habilidades.txt
// Cada evento esta compuesto de dos indicadores de bloque (EVENTO y FINEVENTO, un nombre con el que registrarlo, y una lista de palabras reservadas de Pilas que representan los eventos posibles
EVENTO
Seguir_Raton
PILAS_RATONMOVIDO
PILAS_BOTONRATONPULSADO
FINEVENTO
//En el juego, el usuario tendria que hacer lo siguiente
class Seguir_raton
{
// La funcion siempre debe tener este prototipo
void funcion_a_usar(vector_entidades objetos, sf::Event* evento)
{
....
}
}
// Mismo nombre que en el fichero Habilidades.txt
Habilidades.registrar("Seguir_Raton", &Seguir_raton::funcion_a_usar);
// y si luego quiere enseñar una habilidad a un objeto, deberá:
Habilidades.enseniar("Seguir_Raton", mono)
Además, existe la posibilidad de registrar habilidades enteras desde código, y tengo un par más de cosas pensadas. El tema de usar clases para las funciones, no es estrictamente necesario, pero es como lo tenía hugo en su diseño, y nos ha parecido una manera elegante de montarlo
Aprovecho para hacer una pregunta de diseño: como veis el hecho de proporcionar una serie de funciones, que reciban callbacks o señales para inicializar el juego, crear el loop del juego, etc... al estilo de como funciona los programas de windows o la libreria GLUT ( OnInit(boost::signal<void (int ancho, int alto, std:.string& titulo)> ) y cosas por el estilo)
PD: Tengo que cambiar el nombre de EVENTO por HABILIDAD en los scripts, asi que no quiero comentarios ofensivos contra mi persona por esto xD. Comentarios de código son bienvenidos, pero la mayoria ya los he visto, solo que por pereza y por estar al comienzo del desarrollo, no he cambiado. Lo que más me interesa es ver si alguien tiene un enfoque diferente y que sea mejor, o este os parece bien.