mirror of
https://github.com/danbulant/node-x11
synced 2026-05-20 21:09:10 +00:00
103 lines
3 KiB
JavaScript
103 lines
3 KiB
JavaScript
var x11 = require('../../lib/x11');
|
|
var watchMobile = require('./staticserver');
|
|
var PointerMotion = x11.eventMask.PointerMotion;
|
|
|
|
var X, Render;
|
|
var rocketX = 400;
|
|
var rocketY = 300;
|
|
var speedX = 0;
|
|
var speedY = 0;
|
|
var angle = 0;
|
|
var acc = 0;
|
|
|
|
|
|
var xclient = x11.createClient(function(display) {
|
|
X = display.client;
|
|
var root = display.screen[0].root;
|
|
X.require('render', function(rendExt) {
|
|
|
|
|
|
Render = rendExt;
|
|
var wid = X.AllocID();
|
|
|
|
var white = display.screen[0].white_pixel;
|
|
var black = display.screen[0].black_pixel;
|
|
X.CreateWindow(wid, root, 10, 10, 900, 600, 1, 1, 0, { backgroundPixel: white, eventMask: PointerMotion });
|
|
X.MapWindow(wid);
|
|
|
|
var gc = X.AllocID();
|
|
X.CreateGC(gc, wid, { foreground: white, background: black } );
|
|
|
|
var pict = X.AllocID();
|
|
Render.CreatePicture(pict, wid, Render.rgb24);
|
|
var pictGrad = X.AllocID();
|
|
Render.RadialGradient(pictGrad, [50,56], [50,50], 0, 50,
|
|
[
|
|
[0, [0,0,0xffff,0xffff ] ],
|
|
[0.95, [0,0,0,0x00ff00 ] ],
|
|
[0.997, [0xffff, 0xf, 0, 0x1] ],
|
|
[1, [0xffff, 0xffff, 0, 0x0] ]
|
|
]);
|
|
|
|
var solid = Render.SolidFill
|
|
var dark_grad = X.AllocID();
|
|
Render.LinearGradient(dark_grad, [0,0], [1000,100],
|
|
[
|
|
[0, [0,0,0,0x0 ] ],
|
|
[0.1, [0xfff, 0, 0xffff, 0] ] ,
|
|
[0.25, [0xfff, 0, 0xfff, 0] ] ,
|
|
[0.5, [0xfff, 0, 0xffff, 0] ] ,
|
|
[1, [0xfff, 0xffff, 0, 0] ]
|
|
]);
|
|
|
|
function draw(x, y) {
|
|
|
|
X.PolyFillRectangle(wid, gc, [0, 0, 1000, 1000]);
|
|
Render.Composite(3, pictGrad, 0, pict, 0, 0, 0, 0, rocketX - 50, rocketY - 50, 100, 100);
|
|
// draw directed triangle
|
|
|
|
//
|
|
//
|
|
//
|
|
var pts = [
|
|
rocketX + Math.cos(angle)*50, rocketY + Math.sin(angle)*50,
|
|
rocketX + Math.cos(angle + 1)*50, rocketY + Math.sin(angle+1)*50,
|
|
rocketX + Math.cos(angle + 2)*50, rocketY + Math.sin(angle+2)*50,
|
|
|
|
];
|
|
//Render.Triangles(3, dark_grad, 0, 0, dark_grad, 0, pts);
|
|
X.PolyLine(0, wid, gc, pts);
|
|
}
|
|
|
|
X.on('event', function(ev) {
|
|
//draw(ev.x, ev.y);
|
|
});
|
|
|
|
watchMobile(function(x, y, z) {
|
|
//console.log([x, y, z]);
|
|
//console.log(x);
|
|
angle = 2*Math.PI*(y/360);
|
|
acc = 90 - z;
|
|
draw();
|
|
});
|
|
|
|
function updateScene()
|
|
{
|
|
rocketX += speedX;
|
|
rocketY += speedY;
|
|
speedX += Math.cos(angle + 1)*acc/500;
|
|
speedY += Math.sin(angle + 1)*acc/500;
|
|
console.log(acc);
|
|
if (rocketX+100 > 900)
|
|
speedX = -speedX;
|
|
if (rocketX-100 < 0)
|
|
speedX = -speedX;
|
|
if (rocketY+100 > 600)
|
|
speedY = -speedY;
|
|
if (rocketY-100 < 0)
|
|
speedY = -speedY;
|
|
}
|
|
setInterval(updateScene, 50);
|
|
});
|
|
});
|
|
|