Ver la versión completa : [Programación] Llamar a una función de BennuGD desde una librería.
saboteur
28/08/2010, 19:12
Pues eso. Me gustaría saber si es posible llamar desde una dll externa a una función en Bennu, para asignar un callback. Y si no es posible, ¿existe alguna manera de hacer algo similar?
SplinterGU
28/08/2010, 19:31
no te entiendo bien, vos queres hacer un programa en una dll C que ejecute una funcion bennugd?
o un callback de que tipo?
da mas detalles.
sera esto http://forum.bennugd.org/index.php?topic=147.0 ?
saboteur
28/08/2010, 20:15
Es algo parecido a eso, pero no sé si es exactamente lo que necesito.
A ver... por partes.
1) Estoy intentando integrar mi librería de Experiencia (hecha en C++) en Bennu.
2) La he dividido en dos partes. EXP_CORE tiene las funciones básicas para manejar los logros de cada perfil, guardarlos, etc... es una librería sin dependencias. EXP_SDL es otra librería que muestra los mensajes de EXP_CORE en la pantalla y depende de SDL.
3) Lo que hace EXP_CORE es que cuando se genera un evento (experiencia conseguida, login, etc...) llama a una función con este formato:
void exp_callback(int id, int value, char* title, char* desc);
4) Lo que quiero hacer en Bennu, es algo como esto:
........a) asignar a EXP_CORE la función exp_callback() que hay en EXP_SDL para que muestre los mensajes automáticamente (aún no sé si esto es posible, no conozco tanto Bennu).
........b) asignar a EXP_CORE una función en Bennu que reciba estos parámetros y se encargue de mostrar los mensajes. Algo como
FUNCION_BENNU(id,value,"Titulo","Descripcion");
En C++ no tengo problemas, ya que es sencillo abrir las librerías que hagan falta y utilizar las funciones que sean necesarias. Pero en Bennu es un poco más complicado.
No sé si has visto el programa EXP y los juegos que utilizan Experiencia (aquí está la última versión (http://www.gp32spain.com/foros/showthread.php?t=76331)). La cosa es que con el programa EXP te creas un perfil. Una vez hecho, desde cualquier juego que utilice la librería se accede al perfil activo y va guardando la Experiencia (logros) conseguida y muestra los mensajes en pantalla. El manejo de estos logros, guardarlos, controlar que no se repitan... lo hace EXP_CORE, mientras que los mensajes son mostrados por EXP_DSL.
Quiero conseguir lo mismo en Bennu, pero no sé muy bien si es capaz de recibir llamadas de una dll externa. Creo que el manejo de los logros lo puedo conseguir, pero me falta lo importante: mostrarlos por pantalla. Quiero que sea automático para que los programadores no se quemen la cabeza con una librería que no es suya.
PD: no sé si me he explicado bien... :o
SplinterGU
28/08/2010, 21:00
a ver... podes hacer un callback que se ejecute cuando el ciclo de frames se termino de ejecutar, o sea, en cada frame real completo.
de eso tenes muchos ejemplos, libkey, libmouse, librender.
pero para dibujar, tenes que dibujarlo sobre bennu, usando el surface "screen".
a menos que pongas un surface arriba de todo, pero eso no se si resultara, nunca lo hice.
O sobre un mapa, como la ETD :p
SplinterGU
28/08/2010, 22:18
O sobre un mapa, como la ETD :p
vi en el indice que habia un mensaje tuyo y ya me asustaste...
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.