mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-06-12 18:42:14 +00:00
use Github gists for sharing
This commit is contained in:
parent
f9c9fc91aa
commit
ec2391f16e
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -7,3 +7,6 @@
|
||||||
[submodule "codemirror"]
|
[submodule "codemirror"]
|
||||||
path = codemirror
|
path = codemirror
|
||||||
url = git@github.com:sehugg/codemirror
|
url = git@github.com:sehugg/codemirror
|
||||||
|
[submodule "octokat.js"]
|
||||||
|
path = octokat.js
|
||||||
|
url = ./octokat.js
|
||||||
|
|
|
@ -283,10 +283,12 @@ canvas.pixelated {
|
||||||
<script src="local/williams/defender.js"></script>
|
<script src="local/williams/defender.js"></script>
|
||||||
<script src="local/williams/robotron.js"></script>
|
<script src="local/williams/robotron.js"></script>
|
||||||
|
|
||||||
|
<script src="octokat.js/dist/octokat.js"></script>
|
||||||
<script src="src/emu.js"></script>
|
<script src="src/emu.js"></script>
|
||||||
<script src="src/util.js"></script>
|
<script src="src/util.js"></script>
|
||||||
<script src="src/disasm.js"></script>
|
<script src="src/disasm.js"></script>
|
||||||
<script src="src/ui.js"></script>
|
<script src="src/ui.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
showWelcomeMessage();
|
showWelcomeMessage();
|
||||||
startUI(true);
|
startUI(true);
|
||||||
|
|
1
octokat.js
Submodule
1
octokat.js
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 2cba2d91728730ae5d51eb595cf36c7bf9221c5d
|
85
src/ui.js
85
src/ui.js
|
@ -235,24 +235,24 @@ function _shareFile(e) {
|
||||||
alert("Please fix errors before sharing.");
|
alert("Please fix errors before sharing.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (!current_preset_id.startsWith("local/")) {
|
||||||
|
alert("Can only share files created with New File.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
var github = new Octokat();
|
||||||
|
var files = {};
|
||||||
var text = editor.getValue();
|
var text = editor.getValue();
|
||||||
console.log("POST",text.length,'bytes');
|
files[current_preset_id.slice(6)] = {"content": text};
|
||||||
$.post({
|
var gistdata = {
|
||||||
url: 'share.php',
|
"description": '8bitworkshop.com {"platform":"' + platform_id + '"}',
|
||||||
data: {
|
"public": true,
|
||||||
'platform':platform_id,
|
"files": files
|
||||||
'filename':current_preset_id.split('/').pop(),
|
};
|
||||||
'text':text,
|
var gist = github.gists.create(gistdata).done(function(val) {
|
||||||
},
|
var url = "http://8bitworkshop.com/?sharekey=" + val.id;
|
||||||
error: function(e) {
|
window.prompt("Copy link to clipboard (Ctrl+C, Enter)", url);
|
||||||
console.log(e);
|
}).fail(function(err) {
|
||||||
alert("Error sharing file.");
|
alert("Error sharing file: " + err.message);
|
||||||
},
|
|
||||||
success: function(result) {
|
|
||||||
var sharekey = result['key'];
|
|
||||||
var url = "http://8bitworkshop.com/?sharekey=" + sharekey;
|
|
||||||
window.prompt("Copy link to clipboard (Ctrl+C, Enter)", url);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -893,9 +893,13 @@ function preloadWorker(fileid) {
|
||||||
if (tool) worker.postMessage({preload:tool});
|
if (tool) worker.postMessage({preload:tool});
|
||||||
}
|
}
|
||||||
|
|
||||||
function startPlatform() {
|
function initPlatform() {
|
||||||
platform = new PLATFORMS[platform_id]($("#emulator")[0]);
|
|
||||||
store = new FileStore(localStorage, platform_id + '/');
|
store = new FileStore(localStorage, platform_id + '/');
|
||||||
|
}
|
||||||
|
|
||||||
|
function startPlatform() {
|
||||||
|
initPlatform();
|
||||||
|
platform = new PLATFORMS[platform_id]($("#emulator")[0]);
|
||||||
PRESETS = platform.getPresets();
|
PRESETS = platform.getPresets();
|
||||||
if (qs['file']) {
|
if (qs['file']) {
|
||||||
// start platform and load file
|
// start platform and load file
|
||||||
|
@ -914,22 +918,40 @@ function startPlatform() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadSharedFile(sharekey) {
|
||||||
|
var github = new Octokat();
|
||||||
|
var gist = github.gists(sharekey);
|
||||||
|
gist.fetch().done(function(val) {
|
||||||
|
var filename;
|
||||||
|
for (filename in val.files) { break; }
|
||||||
|
var newid = 'shared/' + filename;
|
||||||
|
var json = JSON.parse(val.description.slice(val.description.indexOf(' ')+1));
|
||||||
|
console.log("Fetched " + newid, json);
|
||||||
|
platform_id = json['platform'];
|
||||||
|
initPlatform();
|
||||||
|
updatePreset(newid, val.files[filename].content);
|
||||||
|
qs['file'] = newid;
|
||||||
|
qs['platform'] = platform_id;
|
||||||
|
delete qs['sharekey'];
|
||||||
|
gotoNewLocation();
|
||||||
|
}).fail(function(err) {
|
||||||
|
alert("Error loading share file: " + err.message);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// start
|
// start
|
||||||
function startUI(loadplatform) {
|
function startUI(loadplatform) {
|
||||||
installErrorHandler();
|
installErrorHandler();
|
||||||
|
// add default platform?
|
||||||
|
platform_id = qs['platform'] || localStorage.getItem("__lastplatform");
|
||||||
|
if (!platform_id) {
|
||||||
|
platform_id = qs['platform'] = "vcs";
|
||||||
|
}
|
||||||
// parse query string
|
// parse query string
|
||||||
// is this a share URL?
|
// is this a share URL?
|
||||||
if (qs['sharekey']) {
|
if (qs['sharekey']) {
|
||||||
var sharekey = qs['sharekey'];
|
loadSharedFile(qs['sharekey']);
|
||||||
console.log("Loading shared file ", sharekey);
|
|
||||||
$.getJSON( ".storage/" + sharekey, function( result ) {
|
|
||||||
console.log(result);
|
|
||||||
var newid = 'shared/' + result['filename'];
|
|
||||||
updatePreset(newid, result['text']);
|
|
||||||
qs['file'] = newid;
|
|
||||||
delete qs['sharekey'];
|
|
||||||
gotoNewLocation();
|
|
||||||
}, 'text');
|
|
||||||
} else {
|
} else {
|
||||||
// reset file?
|
// reset file?
|
||||||
if (qs['file'] && qs['reset']) {
|
if (qs['file'] && qs['reset']) {
|
||||||
|
@ -937,11 +959,6 @@ function startUI(loadplatform) {
|
||||||
qs['reset'] = '';
|
qs['reset'] = '';
|
||||||
gotoNewLocation();
|
gotoNewLocation();
|
||||||
} else {
|
} else {
|
||||||
// add default platform?
|
|
||||||
platform_id = qs['platform'] || localStorage.getItem("__lastplatform");
|
|
||||||
if (!platform_id) {
|
|
||||||
platform_id = qs['platform'] = "vcs";
|
|
||||||
}
|
|
||||||
// load and start platform object
|
// load and start platform object
|
||||||
if (loadplatform) {
|
if (loadplatform) {
|
||||||
$.getScript('src/platform/' + platform_id + '.js', function() {
|
$.getScript('src/platform/' + platform_id + '.js', function() {
|
||||||
|
|
|
@ -11,3 +11,5 @@
|
||||||
%-48.pbm: %.jpg
|
%-48.pbm: %.jpg
|
||||||
convert $< -resize 48x192\! -colorspace Gray -dither FloydSteinberg $@
|
convert $< -resize 48x192\! -colorspace Gray -dither FloydSteinberg $@
|
||||||
|
|
||||||
|
ship1.pbm: ship1.png
|
||||||
|
convert ship1.png -negate -flop ship1.pbm
|
37
tools/pbm_to_c.py
Normal file
37
tools/pbm_to_c.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import sys, struct
|
||||||
|
|
||||||
|
# reverse byte
|
||||||
|
def rev(n):
|
||||||
|
return int('{:08b}'.format(n)[::-1], 2)
|
||||||
|
|
||||||
|
# output bits in given range
|
||||||
|
def out(i, pix, lb, hb, reverse=0, shift=0):
|
||||||
|
x = (pix >> lb) & ((1<<(hb-lb))-1)
|
||||||
|
if reverse:
|
||||||
|
x = rev(x)
|
||||||
|
if shift:
|
||||||
|
x = x << shift
|
||||||
|
assert(x>=0 and x<=255)
|
||||||
|
output[i].append(x)
|
||||||
|
|
||||||
|
# read PBM (binary P4 format) file
|
||||||
|
with open(sys.argv[1],'rb') as f:
|
||||||
|
# read PBM header
|
||||||
|
header = f.readline().strip()
|
||||||
|
assert(header == 'P4')
|
||||||
|
dims = f.readline().strip()
|
||||||
|
if dims[0] == '#':
|
||||||
|
dims = f.readline().strip()
|
||||||
|
width,height = map(int, dims.split())
|
||||||
|
wbytes = (width+7)/8
|
||||||
|
data = f.read()
|
||||||
|
print "{%d,%d," % (wbytes,height),
|
||||||
|
for i in range(0,len(data)):
|
||||||
|
if i>0:
|
||||||
|
sys.stdout.write(",")
|
||||||
|
ofs = i+wbytes-(i%wbytes)*2-1
|
||||||
|
sys.stdout.write( "0x%02x" % ord(data[ofs]) )
|
||||||
|
print "}"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user