Sobre los mapas y save_map

Started by darío, October 12, 2008, 02:10:23 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

darío

Me ha surgido una dudilla: ¿hay alguna forma de indicar el código de un map a la hora de guardarlo? Es decir, el formato map guarda el código del mapa y es intersante esto precisamente a la hora de añadir los mapas a los fpgs. Por ende, si no hay forma de indicar dicho código creo que debería existir (quizá un parámetro más a la función save_map)

La duda me ha surgido al guardar un mapa con fenix, se le ha asignado el código 1000. Me suena que leí que es porque ahora Bennu asigna automáticamente códigos del 1000 en adelante. Sin embargo, esto no es coherente con el límite de los fpgs, ya que creo recordar era hasta el 999. Yo creo que si el map tiene un código del 1000 en adelante, al hacer el save_map se debería asignar el código 0.

Un saludo,
Darío (danko)
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

SplinterGU

Esto no es de "ahora en Bennu"... siempre los mapas cargados individualmente tuvieron codigo por encima de 999... los mapas en si, no tienen codigo, el codigo es para las librerias (fpg)... pero vos podes asignarles el codigo y agregarlos a una lib, usando fpg_add o add_fpg... siempre fue asi en Fenix... es coherente que asi sea...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

izubiaurre

Quote from: darío on October 12, 2008, 02:10:23 AM
Me ha surgido una dudilla: ¿hay alguna forma de indicar el código de un map a la hora de guardarlo? Es decir, el formato map guarda el código del mapa y es intersante esto precisamente a la hora de añadir los mapas a los fpgs. Por ende, si no hay forma de indicar dicho código creo que debería existir (quizá un parámetro más a la función save_map)

La duda me ha surgido al guardar un mapa con fenix, se le ha asignado el código 1000. Me suena que leí que es porque ahora Bennu asigna automáticamente códigos del 1000 en adelante. Sin embargo, esto no es coherente con el límite de los fpgs, ya que creo recordar era hasta el 999. Yo creo que si el map tiene un código del 1000 en adelante, al hacer el save_map se debería asignar el código 0.

Un saludo,
Darío (danko)

No estoy seguro al 100%, pero, me suena que en DIV2 cuando sacabas un mapa de una fpg, el mapa resultante tenía un número. Me explico, arrstrabas un mapa desde una fpg al escritorio de DIV2 y se creaba como un mapa aparte. Pero, ese mapa tenía un número, el que tenía en la fpg. Entonces, cuando modificabas la imágen (pintar, retocar un poco), cuando volvías a arrastrar al fpg, se guardaba en la posición anterior.

darío

QuoteEsto no es de "ahora en Bennu"... siempre los mapas cargados individualmente tuvieron codigo por encima de 999... los mapas en si, no tienen codigo, el codigo es para las librerias (fpg)... pero vos podes asignarles el codigo y agregarlos a una lib, usando fpg_add o add_fpg... siempre fue asi en Fenix... es coherente que asi sea...

El formato MAP sí que guarda el código del gráfico. Fíjate en el funcionamiento de la herramienta MAP.EXE, el código del gráfico se lo asignas con MAP.EXE, no a la hora de añadirlo al FPG.
En mi opinión, el formato MAP existe por si solo y puesto que uno de los valores que guarda es el código del gráfico y creo que se debería poder asignar a la hora de guardarlos. Supuesto el caso de que usamos FPG.EXE para crear FPGS, uno puede generar un montón de gráficos desde bennu y no tendría que ir haciendo MAP.EXE +id=# ... Bastaría con añadir los fpgs. Además, si estamos generando MAPS cuyo código es 1000 o superior, se supone que no podríamos añadirlos al FPG...
En fin, no se si me he explicado bien. Simplemente no me parece que tenga sentido que una propiedad inherente de los MAPS no se pueda especificar al guardar...

Lo que dice Izubiaurre es cierto y por eso le veo aún más sentido a lo que yo propongo.

A todo esto, ¿se puede asignar el nombre del mapa?

Gracias, un saludo,
Darío
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

SplinterGU

#4
bueno, vamos por parte... lo que decis parece ser cierto... ya que el codigo desde la 0.74 (fenix, no tengo una version mas vieja a mano) hasta la actual 0.93 (Bennu), cargan (y crean en memoria) el mapa con el codigo dentro del archivo .map, pero... la funcionalidad esta incompleta, porque luego de eso, al retornar de la funcion de carga, lo pisan con un nuevo codigo... tampoco liberan, al momento de cargar, el mapa anterior cargado con ese mismo codigo... o sea, que si bien parece ser cierto, nunca funciono... puedo corregir eso, pero no se que afecta... tengo que revisar todo...

edit: que el codigo vaya mas alla de 1000 no significa que no se pueda asignar a un fpg... por otro lado, con estos cambios solo estamos asignando al fpg 0, default... quizas deberiamos tener una forma de poder hacerlo mas generico, y poder meter mapas en cualquier fpg...
pero bien, vamos a un paso por vez...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

darío

Según creo yo, es normal que dentro de fenix la propiedad Código se pise cuando cargas el gráfico individualmente, ya que al no estar dentro de un FPG uno prescinde del código y trabaja con el identificador que da la función load_map.

Sin embargo, si hablamos de Archivos MAP escritos en disco, me parece interesante que dicha propiedad se pueda especificar (solo a efectos del archivo en disco) porque de ese modo se puede simular el comportamiento tipo DIV. Generar maps y luego poder meterlos en FPGs rápidamente, ya sea con FPG.exe, con flamebird o con cualquier otro editor de FPGs.

Lo que yo pido es un cambio minúsculo (un parámetro más a la función save_map, quizá opcional, y que se escriba ese valor en disco).

kim-elet-o: Creo recordar que a la hora de añadir el map al fpg te pedía que ingresases el código del gráfico, pero por defecto te mostraba el que contenía el fichero map. Esta "característica del IDE" está íntimamente ligada a la característica de los maps debido a que podían guardar ese valor.
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

SplinterGU

El valor se escribe siempre en disco... el cambio parece no afectar (si lo hago bien, cosa que no siempre es asi... en un "100%" de los casos fallo... pero bueno, hay limites, todo no se puede pedir... :P), yo digo de que el codigo se grabe a disco solo si es menor a 1000, o sea, pertenece a un fpg...
que te parece eso?

PD: Estoy en el messenger...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: darío on October 12, 2008, 11:31:00 AM
A todo esto, ¿se puede asignar el nombre del mapa?

Por supuesto, MAP_NAME(fpg,code) y MAP_SET_NAME(fpg,code,name)


Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

done! ahora el load_map al cargar un grafico si su codigo es > 0 y < 1000 lo inserta en su lugar, descargando el anterior... no fue tan simple como se supone, no por el cambio en si de este comportamiento, eso tardo menos de 1 minuto (bueno, 5 minutos, habia que abrir varios archivos y tocar unas cuantas funciones...), pero el problema estaba en las funciones nuevas de optimizacion de busquedas/reserva de bitmaps...
pero ya esta...
bueno, en menos de 1 hora no estare disponible durante casi todo el dia... hoy estoy de anfitrion en casa...
saludos...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

darío

No era a eso a lo que me refería. A ver si te veo por el messenger y podemos hablar más tranquilamente, no se si estoy explicándome bien. No he estado en casa porque vinieron a visitarme a estolmo y he estado haciendo de guía turístico...

Un saludo,
Darío
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

SplinterGU

1) tu has pedido que si el map tiene codigo, al cargarlo, lo ubique en el fpg con el codigo que tiene el map en su archivo... y eso es lo que hice... pero un fpg solo tiene codigos de 1-999, entonces codigos diferentes a este valor no se guarda el codigo en el archivo y si el archivo lo llegara a tener, no se toma ese codigo...
2) preguntaste si se podia asignar el nombre a un map... si, se puede, MAP_SET_NAME(fpg,code,name)... adicionalmente como un bonus te di el nombre tambien de la funcion que sirve para obtener el nombre del mapa...

no se que no entendi... me podrias explicar?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

No se, pero lo de los códigos y los nombres en los maps me parecen una característica que queda obsoleta, o como mucho, poco útil. Eso estaba bien cuando en DIV tenían su entorno y, para simplificar un poco las cosas, se usaban esos identificadores para recuperar su posición.
Corregidme si me equivoco, pero al meter un map en un fpg por código ¿no había que especificar su posición? es más, creo que es un error forzar un lugar automáticamente pisando alguno que anteriormente estuviera ahí si, por algun error, el map se crea con un número que no hemos tenido control directo de poner. Quiero decir que prefiero mil veces que el mapa se ponga como nuevo en la última posición (salvo que se especifique lo contrario) a que pisotee a los demás.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

- es un tema, yo no se el cambio que impactara, supongo que pocos usan map como tales... por lo general se cargan fpg, png, y otras cosas...
- bien, lo de los codigos y nombres puede que sea obsoleto, es cierto, pero es mas que nada por compatibilidad...
- en el caso de los cargados por fpg esta bien que asi sea, pero en el caso de los creados en runtime, yo pondria en vez de codigo, el area de memoria que ocupan como id de codigo, esto seria mucho mas rapido, pero bueno, por compatibilidad y por otros motivos internos tiene que quedar asi... (por favor no me pregunten que motivos internos...)
- el codigo es el orden del mapa dentro del fpg... el codigo es el slot que usa...
- cuando un mapa se crea con code 0, pero antes de retornar del modulo de mapas, se le asigna uno libre por encima de 1000...
- solo en el caso que el mapa tenga codigo, al cargarlo y solo al cargarlo desde un fichero este se ubica en el lugar indicado por el fichero (solo codigos 1-999)
- el codigo de un map no puede ser modificado por el usuario, salvo usando fpg_add...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

darío

#13
Perdón por tardar en contestar, ayer estuve algo ocupado.

Quote1) tu has pedido que si el map tiene codigo, al cargarlo, lo ubique en el fpg con el codigo que tiene el map en su archivo... y eso es lo que hice... pero un fpg solo tiene codigos de 1-999, entonces codigos diferentes a este valor no se guarda el codigo en el archivo y si el archivo lo llegara a tener, no se toma ese codigo...

No, yo no he pedido eso. Yo he pedido que podamos especificar el código del mapa AL GUARDARLO (al hacer save_map). Es bien distinto. ¿Por qué? Porque si el máximo código es 999 no le veo sentido a que se guarde en disco con un número mayor a ese (imagina que usamos FPG.EXE para añadir un mapa creado con save_map, no debería funcionar bien ya que estaríamos por encima de 999).

El comportamiento de Carga creo que debería mantenerse como estaba. Es cierto que no mucha gente usa los maps individualmente pero si alguien los usa (yo lo hago, por ejemplo) el cambio que has realizado puede dar lugar a errores difícil de localizar, ya que obliga a que modifiquemos los maps que tengamos con un código superior a mil, algo que no se puede hacer con ningún herramienta actual (ni si quiera con bennu ya que save_map no incluye el parámetro adicional que yo propongo).
El uso de maps como tales tiene la ventaja de poder especificar los puntos de control.

Quote2) preguntaste si se podia asignar el nombre a un map... si, se puede, MAP_SET_NAME(fpg,code,name)... adicionalmente como un bonus te di el nombre tambien de la funcion que sirve para obtener el nombre del mapa..
Sí, olvidé decir gracias :). Las busqué en el bennuwiki y no las encontraba, por eso pregunté.

Bueno, en cualquier caso, gracias por las molestias y espero haberme hecho entender ahora.
Un saludo,
Danko
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

SplinterGU

#14
Quote from: darío on October 13, 2008, 11:35:46 AM
Perdón por tardar en contestar, ayer estuve algo ocupado.

Quote1) tu has pedido que si el map tiene codigo, al cargarlo, lo ubique en el fpg con el codigo que tiene el map en su archivo... y eso es lo que hice... pero un fpg solo tiene codigos de 1-999, entonces codigos diferentes a este valor no se guarda el codigo en el archivo y si el archivo lo llegara a tener, no se toma ese codigo...

No, yo no he pedido eso. Yo he pedido que podamos especificar el código del mapa AL GUARDARLO (al hacer save_map). Es bien distinto. ¿Por qué? Porque si el máximo código es 999 no le veo sentido a que se guarde en disco con un número mayor a ese (imagina que usamos FPG.EXE para añadir un mapa creado con save_map, no debería funcionar bien ya que estaríamos por encima de 999).

El comportamiento de Carga creo que debería mantenerse como estaba. Es cierto que no mucha gente usa los maps individualmente pero si alguien los usa (yo lo hago, por ejemplo) el cambio que has realizado puede dar lugar a errores difícil de localizar, ya que obliga a que modifiquemos los maps que tengamos con un código superior a mil, algo que no se puede hacer con ningún herramienta actual (ni si quiera con bennu ya que save_map no incluye el parámetro adicional que yo propongo).
El uso de maps como tales tiene la ventaja de poder especificar los puntos de control.

Quote2) preguntaste si se podia asignar el nombre a un map... si, se puede, MAP_SET_NAME(fpg,code,name)... adicionalmente como un bonus te di el nombre tambien de la funcion que sirve para obtener el nombre del mapa..
Sí, olvidé decir gracias :). Las busqué en el bennuwiki y no las encontraba, por eso pregunté.

Bueno, en cualquier caso, gracias por las molestias y espero haberme hecho entender ahora.
Un saludo,
Danko


Veo que redacte mal el texto o lo leiste muy por encima...
Yo dije "nunca se graba CODIGOS mayores a 999"...
Cual es el sentido de grabar el codigo si luego la carga sera igual como siempre?
Los CODIGOS por encima de 999 "EN MEMORIA" no se graban a disco (se graban con CODIGO 0)... para que se grabe a disco con un codigo especifico hay que INCLUIRLO en un FPG... entonces toma el CODIGO que tiene en el FPG en MEMORIA...
No tiene sentido un parametro para modificar el valor que ya es propio del grafico (propiedad del mismo), solo para guardarlo, en ese caso, lo logico es que modifiques esa propiedad haciendo un FPG_ADD con el codigo que quieras y luego guardarlo...
Los puntos de control son propios tambien del graficos, no tienen que ver con el codigo, no entiendo por que decis que tiene ventaja sobre el otro metodo?
Con el cambio que hice, se logra lo que Uds. dicen de que se puede modificar el grafico en otro contexto (programa) y cuando lo "arrastres" o lo incorpores nuevamente en el FPG, lo inserta en el mismo lugar que ocupaba antes... en estos casos en vez de ser la X, es el CODIGO quien marca el lugar... :P
Todo grafico con codigo mayor a 999 en memoria, al grabarlo se graba con codigo 0, y al cargarlo se le asigna automaticamente un nuevo CODIGO... o sea, se comporta como lo hacian TODOS los mapas hasta ahora... solo los que tienen codigo de 1-999 se ubican en su posicion ya asignada por su CODIGO dentro del FPG 0...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2