Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Gabysantof on November 23, 2018, 08:58:27 PM

Title: Cambiar colores de una imagen
Post by: Gabysantof on November 23, 2018, 08:58:27 PM
Hola. Buenos dias. Mi nombre es Gabriel. Soy de Argentina. Hace poco tiempo comence a desarrollar en bennu. Estoy haciendo un juego de naves. Qusiera saber si se puede cambiar el color de las naves q tengo cargadas en mi archivo fpg de manera de poder contar con mas enemigos que parezcan diferentes pero usando los mismos sprites. Se entiende la idea? Muchas gracias!!!!
Title: Re:Cambiar colores de una imagen
Post by: darío on November 25, 2018, 11:17:39 AM
Si tu archivo FPG es de 8 bits, puedes cambiar los colores de la paleta desde BennuGD usando color_set:

http://wiki.bennugd.org/index.php?title=Pal_set
Si lo que quieres es tener varios FPG con distintas paletas, Smart FPG Editor también te permite hacer esas modificationes (video: https://www.youtube.com/watch?v=Flv-RiA-7DM)

https://bitbucket.org/dacucar/smart-fpg-editor/src/master/
Title: Re:Cambiar colores de una imagen
Post by: panreyes on November 25, 2018, 10:00:26 PM
Si trabajas en 16 o 32 bits, puedes usar rgb_scale y esta función:

Function colorea_fpg(file, float r, float g, float b);
Private
new_file;
i;
Begin
new_file=fpg_new();
from i=1 to 999;
if(map_exists(file,i))
fpg_add(new_file,i,file,i);
rgbscale(new_file,i,r,g,b);
end
end
return new_file;
End
Title: Re:Cambiar colores de una imagen
Post by: Gabysantof on November 26, 2018, 02:32:31 AM
Muchas gracias! estoy tratando de usar la función... pero algo debo estar haciendo mal, estoy tratando de hacer una prueba dibujando la misma imagen, una vez sin "colorear" y luego "coloreada", pero se me muestra exactamente igual. Dejo el código
Para esta prueba estoy usando un fpg de 1 sola imagen de 32bits. Lo dejo adjunto!
Muchísimas gracias por la ayuda!

IMPORT "mod_say";
IMPORT "mod_debug";
IMPORT "mod_map";
IMPORT "mod_effects";
IMPORT "mod_proc";
IMPORT "mod_grproc";
IMPORT "mod_map";
IMPORT "mod_key";
IMPORT "mod_video";
IMPORT "mod_screen";

global


fichero;
fichero2;
end;
process main()
begin
 

  set_mode(1024,768,32);                      
  Set_fps(55,1);
 
  fichero = load_fpg("main.fpg");
  fichero2= colorea_fpg(fichero,0.3,0.59,0.11);
 
  graficar(fichero,100,100);   
  graficar(fichero2,300,300);   
  loop
    frame;   
  end 
 
end;


process graficar(paramfichero,x,y)
begin
FILE = paramFichero;
graph = 1;
loop   
   frame;
end
end

function colorea_fpg(file, float r, float g, float b);
private
   new_file;
   i;
begin
   new_file=fpg_new();
   from i=1 to 999;
      if(map_exists(file,i))
         fpg_add(new_file,i,file,i);
         rgbscale(new_file,i,r,g,b);
      end
   end
   return new_file;
end
Title: Re:Cambiar colores de una imagen
Post by: panreyes on November 26, 2018, 10:19:59 AM
Creo que tendrás que poner la función antes que la llamada a la función para que te funcionen bien los floats :)
Title: Re:Cambiar colores de una imagen
Post by: Gabysantof on November 29, 2018, 01:53:34 PM
Finalmente lo hice funcionar. No funciona con imágenes de 32 bits de profundidad. Lo pase a 16 y funcionó ok!