From 721119e4a61cbb261b456dfd134811d7beb5ce98 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 5 Sep 2017 20:48:42 +0100 Subject: Support for loading games in Javascript puzzles. This is done by showing a dialog containing an through which the user can 'upload' a save file - though, of course, the 'upload' doesn't go to any HTTP server, but only into the mind of the Javascript running in the same browser. It would be even nicer to support drag-and-drop as an alternative UI for getting the save file into the browser, but that isn't critical to getting the first version of this feature out of the door. --- emccpre.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'emccpre.js') diff --git a/emccpre.js b/emccpre.js index 16702bb..5082555 100644 --- a/emccpre.js +++ b/emccpre.js @@ -299,6 +299,7 @@ function initPuzzle() { // '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']); + load_game = Module.cwrap('load_game', 'void', ['string', 'number']); document.getElementById("save").onclick = function(event) { if (dlg_dimmer === null) { @@ -322,6 +323,31 @@ function initPuzzle() { } }; + document.getElementById("load").onclick = function(event) { + if (dlg_dimmer === null) { + dialog_init("Upload saved-game file"); + var input = document.createElement("input"); + input.type = "file"; + input.multiple = false; + dlg_form.appendChild(input); + dlg_form.appendChild(document.createElement("br")); + dialog_launch(function(event) { + if (input.files.length == 1) { + var file = input.files.item(0); + var reader = new FileReader(); + reader.addEventListener("loadend", function() { + var string = reader.result; + load_game(string, string.length); + }); + reader.readAsBinaryString(file); + } + dialog_cleanup(); + }, function(event) { + dialog_cleanup(); + }); + } + }; + gametypelist = document.getElementById("gametype"); gametypesubmenus.push(gametypelist); -- cgit v1.1