Buenas, como va? necesito ayuda, tengo problemas con new_map, mi codigo es el siguiente
mapa = new_map(50,300, 32);
map_xputnp(0, mapa, graficos, 11, 25, 320, 0, 100, 100, 100);
graph = mapa;
Con este código no me muestra nada en pantalla. Ahora, si luego le hago un MAP_CLEAR(0,mapa,rgb(255,0,0)) o MAP_CLEAR(0,mapa,rgb(255,255,255)) o cualquier combinación el gráfico que estoy dibujando en el mapa aparece pero obviamente con los colores cambiados, ejemplo, si hago MAP_CLEAR(0, mapa, rbg(255,0,0)) aparece la imagen en diferentes tonos de rojo y si hago MAP_CLEAR(255,255,255) se ve todo blanquecino incluso el fondo que debería ser transparente. No se si esto se debe a la composición de la imagen que estoy dibujando, aunque seria raro, ya que si la asigno directamente al graph del proceso se ve sin problemas. Tambien probé hacer MAP_CLEAR(0,mapa,0) y sigo sin ver nada.
Alquna idea de que puede estar pasando?
Adjunto dos imagenes, una es el grafico que estoy dibujando dentro del mapa temporal y la otra es como sale en pantalla.
Muchas gracias.
Saludos.
de poco sirve si no pones todo el codigo, se pueden interpretar muchas cosas sin ver todo el codigo por su orden
Quote from: FreeYourMind on March 17, 2014, 10:51:16 PM
de poco sirve si no pones todo el codigo, se pueden interpretar muchas cosas sin ver todo el codigo por su orden
Si, sorry, tenes razon, aca paso el codigo completo
program pruebamap;
import "mod_map";
import "mod_video";
import "mod_screen";
import "mod_draw";
process Main()
private
end
begin
set_mode(640, 480,32);
map_clear(0,0,rgb(0,255,0));
grafico();
end
process grafico()
private
int origen;
int mapa;
end
begin
origen = load_png("sp_rayo2a_2.png");
mapa = new_map(50, 100, 32);
//map_clear(0, mapa, rgb(255,255,255));
set_center(0,origen,0,0);
map_xputnp(0, mapa, 0, origen, 0, 0, 0, 100, 100, 100);
GRAPH = mapa;
x = 320;
y = 240;
loop
frame;
end
end
y adjunto la imagen que estoy utilizando.
Limpio la pantalla con un color verde para que se aprecie que sin el MAP_CLEAR() y a pesar de haber dibujado el grafico en el mapa creado con NEW_MAP() no aparece en pantalla.
Desde ya muchas gracias.
Saludos.
estas poniendo 2 mapas, quita la linea GRAPH = mapa;
luego te lo miro con tiempo, pero asi ultra rapido, parece que estas tapando un mapa con otro
Quote from: FreeYourMind on March 18, 2014, 06:46:52 AM
estas poniendo 2 mapas, quita la linea GRAPH = mapa;
luego te lo miro con tiempo, pero asi ultra rapido, parece que estas tapando un mapa con otro
Gracias por tu respuesta, esta bien el GRAPH = mapa; es el mapa que acabo de crear y que quiero que el proceso muestre. A que segundo mapa te referis? Si tenes un tiempito proba el codigo asi como esta (bajando el adjunto) y luego probalo descomentando el MAP_CLEAR.
Muchas gracias.
Saludos.
Ya lo pude solucionar
program pruebamap;
import "mod_map";
import "mod_video";
process Main()
private
int mapa;
int grafigo;
end
begin
set_mode(640, 480, 32);
mapa = new_map(50,100,32);
grafico = load_png("sprite.png");
map_block_copy(0,mapa,0,0,grafico,0,0,50,100);
graph = grafico;
x= 320;
y = 240;
loop
frame;
end
end
La duda que me queda para que esto quede de 10 es como hacer para obtener el graphID de un grafico que tengo almacenado en un .fpg en lugar de tener que cargar el grafico con load_png() para obtener este dato? Esto porque MAP_BLOCK_COPY() solo permite utilizar como origen y destino, graficos que esten en el mismo FILE, en este caso 0.
Muchas gracias.
Saludos.
lo que necesitas es mirar los ejemplos del manual, si preguntas como se obtiene el grafico del FPG es porque no estas leyendo los manuales o ejemplos xDDD
Quote from: FreeYourMind on March 18, 2014, 07:58:25 PM
lo que necesitas es mirar los ejemplos del manual, si preguntas como se obtiene el grafico del FPG es porque no estas leyendo los manuales o ejemplos xDDD
Me estoy manejando con el manual de Osk, load_png devuelve un GrpahID pero no encuentro una funcion que me devuelva el GraphId en memoria a partir de un grafico que esta guardado en un .fpg. MAP_BLOCK_COPY() requiere que tanto el grafico de origen y el de destino esten en el mismo FILE, en este caso en memoria (FILE 0) osea que yo necesito subir a memoria uno de los graficos del .fpg para poder utilizarco en MAP_BLOCK_COPY() junto al mapa que acabo de crear. El GraphId de un grafico dentro de un .fpg entiendo que es el nro. con el que se guardo, pero yo necesito trasladar ese grafico a un GraphID en memoria (alojado en el FILE 0). La unica funcion que encontre para trasladar un grafico de un FILE a otro es MAP_XPUTNP() pero lo hace con el problema con el que inicie este tema.
Voy a releer la seccion dedicada a estos temas en el Manual de Osk. Quiza pase algo por alto.
Muchas gracias por tu tiempo.
pero si sólo tienes que hacer esto dentro de un proceso:
file=mi_fichero_fpg;
graph=3;
esto asigna el grafico 3 del fpg al grafico del proceso, no entiendo como te complicas tanto xD estoy seguro que en casi todos los ejemplos tienes un grafico asignado dentro de un proceso....
en loas parametros del map_block_copy:
map_block_copy(file, graph, 0, 0, ..........
los dos primeros son el fpg y el id del grafico, no veo donde puedes tener dudas :)
Quote from: FreeYourMind on March 18, 2014, 09:46:07 PM
pero si sólo tienes que hacer esto dentro de un proceso:
file=mi_fichero_fpg;
graph=3;
esto asigna el grafico 3 del fpg al grafico del proceso, no entiendo como te complicas tanto xD estoy seguro que en casi todos los ejemplos tienes un grafico asignado dentro de un proceso....
Ahhhhora, si, no sabia que simplemente asi se podia hacer esto, pense que por ejemplo, load_png() devolvia un puntero a memoria donde se alojaba el grafico y que internamente los procesos hacian algo parecido indicandole en FILE el fileID y en GRAPH el nro de grafico. Como pensaba que era asi el funcionamiento estaba buscando una forma de obtener ese puntero.
program prueba;
import "mod_video";
import "mod_map";
global
int graficos;
end
process Main()
begin
set_mode(640,480,32);
graficos = load_fpg("graficos.fpg");
recortar();
end
process recortar()
private
int mapa;
end
begin
FILE = graficos;
GRAPH = 1;
mapa = new_map(50,50,32);
map_block_copy(0,mapa,0,0,graph,0,0,50,100,0);
graph = mapa;
x = 320;
y = 240;
loop
frame;
end
end
En fin, nada, muchas gracias por tu ayuda.