QUOTE (Lord Hiryu @ 15/8/2012, 23:08)
Ohhhh que puta caña!!! Se le puede poner la intro también a cada skin.....un mundo lleno de posibilidades!!!!
https://arcadeforever.forumfree.it/?t=54665004 jeje, ya sé, no hace falta que digas nada, tiempo ... tiempo
bueno pues eso, video en formato mng antes de cada emulador y lo de la imagen/video de ayuda tambien. Posiblemente haya sido lo mas facil de implementar de lo que llevo con esto. Tan solo una llamadita a una funcion int_clip pasandole la ruta al video y poco mas
güay, pero a mi me va el latigo y he mirado que hacia el int_clip y en ná tendremos animaciones, el caso es si esas animaciones tendran soporte para transparencias o no, creo que en video ni de coña, aunque por el codigo siempre que pinta algo me tropiezo con cosas jugando constantemente con el canal alpha de los png, colores y demas, a si que me agarro a esa esperanza.
Mas, ahhhhh, que convertir cualquier tipo de video (avi, wmv, ...) en mng que lee el advmenu y advmame lo tengo controlado, ufff, que paliza el otro dia prueba que te prueba y lee que te lee...
Me falta mirar como se crean desde cero con el gimp (fotograma a fotograma) para meterle transparencias y tal a ver si hay suerte...
Bueno, todo esto lo contaré mas tarde, ahora voy a por VES jejeje
----------------------------------
VESSSSSSSSSS, diff descagado pero ni porbado ni visto el codigo,...
Coñe, lo de la confirmacion de los grupos se ve chulo, a la saca. Y buen primer intento con el history por algun lado hay que empezar y ya que esta por ahi el run_help(...) pues se le hace un apaño para probar.
Te cuento un poco para que vayas dandole al tema ...
HISTORY
=======
Dos funciones principales, draw_history_scroll(...) que pinta el scroll/grid en una posicion y con un tamaño y tres argumentos para el "cuadradito que se desplaza"
pos -> posicion del cuadradito, empieza con pos = 0 luego 1, 2 ....
delta -> creo que son el numero de lineas por pagina, siempre constante
max -> numero total de lineas, tambien siempre constante
Vamos que cada vez que cambies de linea o de pagina hay que llamar a esta funcion con la nueva posicion
CODE
// pinta el grid/scroll
void draw_history_scroll(int x, int y, int dx, int dy, int pos, int delta, int max)
{
if (max <= 1)
return;
if (pos >= max)
pos = max - 1;
if (pos + delta > max)
delta = max - pos;
int y0 = pos * (dy-dx-1) / (max-1);
int y1 = dx + (pos+delta-1) * (dy-dx-1) / (max-1);
int_clear_alpha(x, y, dx, dy, COLOR_MENU_GRID.background);
int_clear_alpha(x, y+y0, dx, y1-y0+1, COLOR_MENU_GRID.foreground);
}
y draw_history_line(...) que pinta una linea en la posicion que le indiques
selected es un booleano que indica si la linea a pintar es la seleccionada o no
Pues a esta hay que llamarla cada vez que quieres pintar una linea
CODE
//pinta una linea
void draw_history_line(const string& slinea, int x, int y, int dx, bool selected)
{
string s = slinea;
bool in = false;
int ident = int_font_dx_get()/4; //margen izquierdo
if (ident < 2) ident = 2;
int_color color = selected ? COLOR_MENU_SELECT : COLOR_MENU_NORMAL;
int_color color_first = selected ? COLOR_MENU_TAG_SELECT : COLOR_MENU_TAG;
int_color color_in = selected ? COLOR_MENU_HIDDEN_SELECT : COLOR_MENU_HIDDEN;
int_clear_alpha(x, y, ident, int_font_dy_get(), color.background);
int_put_special_alpha(in, x + ident, y, dx - ident, s, color_first, color_in, color);
}
copypastea
Bueno, te cuento, el listado no es mas que un algoritmo que va pintando juego por juego aumentando la posicion en la coordenada y ...
Parto de que estamos en el run_history(...). pues a pintar
Por paginas:
tendras que crear unas cuantas variables y currarte el bucle para pintar linea a linea la primera pagina,
tras esto pintar el scroll con pas = 0, una vez pintado, aumentarle en uno para que la proxima vez pinte el cuadradito
una posicion mas abajo.
vale, ya tenemos la primera pagina, pues ahora habra que llamar alguna funcion que nos controle los eventos del teclado
del tipo key = even_tralala(...), por el codigo hay muchos, mira alguno de como funciona para el menu o el grupo...
luego vendra el swich(key) con los casos para segun la tecla que se ha pulsado haga una u otra cosa,
que se ha pulsado flecha-abajo pues incrementar, por ejemplo, una variable en la que guardas la posicion de la linea seleccionada y lo que tenga que hacer, y vuelve a pintar la nueva pagina.
Porque claro todo esto tendrá que estar dendro de otro bucle, por ejemplo un do, un while ...
jejeje, jejeje, jejeje
La cosa podria ir asín, mas o menos a grandisimos rasgos
CODE
void draw_history(...) {
int pos_select = 0;
int salto_linea = ...
int lineas_totales, lineas_por_pagina
pos = 0;
delta = creo que es lineas_por_pagina
max = lineas_totales
string texto_linea = "";
do {
for(linea_0 -> ultima_linea_pagina) {
texto_linea = recoger de alguna forma
draw_linea(pos_size, texto_linea, selected)
y += salto_linea
i++
}
draw_scroll(pos_size, pos, delta, max)
pos++
key = run_event_...(...)
swich(key)
case .........
}while(pos_select = lineas_totales)
}
juasssssss, ...... , jejeje, la parte de los eventos no se si iria ahí, si el do esta bien hecho o lo que sea, pero vamos, esa es la idea.
Ves, las primeras funciones que hay en el menu.cc van sobre todo esto de pintar el scroll y el listado, ademas hay varios de manejo de strings y tal... poco a poco, sin estrés... a currarse el algoritmo que eso es muy de pascual
Ale, a pasar la mañana con mi sobrinita. A ver como me cuida hoy, que la ultima vez no me dejó ganarla a nada
Salu2