Octubre 20, 2013, 09:02:58 AM Ultima modificación: Octubre 20, 2013, 02:30:18 PM por Wadk
(Originalmente posteado como respuesta a: http://www.comunidadgm.org/index.php?topic=14757.0)

perdon por revivir el tema, pero no quiero abrir otro mas si puedo preguntar aqui mismo.

es necesario el screen_redraw()?

y hay alguna forma de hacerlo sin la variable "total"? por que si o si tendriamos que poner el total de todos los recursos, y como humanos podriamos tener errores al contarlos todos, y tendriamos que volver a hacerlo, y ya se vuelve algo molesto.

y otra cosa mas, como podria aplicar este codigo en una room donde sea solo para eso, para cargar recursos, y una vez termine de cargar los recursos vaya directamente al room donde se cargaron los recursos.

osea, mi duda es como puedo cargar esos recursos en una room mientras estamos en otra donde muestra la barra de progreso

Dividí el tema. No hay razón para usar el tema de otra pregunta, aunque sea similar.

El screen_redraw() es necesario sin cargás los archivos en un loop. Si no, dudo que tenga efecto apreciable.

Si querés deshacerte de la variable total, podés usar una ds_list para guardar todos los recursos que vayan a ser cargados y usar el tamaño de la ds_list para averiguar el total.
Podés crear un objeto dedicado a cargar los sprites, y ponerle en create:
[gml]resource_list = ds_list_create();
loaded = 0;

// Agregar los sprites a la lista uno por uno.
ds_list_add(resource_list, "sprites/a.png");
ds_list_add(resource_list, "sprites/b.png");
ds_list_add(resource_list, "sprites/c.png");
// ...
[/gml]

En step:
[gml]if (loaded >= ds_list_size(resource_list)) {
    // Se terminaron de cargar todos los sprites.
    exit;
}
sprite_add(ds_list_find_value(resource_list, loaded), 1, true, false, 0, 0);
loaded += 1;[/gml]

En draw:
[gml]draw_rectangle(x, y, x + 100, y + 20, 1);
draw_rectangle(x, y, x + loaded / ds_list_size(resource_list) * 100, y + 20, 0);[/gml]

Y en destroyed:
[gml]ds_list_destroy(resource_list);[/gml]

Si querés cargar distintos tipos de recursos con distintos argumentos, deberías usar una ds_grid que guarde todos los datos necesarios en vez de una ds_list.
Vim.