From 7522b23d04791f15dbf52ca684d27ee2d5de4fc6 Mon Sep 17 00:00:00 2001 From: Daniel Schwen Date: Mon, 2 Dec 2013 20:28:46 -0700 Subject: [PATCH] use new storage framework, do not embed story file --- jzip.html | 509 +++++++++++++-------------------------------- src/emscripten.mak | 5 +- storage.css | 4 + storage.html | 6 +- storage.js | 104 +++++---- 5 files changed, 214 insertions(+), 414 deletions(-) diff --git a/jzip.html b/jzip.html index c7a8b6b..9134540 100644 --- a/jzip.html +++ b/jzip.html @@ -3,6 +3,7 @@ + @@ -24,81 +25,70 @@
-
-

Save game…

-
-

…on this browser

-
- - -
-
- - +
+ -
-
-
+
-
-

…on this computer

-
- Download save file… +
+

…on this computer

+

…from this computer

+ -
-
-

…on Google Drive

-
- - -
-
- - -
-
- -
-
- +
+ +
-
- -
-

Restore game…

-
-

…from this browser

-
- -
- +
+

…on Google Drive

+

…from Google Drive

+
+ +
+ +
+
-
-
-

…from this computer

-
- -
- +
-
-

…from Google Drive

-
- - +
-
- +
@@ -106,22 +96,16 @@

…from Google Drive

+ + diff --git a/src/emscripten.mak b/src/emscripten.mak index e574672..6082e5e 100644 --- a/src/emscripten.mak +++ b/src/emscripten.mak @@ -72,10 +72,7 @@ OBJS = jzip.bc control.bc extern.bc fileio.bc input.bc interpre.bc license.bc \ all : jzip.js jzip.js : $(OBJS) ztypes.h jzip.h - #$(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS) --embed-file catseye.z3 --js-transform ../fixcurl.sh -s EXPORTED_FUNCTIONS="['_spinupJS','_interpret','_cleanupJS','_jsrGetLine','_jsrInputCharacter','_z_restore']" - #$(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS) --embed-file moonmist.z3 --js-transform ../fixcurl.sh -s EXPORTED_FUNCTIONS="['_spinupJS','_interpret','_cleanupJS','_jsrGetLine','_jsrInputCharacter','_z_restore']" - $(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS) --embed-file curses.z5 --js-transform ../fixcurl.sh -s EXPORTED_FUNCTIONS="['_spinupJS','_interpret','_cleanupJS','_jsrGetLine','_jsrInputCharacter','_z_restore','_z_print_obj','_load_variable','_jsrResizeWindow','_get_object_address','_read_object']" - #$(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS) --embed-file zork2.z3 --js-transform ../fixcurl.sh -s EXPORTED_FUNCTIONS="['_spinupJS','_interpret','_cleanupJS','_jsrGetLine','_jsrInputCharacter','_z_restore']" + $(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS) --js-transform ../fixcurl.sh -s EXPORTED_FUNCTIONS="['_spinupJS','_interpret','_cleanupJS','_jsrGetLine','_jsrInputCharacter','_z_restore','_z_print_obj','_load_variable','_jsrResizeWindow','_get_object_address','_read_object']" jzexe : jzexe.bc jzexe.h $(CC) -o $@ $(CFLAGS) jzexe.o diff --git a/storage.css b/storage.css index 913d71b..751bd97 100644 --- a/storage.css +++ b/storage.css @@ -5,6 +5,7 @@ box-shadow: 3px 3px 15px rgba(0,0,0,0.3); padding: 0.5em; background-color: white; + display: none; } .dialog>h1 { font-size:15pt; @@ -37,3 +38,6 @@ text-align: center; padding: 1em 0 0 0; } +.dialog input[type=text]:invalid { + color: red; +} diff --git a/storage.html b/storage.html index c8c2b0c..c8a5e15 100644 --- a/storage.html +++ b/storage.html @@ -82,8 +82,10 @@

…from server.

diff --git a/storage.js b/storage.js index 985183f..b517cdc 100644 --- a/storage.js +++ b/storage.js @@ -73,12 +73,11 @@ function Storage(defaults) { handler.refresh = retrieveAllFiles; // manual refresh fillDriveSelect(options.pattern||''); // populate select with cached dsave data now - // server - if (!('server' in options)) { - $('.server',$dialog).hide(); - } else { - $('.server',$dialog).show(); - } + // pattern + $('input[type=text]',$dialog).attr('pattern',options.pattern||''); + + // show dialog + $dialog.fadeIn(); } function save(options) { @@ -98,7 +97,7 @@ function Storage(defaults) { lsave[name] = btoa(options.data||''); ls.setItem(options.local,JSON.stringify(lsave)); // get back into game - callback(); + callback(true); //step(); } @@ -106,9 +105,15 @@ function Storage(defaults) { var id = $('.drive select',$dialog).val() || null , name = $('.drive input',$dialog).val(); if (id !== null) { - if (name=='') return; + if (name=='') { + callback(false); + return; + } } else { - if (dsave===null || !(id in dsave)) return; + if (dsave===null || !(id in dsave)) { + callback(false); + return; + } name = dsave[id].title; } @@ -155,7 +160,8 @@ function Storage(defaults) { // refresh the dsave cache (file list) driveFilesCallback = null; // no need to perform any further action retrieveAllFiles(); - callback(); + callback(true); + return; }); } @@ -163,7 +169,7 @@ function Storage(defaults) { common(options); $('.open',$dialog).hide(); $('.save',$dialog).show(); - $dialog.fadeIn(); + $('.null',$dialog).attr('disabled',''); // prepare downloadlink handler.download = function(e) { @@ -173,8 +179,9 @@ function Storage(defaults) { // handlers handler.local = local; - handler.drive = drive; handler.file = null; + handler.drive = drive; + handler.server = null; } function open(options) { @@ -187,8 +194,14 @@ function Storage(defaults) { } function local() { - var name = $('#restorelocaloldname').val(); - callback(atob(lsave[name])); + var name = $('.local select').val(); + if (name in lsave) { + callback(atob(lsave[name])); + return; + } else { + callback(null); + return; + } /* function(data) { @@ -207,13 +220,17 @@ function Storage(defaults) { function file() { fl = $('.file input[type=file]',$dialog)[0].files; - if (fl.length!==1) { return; } + if (fl.length!==1) { + callback(null); + return; + } var f=fl[0]; // instantiate a new FileReader var reader = new FileReader(); reader.onload=function(e) { callback(e.target.result); + return; } reader.readAsBinaryString(f); } @@ -222,10 +239,12 @@ function Storage(defaults) { var id = $('.drive select').val() , accessToken = gapi.auth.getToken().access_token , url = dsave[id].downloadUrl - , e=restoreOpts , xhr = new XMLHttpRequest(); - if (dsave===null || !(id in dsave)) { return; } + if (dsave===null || !(id in dsave)) { + callback(null); + return; + } xhr.open('GET', url); xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); @@ -233,27 +252,42 @@ function Storage(defaults) { xhr.onload = function() { if (xhr.status == 200) { callback(new Uint8Array(xhr.response)); + return; } else { - callback(null)); + callback(null); + return; } }; xhr.onerror = function() { callback(null); + return; }; xhr.send(); } + function server() { + } + // condition dialog common(options); $('.open',$dialog).show(); $('.save',$dialog).hide() + $('.null',$dialog).attr('disabled','disabled'); - // file upload / downloadlink - handler.download = null; - handler.file = file; + // server + if (!('server' in options)) { + $('.server',$dialog).hide(); + handler.server = null; + } else { + $('.server',$dialog).show(); + handler.server = server; + } - // button for local save + // handlers + handler.download = null; handler.local = local; + handler.file = file; + handler.drive = drive; } @@ -302,20 +336,23 @@ function Storage(defaults) { function fillLocalSelect(pattern) { var g,$s=$('.local optgroup',$dialog),nofiles=true - , regexp = new RegExp(pattern); + , regexp = new RegExp(pattern) + , prev = $s.parent().val(); $s.empty(); for (g in lsave) { if (lsave.hasOwnProperty(g) && regexp.test(g)) { + if(!prev) { prev=g; } $s.append($('').text(g).attr('value',g)); n=false; } } if (nofiles) { - $('.file .hasfiles',$dialog).hide() + $('.local .hasfiles',$dialog).hide(); } else { - $('.file .hasfiles',$dialog).show() + $('.local .hasfiles',$dialog).show(); + $s.parent().val(prev); } } @@ -323,11 +360,13 @@ function Storage(defaults) { if (dsave===null) { return; } var g,$s=$('.drive optgroup',$dialog),nofiles=true - , regexp = new RegExp(pattern); + , regexp = new RegExp(pattern) + , prev = $s.parent().val(); $s.empty(); for (g in dsave) { if (dsave.hasOwnProperty(g) && regexp.test(dsave[g].title)) { + if(!prev) { prev=g; } $s.append($('').text(dsave[g].title).attr('value',g)); nofiles=false; } @@ -337,6 +376,7 @@ function Storage(defaults) { $('.drive .hasfiles',$dialog).hide() } else { $('.drive .hasfiles',$dialog).show() + $s.parent().val(prev); } return nofiles; @@ -366,15 +406,3 @@ function Storage(defaults) { open: open }; } - -/* - - // get saves from localStorage - if (ls) { - lsave = JSON.parse(ls.getItem('jszipSaves')||'{}'); - } else { - $('.localsave').hide(); - } - - -*/