X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=emccpre.js;fp=emccpre.js;h=16702bb129c33c54c3fe6cf01e54e271339f9564;hb=1bf591a5735068d1853be13c5a4255962835d5fe;hp=efd54ae4d58e035d97a25d9f84f59abce8b0d094;hpb=b31ea221673a8f49a383a4a119d6edaabd39642d;p=sgt-puzzles.git diff --git a/emccpre.js b/emccpre.js index efd54ae..16702bb 100644 --- a/emccpre.js +++ b/emccpre.js @@ -296,6 +296,32 @@ function initPuzzle() { command(9); }; + // 'number' is used for C pointers + get_save_file = Module.cwrap('get_save_file', 'number', []); + free_save_file = Module.cwrap('free_save_file', 'void', ['number']); + + document.getElementById("save").onclick = function(event) { + if (dlg_dimmer === null) { + var savefile_ptr = get_save_file(); + var savefile_text = Pointer_stringify(savefile_ptr); + free_save_file(savefile_ptr); + dialog_init("Download saved-game file"); + dlg_form.appendChild(document.createTextNode( + "Click to download the ")); + var a = document.createElement("a"); + a.download = "puzzle.sav"; + a.href = "data:application/octet-stream," + + encodeURIComponent(savefile_text); + a.appendChild(document.createTextNode("saved-game file")); + dlg_form.appendChild(a); + dlg_form.appendChild(document.createTextNode(".")); + dlg_form.appendChild(document.createElement("br")); + dialog_launch(function(event) { + dialog_cleanup(); + }); + } + }; + gametypelist = document.getElementById("gametype"); gametypesubmenus.push(gametypelist);