buffer_save_async

Syntaxe:

buffer_save_async(buffer, filename, offset, size);


Argument La description
buffer L'index du tampon à sauvegarder.
filename Le nom du fichier à enregistrer sous.
offset Le décalage dans la mémoire tampon pour sauvegarder (en octets).
size La taille de la zone tampon à sauvegarder (en octets).


Retours: Real


La description

Avec cette fonction, vous pouvez enregistrer une partie du contenu d'un tampon dans un fichier, prêt à être relu en mémoire en utilisant le buffer_load fonction (ou l'une des autres fonctions pour charger les tampons). Le "décalage" définit la position de départ dans le tampon pour la sauvegarde (en octets), et la "taille" est la taille de la zone tampon à sauvegarder à partir de ce décalage (également en octets). Cette fonction fonctionne de manière asynchrone et le jeu continuera à fonctionner pendant la sauvegarde. Cette fonction déclenche un événement de chargement / enregistrement asynchrone dans lequel vous pouvez vérifier que la sauvegarde s'est bien déroulée.

Notez que vous pouvez enregistrer plusieurs tampons en un en appelant cette fonction plusieurs fois entre les appels à buffer_async_group_begin() et buffer_async_group_end() (voir ces fonctions pour plus d'informations à ce sujet).

La fonction renvoie une valeur d'ID unique qui peut ensuite être utilisée pour vérifier l'événement asynchrone async_load Valeur d'ID, comme indiqué dans l'exemple étendu ci-dessous. le async_load La carte dans l'événement aura les deux paires clé / valeur suivantes:




Exemple étendu:

le buffer_save_async() La fonction peut être appelée à partir de n'importe quel événement, et comme elle est asynchrone, le rappel peut être presque instantané ou prendre plusieurs secondes. Appeler la fonction est simple et ressemblerait à ceci:

saveid = buffer_save_async(buff, "Player_Save.sav", 0, 16384);

Le code ci-dessus enregistre le contenu du tampon " buff " dans le fichier de sauvegarde donné, en stockant l'ID de l'appel de fonction dans la variable " saveid ". Lorsque l'enregistrement est terminé, l'événement Save / Load asynchrone est déclenché et vous pouvez analyser async_load carte pour l'ID correct de la fonction, comme ceci:

if ds_map_find_value(async_load, "id") == saveid
   {
   if ds_map_find_value(async_load, "status") == false
      {
      show_debug_message("Save failed!");
      }
   }

Le code ci-dessus vérifiera d'abord l'identifiant de la carte ds_map créée, puis vérifiera l'état du rappel, en publiant un message de débogage s'il y a eu des problèmes.