106 lines
2.2 KiB
JavaScript
106 lines
2.2 KiB
JavaScript
// bunnymark
|
|
var render = use('render')
|
|
var os = use('os')
|
|
var dim = [500,500]
|
|
render.initialize({
|
|
width:dim.x,
|
|
height:dim.y,
|
|
resolution_x:dim.x,
|
|
resolution_y:dim.y,
|
|
mode:"letterboxed",
|
|
refresh: 60,
|
|
})
|
|
|
|
var camera = {
|
|
size: [500,500],
|
|
transform: os.make_transform(),
|
|
fov:50,
|
|
near_z: 0,
|
|
far_z: 1000,
|
|
surface: undefined,
|
|
viewport: {x:0,y:0,width:1,height:1},
|
|
ortho:true,
|
|
anchor:[0,0],
|
|
}
|
|
|
|
var draw = use('draw2d')
|
|
var sprite = use('lcdsprite')
|
|
var graphics = use('graphics')
|
|
|
|
var dt = 0
|
|
var img = undefined
|
|
|
|
var ioguy = {
|
|
__ACTORDATA__: { id: os.ioactor() }
|
|
}
|
|
|
|
var io = use('io')
|
|
io.mount('/')
|
|
|
|
var qr = use('qr')
|
|
|
|
var myimg = qr.encode("HELLO WORLD")
|
|
var mybytes = qr.rgba(myimg)
|
|
|
|
graphics.save_png("qr_hello.png", mybytes.width, mybytes.height, mybytes.buffer, mybytes.pitch);
|
|
|
|
// test saving a zipped json
|
|
var miniz = use('miniz')
|
|
|
|
var lvl = io.slurp('tests/level.json')
|
|
var lvl_cmp = miniz.compress(lvl)
|
|
|
|
var qr_lvl = qr.encode(lvl_cmp)
|
|
var lvl_bytes = qr.rgba(qr_lvl)
|
|
graphics.save_png("qr_level.png", lvl_bytes.width, lvl_bytes.height, lvl_bytes.buffer, lvl_bytes.pitch)
|
|
|
|
console.log(`saved compressed level as qr; size was ${lvl_cmp.byteLength}`)
|
|
|
|
$_.send(ioguy, {
|
|
type: "subscribe",
|
|
actor: $_
|
|
})
|
|
|
|
function strToArrayBuffer(binStr) {
|
|
const view = new Uint8Array(binStr.length);
|
|
for (let i = 0; i < binStr.length; i++)
|
|
view[i] = binStr.codePointAt(i) & 0xff; // mask keeps it 0-255
|
|
return view.buffer;
|
|
}
|
|
|
|
$_.receiver(e => {
|
|
if (e.type === 'quit')
|
|
os.exit()
|
|
|
|
switch(e.type) {
|
|
case "drop_file":
|
|
console.log(`got ${e.data} dropped`)
|
|
img = e.data
|
|
var image = graphics.texture(e.data)
|
|
var data = qr.decode(image.surface.pixels(), image.surface.width(), image.surface.height(), image.surface.pitch())
|
|
console.log(`found ${data.length} qr`)
|
|
data = data[0]
|
|
console.log(data.byteLength)
|
|
var ddata = miniz.decompress(data, true)
|
|
console.log(ddata)
|
|
}
|
|
})
|
|
|
|
function loop()
|
|
{
|
|
var now = os.now()
|
|
render.clear([22/255,120/255,194/255,255/255])
|
|
render.camera(camera)
|
|
|
|
if (img)
|
|
draw.image(img, {x:0,y:0,width:300,height:300})
|
|
|
|
render.present()
|
|
|
|
dt = os.now() - now
|
|
var delay = (1/60) - dt
|
|
$_.delay(loop, delay)
|
|
}
|
|
|
|
loop()
|