Delete_draw me lanza un error de Windows

Started by Drumpi, November 19, 2016, 03:42:50 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Duda super-rápida porque es ya muy tarde y no me puedo poner a escribir código ni subir nada:

En mi juego seteo drawing_map a un mapa creado en memoria.
Luego hago varios draw_box, y almaceno sus valores en una lista enlazada.
A la hora de salir, antes de eliminar el nodo de la lista hago un delete_draw con el ID guardado, pero al primer intento se cierra la aplicación y aparece la ventana de error del Sistema Operativo. Sí, he comprobado que dicho valor vale, en este caso, 1.

¿Alguna idea antes de tener que ponerme a escribir una versión reducida del código? ¿Puede ser porque los draw_box se hacen sobre un new_map en lugar de sobre el fondo? Algo así he entendido que puede pasar con move_draw:
http://wiki.bennugd.org/index.php?title=Move_draw

Si no, pues lo hago de otra forma (salvaré el estado actual por si acaso), es para el concurso de Futu, tengo que terminarlo en 43 horas, y mañana me voy a pasar medio día fuera de casa :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

draw_box sobre mapa no retorna ID... y no tenes que hacer delete_draw de lo que te retorna, estas borrando cualquier cosa.

move_draw tampoco funciona con drawing_map.

cuando esta seteado drawing_map, las primitivas dibujan directamente sobre el mapa, y no crean objetos draw.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

entonces, con los programas de dibujo, cuando se borra lo que se hace es pintar de un color de fondo...
o se puede borrar ''en alfa''

y entonces, delete_draw, ¿que hace?

SplinterGU

Quote from: Futu-block on November 20, 2016, 08:58:07 PM
entonces, con los programas de dibujo, cuando se borra lo que se hace es pintar de un color de fondo...
o se puede borrar ''en alfa''

y entonces, delete_draw, ¿que hace?

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

Futu-block


SplinterGU

#5
me perdi...

en bennu existen 2 tipos de draw...

1 - directivas que se dibujan directamente sobre 1 mapa (drawing_map), y que una vez dibujados quedan ahi como grabados en piedra, estaticos y formando parte del mapa para siempre.
2 - directivas que crean objetos que se dibujan sobre pantalla al igual que procesos, no importa si cambiamos el fondo, o ponemos procesos en pantalla por delante o por detras, los objetos draw quedan ahi, y podemos moverlos y no me acuerdo que mas... pero son objetos como procesos... estos son los que se pueden borrar, porque son como procesos... el draw_delete es como un signal(s_kill)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pero entonces sí que existen los "objetos gráficos", es decir, elementos con una imágen que no está asociado a ningún proceso, pero que tienen propiedades independientes (lease X e Y). Aunque claro, hablamos solo de objetos hechos con draw (lineas, cajas, cuadrados, círculos, circunferencias...) y pintados sobre el gráfico de background (file = 0, graph = 0) y no de imágenes completas.

Entonces, si los cuadrados los hubiese pintado sobre al mapa de background sí que podría haberlos movido sin que me diera error ¿no es así?

Futu, en los programas de dibujo cuando se borra se hace eso, pintar con un color de fondo o con color transparente (ya depende si en photoshop estás usando canal alpha o no), siempre se sustituye. Incluso al "deshacer", estás cambiando una serie de pixels por los que tenías antes.
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

Quote from: Drumpi on November 21, 2016, 02:09:53 AM
Pero entonces sí que existen los "objetos gráficos", es decir, elementos con una imágen que no está asociado a ningún proceso, pero que tienen propiedades independientes (lease X e Y). Aunque claro, hablamos solo de objetos hechos con draw (lineas, cajas, cuadrados, círculos, circunferencias...) y pintados sobre el gráfico de background (file = 0, graph = 0) y no de imágenes completas.

Entonces, si los cuadrados los hubiese pintado sobre al mapa de background sí que podría haberlos movido sin que me diera error ¿no es así?

Futu, en los programas de dibujo cuando se borra se hace eso, pintar con un color de fondo o con color transparente (ya depende si en photoshop estás usando canal alpha o no), siempre se sustituye. Incluso al "deshacer", estás cambiando una serie de pixels por los que tenías antes.

cuando es sin drawing_map, no los pintas sobre nada, simplemente creas un objeto, no lo pienses como un draw, pensalo que creas un proceso sin logica o codigo. que lo unico que hace es un dibujo... si borras o cambias el fondo, el dibujo sigue estando, incluso si no tenes grafico de fondo.

si  lo dibujas sobre el mapa de fondo (drawing_map = id_grafico_fondo) entonces queda fijo en el mapa del fondo, y no podes borrarlo ni moverlo, solo se borra si borras el mapa...

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

alicesimu

Quote from: SplinterGU on November 21, 2016, 01:14:23 AM
me perdi...

en bennu existen 2 tipos de draw...

1 - directivas que se dibujan directamente sobre 1 mapa (drawing_map), y que una vez dibujados quedan ahi como grabados en piedra, estaticos y formando parte del mapa para siempre.
2 - directivas que crean objetos que se dibujan sobre pantalla al igual que procesos, no importa si cambiamos el fondo, o ponemos procesos en pantalla por delante o por detras, los objetos draw quedan ahi, y podemos moverlos y no me acuerdo que mas... pero son objetos como procesos... estos son los que se pueden borrar, porque son como procesos... el draw_delete es como un signal(s_kill)

esta clarisimo el concepto  :D