Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: alicesimu on December 10, 2016, 08:40:19 PM

Title: Ayuda, necesito borrar (machacar) con color alpha map_xput....
Post by: alicesimu on December 10, 2016, 08:40:19 PM
Buenass

alguien sabe como se puede borrar de una zona de un MAP en memoria.
por ejemplo

un recuadro de 10x10 en las cordenadas 120x240.

deseo que se borre desde: 120-130 x 240-250, en color alpha
es decir que me pinte rgba(0,0,0,0); (NO es pintar negro, es pintar Transparente a 100%)

Si el original MAP contiene en esa zona colores y alpha variados RGBA, diferentes... en esos pixeles
la idea es pintar ese recuadro como color Transparente al 100%. no digo pintar NEGRO opaco!

Seria como la goma de borrar del Photoshop.

la idea es usar map_xput y cosas similares
o podria usar map_put_pixel... pero claro pixel a pixel....
Title: Re:Ayuda, necesito borrar (machacar) con color alpha map_xput....
Post by: Drumpi on December 10, 2016, 08:50:46 PM
Bueno, RGBA(0,0,0,0) es el color 0. Si lo que quieres es mantener los valores RGB y sólo modificar el alpha tendrías que obtener el pixel (MAP_GET_PIXEL), luego sus valores RGBA (creo que es con GET_RGBA), y hacer MAP_PUT_PIXEL(RGBA(r,g,b,0)).

Pero si es sólo borrar un cadrado del mapa, es decir, dejarlo de color transparente total (o el valo 0, como he dicho):
drawing_map(tu_file, tu_map);  //Recuerda que los mapas cargados sin FPG son el file = 0;
drawing_color(0);
draw_box(120, 240, 130, 250);


Es lo más sencillo.
Title: Re:Ayuda, necesito borrar (machacar) con color alpha map_xput....
Post by: DCelso on December 10, 2016, 09:05:04 PM
Eso que pides es imposible si la información de pixel anterior no fue guardada, si la tienes guardada sería simplemente hacer un map_xput de ella.

Lo que tu pides de revelar la información de pixel que hay detrás de éste como hace la goma de borrar de photoshop es porque es porque estarás usando multicapas y deja ver la capa de atrás.

Para simular eso en bennu, necesitarias dos processos superpuestos cada uno con su graph.

Y sería tan facil como ir poniendo su valor de pixel alpha a 0, eso lo haría transparente y verías el pixel del proceso de atrás, simulando lo que hace la goma de borrar. tal como dice drumpi MAP_PUT_PIXEL(RGBA(r,g,b,0)).
y volviendo a cambiar su valor a 255 volverías  hacer visible el color del proceso que está encima y ocultaste.

Ahora bien, si lo que quieres borrar como lo hace photoshop en una capa y en modo rgb. tendrías que poner a cero el alpha del justo encima de donde borras, los pixeles adyacentes al 67, los adyacentes a estos ultimos a 127, y así sucesivamente hasta el ancho del borrador.
Title: Re:Ayuda, necesito borrar (machacar) con color alpha map_xput....
Post by: alicesimu on December 10, 2016, 09:58:06 PM
Quote from: Drumpi on December 10, 2016, 08:50:46 PM
Pero si es sólo borrar un cadrado del mapa, es decir, dejarlo de color transparente total (o el valo 0, como he dicho):
drawing_map(tu_file, tu_map);  //Recuerda que los mapas cargados sin FPG son el file = 0;
drawing_color(0);
draw_box(120, 240, 130, 250);


Es lo más sencillo.
Concretamente eso!!

aun que lo hice en plan chupuzilla:

x=150;
y=160;
from xf=0 to 31;
from yf=0 to 31;
map_put_pixel(0,MAP_PARED,X+xf,Y+yf,0);//BORRAMOS
end
end

Esto borra por completo un cuadrado de 32x32 en las cordenadas x,y del punto de ese MAP_PARED.

El tuyo borra un MAP como hace el mio?
Title: Re:Ayuda, necesito borrar (machacar) con color alpha map_xput....
Post by: Drumpi on December 11, 2016, 05:12:33 PM
¡Claro! para eso es la linea DRAWING_MAP.
Recuerda que es recomendable invocar esta función antes de los draw_* porque las funciones draw_* no tienen parámetros para especificar el mapa, usan una "variable global interna" del sistema para saber dónde pintarse.