Try to update our javascript.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6071 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
8267939edb
commit
0218f2dcf2
4 changed files with 62 additions and 55 deletions
|
@ -2258,6 +2258,9 @@ nacl-dbg:
|
|||
#################################################
|
||||
#webgl helpers
|
||||
|
||||
ifeq ($(FTE_TARGET),web)
|
||||
$(OUT_DIR)/$(EXE_NAME): ftejslib.js
|
||||
endif
|
||||
ifneq ($(shell which emcc 2> /dev/null),)
|
||||
EMCC?=emcc
|
||||
else
|
||||
|
|
|
@ -1083,7 +1083,7 @@ static void OpenAL_ChannelUpdate(soundcardinfo_t *sc, channel_t *chan, chanupdat
|
|||
palSourcePlay(src);
|
||||
}
|
||||
|
||||
PrintALError(sfx&&sfx->name?sfx->name:"post start sound");
|
||||
PrintALError(sfx?sfx->name:"post start sound");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -2298,7 +2298,7 @@ vfsfile_t *QDECL FS_OpenVFS(const char *filename, const char *mode, enum fs_rela
|
|||
{
|
||||
if (gameonly_homedir)
|
||||
{
|
||||
if ((*mode == 'w')
|
||||
if ((*mode == 'w' && gameonly_gamedir->handle->CreateFile)
|
||||
? gameonly_homedir->handle->CreateFile(gameonly_homedir->handle, &loc, filename)
|
||||
: gameonly_homedir->handle->FindFile (gameonly_homedir->handle, &loc, filename, NULL))
|
||||
vfs = gameonly_homedir->handle->OpenVFS (gameonly_homedir->handle, &loc, mode);
|
||||
|
@ -2318,7 +2318,7 @@ vfsfile_t *QDECL FS_OpenVFS(const char *filename, const char *mode, enum fs_rela
|
|||
{
|
||||
if (gameonly_gamedir)
|
||||
{
|
||||
if ((*mode == 'w')
|
||||
if ((*mode == 'w' && gameonly_gamedir->handle->CreateFile)
|
||||
? gameonly_gamedir->handle->CreateFile(gameonly_gamedir->handle, &loc, filename)
|
||||
: gameonly_gamedir->handle->FindFile (gameonly_gamedir->handle, &loc, filename, NULL))
|
||||
vfs = gameonly_gamedir->handle->OpenVFS (gameonly_gamedir->handle, &loc, mode);
|
||||
|
|
|
@ -12,7 +12,7 @@ mergeInto(LibraryManager.library,
|
|||
//FIXME: split+merge by \n
|
||||
emscriptenfte_print : function(msg)
|
||||
{
|
||||
FTEC.linebuffer += Pointer_stringify(msg);
|
||||
FTEC.linebuffer += UTF8ToString(msg);
|
||||
for(;;)
|
||||
{
|
||||
nl = FTEC.linebuffer.indexOf("\n");
|
||||
|
@ -24,14 +24,14 @@ mergeInto(LibraryManager.library,
|
|||
},
|
||||
emscriptenfte_alert : function(msg)
|
||||
{
|
||||
msg = Pointer_stringify(msg);
|
||||
msg = UTF8ToString(msg);
|
||||
console.log(msg);
|
||||
alert(msg);
|
||||
},
|
||||
|
||||
emscriptenfte_window_location : function(msg)
|
||||
{
|
||||
msg = Pointer_stringify(msg);
|
||||
msg = UTF8ToString(msg);
|
||||
console.log("Redirecting page to " + msg);
|
||||
window.location = msg;
|
||||
},
|
||||
|
@ -96,7 +96,7 @@ mergeInto(LibraryManager.library,
|
|||
writeStringToMemory(url, urlptr);
|
||||
var mimeptr = _malloc(mime.length+1);
|
||||
writeStringToMemory(mime, mimeptr);
|
||||
Runtime.dynCall('viii', FTEC.evcb.loadfile, [urlptr, mimeptr, handle]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.loadfile, urlptr, mimeptr, handle);
|
||||
_free(mimeptr);
|
||||
_free(urlptr);
|
||||
window.focus();
|
||||
|
@ -115,7 +115,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'resize':
|
||||
if (FTEC.evcb.resize != 0)
|
||||
{
|
||||
Runtime.dynCall('vii', FTEC.evcb.resize, [Module['canvas'].width, Module['canvas'].height]);
|
||||
{{{makeDynCall('vii')}}}(FTEC.evcb.resize, Module['canvas'].width, Module['canvas'].height);
|
||||
}
|
||||
break;
|
||||
case 'mousemove':
|
||||
|
@ -133,12 +133,12 @@ mergeInto(LibraryManager.library,
|
|||
event.movementX = event.webkitMovementX;
|
||||
event.movementY = event.webkitMovementY;
|
||||
}
|
||||
Runtime.dynCall('viiffff', FTEC.evcb.mouse, [0, false, event.movementX, event.movementY, 0, 0]);
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, 0, false, event.movementX, event.movementY, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
var rect = Module['canvas'].getBoundingClientRect();
|
||||
Runtime.dynCall('viiffff', FTEC.evcb.mouse, [0, true, (event.clientX - rect.left)*(Module['canvas'].width/rect.width), (event.clientY - rect.top)*(Module['canvas'].height/rect.height), 0, 0]);
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, 0, true, (event.clientX - rect.left)*(Module['canvas'].width/rect.width), (event.clientY - rect.top)*(Module['canvas'].height/rect.height), 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -149,7 +149,7 @@ mergeInto(LibraryManager.library,
|
|||
//so lets spam requests for it
|
||||
if (Browser.isFullScreen == 0)
|
||||
if (FTEC.evcb.wantfullscreen != 0)
|
||||
if (Runtime.dynCall('i', FTEC.evcb.wantfullscreen, []))
|
||||
if ({{{makeDynCall('i')}}}(FTEC.evcb.wantfullscreen))
|
||||
{
|
||||
Browser.requestFullScreen(true, true);
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'mouseup':
|
||||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
Runtime.dynCall('viii', FTEC.evcb.button, [0, event.type=='mousedown', event.button]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, event.type=='mousedown', event.button);
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -176,7 +176,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'wheel':
|
||||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
Runtime.dynCall('viii', FTEC.evcb.button, [0, 2, event.deltaY]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, 2, event.deltaY);
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -184,16 +184,16 @@ mergeInto(LibraryManager.library,
|
|||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
for (var i = 0; i < 8; i++)
|
||||
Runtime.dynCall('viii', FTEC.evcb.button, [0, false, i]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, false, i);
|
||||
}
|
||||
if (FTEC.pointerislocked == -1)
|
||||
FTEC.pointerislocked = 0;
|
||||
break;
|
||||
case 'focus':
|
||||
case 'blur':
|
||||
Runtime.dynCall('iiiii', FTEC.evcb.key, [0, false, 16, 0]); //shift
|
||||
Runtime.dynCall('iiiii', FTEC.evcb.key, [0, false, 17, 0]); //alt
|
||||
Runtime.dynCall('iiiii', FTEC.evcb.key, [0, false, 18, 0]); //ctrl
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 16, 0); //shift
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 17, 0); //alt
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 18, 0); //ctrl
|
||||
if (FTEC.pointerislocked == -1)
|
||||
FTEC.pointerislocked = 0;
|
||||
break;
|
||||
|
@ -202,8 +202,8 @@ mergeInto(LibraryManager.library,
|
|||
{
|
||||
if (event.charCode >= 122 && event.charCode <= 123) //no f11/f12
|
||||
break;
|
||||
Runtime.dynCall('iiiii', FTEC.evcb.key, [0, 1, 0, event.charCode]);
|
||||
Runtime.dynCall('iiiii', FTEC.evcb.key, [0, 0, 0, event.charCode]);
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, 1, 0, event.charCode);
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, 0, 0, event.charCode);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
|
@ -214,7 +214,7 @@ mergeInto(LibraryManager.library,
|
|||
//we don't steal that because its impossible to leave it again once used.
|
||||
if (FTEC.evcb.key != 0 && event.keyCode != 122)
|
||||
{
|
||||
if (Runtime.dynCall('iiiii', FTEC.evcb.key, [0, event.type=='keydown', event.keyCode, 0]))
|
||||
if ({{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, event.type=='keydown', event.keyCode, 0))
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -228,13 +228,13 @@ mergeInto(LibraryManager.library,
|
|||
{
|
||||
var t = touches[i];
|
||||
if (FTEC.evcb.mouse)
|
||||
Runtime.dynCall('viiffff', FTEC.evcb.mouse, [t.identifier+1, true, t.pageX, t.pageY, 0, Math.sqrt(t.radiusX*t.radiusX+t.radiusY*t.radiusY)]);
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, t.identifier+1, true, t.pageX, t.pageY, 0, Math.sqrt(t.radiusX*t.radiusX+t.radiusY*t.radiusY));
|
||||
if (FTEC.evcb.button)
|
||||
{
|
||||
if (event.type == 'touchstart')
|
||||
Runtime.dynCall('viii', FTEC.evcb.button, [t.identifier+1, 1, 0]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, t.identifier+1, 1, 0);
|
||||
else if (event.type != 'touchmove')
|
||||
Runtime.dynCall('viii', FTEC.evcb.button, [t.identifier+1, 0, 0]);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, t.identifier+1, 0, 0);
|
||||
}
|
||||
}
|
||||
event.preventDefault();
|
||||
|
@ -271,10 +271,10 @@ mergeInto(LibraryManager.library,
|
|||
delete FTEH.gamepads[gp.index];
|
||||
if (FTEC.evcb.jaxis) //try and clear out the axis when released.
|
||||
for (var j = 0; j < 6; j+=1)
|
||||
Runtime.dynCall('viifi', FTEC.evcb.jaxis, [gp.index, j, 0, true]);
|
||||
{{{makeDynCall('viifi')}}}(FTEC.evcb.jaxis, gp.index, j, 0, true);
|
||||
if (FTEC.evcb.jbutton) //try and clear out the axis when released.
|
||||
for (var j = 0; j < 32+4; j+=1)
|
||||
Runtime.dynCall('viiii', FTEC.evcb.jbutton, [gp.index, j, 0, true]);
|
||||
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, 0, true);
|
||||
console.log("Gamepad disconnected from index %d: %s", gp.index, gp.id);
|
||||
break;
|
||||
case 'pointerlockchange':
|
||||
|
@ -307,6 +307,9 @@ mergeInto(LibraryManager.library,
|
|||
FTEC.usevr = false;
|
||||
}
|
||||
break;
|
||||
case 'beforeunload':
|
||||
event.preventDefault();
|
||||
return 'quit this game like everything else?';
|
||||
default:
|
||||
console.log(event);
|
||||
break;
|
||||
|
@ -392,11 +395,11 @@ mergeInto(LibraryManager.library,
|
|||
if (b.lastframe != p)
|
||||
{ //cache it to avoid spam
|
||||
b.lastframe = p;
|
||||
Runtime.dynCall('viiii', FTEC.evcb.jbutton, [gp.index, j, p, gp.mapping=="standard"]);
|
||||
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, p, gp.mapping=="standard");
|
||||
}
|
||||
}
|
||||
for (var j = 0; j < gp.axes.length; j+=1)
|
||||
Runtime.dynCall('viifi', FTEC.evcb.jaxis, [gp.index, j, gp.axes[j], gp.mapping=="standard"]);
|
||||
{{{makeDynCall('viifi')}}}(FTEC.evcb.jaxis, gp.index, j, gp.axes[j], gp.mapping=="standard");
|
||||
}
|
||||
},
|
||||
emscriptenfte_setupcanvas__deps: ['$FTEC', '$Browser', 'emscriptenfte_buf_createfromarraybuf'],
|
||||
|
@ -452,7 +455,7 @@ mergeInto(LibraryManager.library,
|
|||
document.addEventListener(event, FTEC.handleevent, true);
|
||||
});
|
||||
|
||||
var windowevents = ['message','vrdisplaypresentchange','vrdisplayactivate','vrdisplaydeactivate','gamepadconnected', 'gamepaddisconnected'];
|
||||
var windowevents = ['message','vrdisplaypresentchange','vrdisplayactivate','vrdisplaydeactivate','gamepadconnected', 'gamepaddisconnected', 'beforeunload'];
|
||||
windowevents.forEach(function(event)
|
||||
{
|
||||
window.addEventListener(event, FTEC.handleevent, true);
|
||||
|
@ -492,7 +495,7 @@ mergeInto(LibraryManager.library,
|
|||
Browser.setCanvasSize(rect.width, rect.height, false);
|
||||
}
|
||||
if (FTEC.evcb.resize != 0)
|
||||
Runtime.dynCall('vii', FTEC.evcb.resize, [Module['canvas'].width, Module['canvas'].height]);
|
||||
{{{makeDynCall('vii')}}}(FTEC.evcb.resize, Module['canvas'].width, Module['canvas'].height);
|
||||
};
|
||||
window.onresize();
|
||||
|
||||
|
@ -514,28 +517,28 @@ mergeInto(LibraryManager.library,
|
|||
},
|
||||
emscriptenfte_settitle : function(txt)
|
||||
{
|
||||
document.title = Pointer_stringify(txt);
|
||||
document.title = UTF8ToString(txt);
|
||||
},
|
||||
emscriptenfte_abortmainloop : function(fname)
|
||||
{
|
||||
fname = Pointer_stringify(fname);
|
||||
fname = UTF8ToString(fname);
|
||||
FTEC.aborted = true;
|
||||
throw 'oh noes! something bad happened in ' + fname + '!\n' + Module['stackTrace']();
|
||||
},
|
||||
|
||||
emscriptenfte_setupmainloop__deps: ['$FTEC'],
|
||||
emscriptenfte_setupmainloop : function(fnc)
|
||||
{
|
||||
Module['noExitRuntime'] = true;
|
||||
FTEC.aborted = false;
|
||||
|
||||
//Module.abort = abort = function(msg) {};
|
||||
function step(timestamp)
|
||||
{
|
||||
var dovsync = false;
|
||||
var vr = false;
|
||||
if (FTE.aborted)
|
||||
if (FTEC.aborted)
|
||||
return;
|
||||
|
||||
|
||||
if (FTEC.vrDisplay)
|
||||
{
|
||||
vr = FTEC.vrDisplay.isPresenting;
|
||||
|
@ -544,7 +547,7 @@ mergeInto(LibraryManager.library,
|
|||
|
||||
try //this try is needed to handle Host_EndGame properly.
|
||||
{
|
||||
dovsync = Runtime.dynCall('i', fnc, []);
|
||||
dovsync = {{{makeDynCall('i')}}}(fnc);
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
|
@ -555,13 +558,14 @@ mergeInto(LibraryManager.library,
|
|||
if (dovsync)
|
||||
{
|
||||
if (FTEC.vrDisplay)
|
||||
FTEC.vrDisplay.requestAnimationFrame(step);
|
||||
FTEC.vrDisplay.requestAnimationFrame(Module["sched"]);
|
||||
else
|
||||
Browser.requestAnimationFrame(step);
|
||||
Browser.requestAnimationFrame(Module["sched"]);
|
||||
}
|
||||
else
|
||||
setTimeout(step, 0);
|
||||
setTimeout(Module["sched"], 0);
|
||||
};
|
||||
Module["sched"] = step;
|
||||
//don't start it instantly, so we can distinguish between types of errors (emscripten sucks!).
|
||||
setTimeout(step, 1);
|
||||
},
|
||||
|
@ -582,7 +586,7 @@ mergeInto(LibraryManager.library,
|
|||
emscriptenfte_buf_open__deps : ['emscriptenfte_buf_create'],
|
||||
emscriptenfte_buf_open : function(name, createifneeded)
|
||||
{
|
||||
name = Pointer_stringify(name);
|
||||
name = UTF8ToString(name);
|
||||
var f = FTEH.f[name];
|
||||
var r = -1;
|
||||
if (f == null)
|
||||
|
@ -642,8 +646,8 @@ mergeInto(LibraryManager.library,
|
|||
},
|
||||
emscriptenfte_buf_rename : function(oldname, newname)
|
||||
{
|
||||
oldname = Pointer_stringify(oldname);
|
||||
newname = Pointer_stringify(newname);
|
||||
oldname = UTF8ToString(oldname);
|
||||
newname = UTF8ToString(newname);
|
||||
var f = FTEH.f[oldname];
|
||||
if (f == null)
|
||||
return 0;
|
||||
|
@ -656,7 +660,7 @@ mergeInto(LibraryManager.library,
|
|||
},
|
||||
emscriptenfte_buf_delete : function(name)
|
||||
{
|
||||
name = Pointer_stringify(name);
|
||||
name = UTF8ToString(name);
|
||||
var f = FTEH.f[name];
|
||||
if (f)
|
||||
{
|
||||
|
@ -756,8 +760,8 @@ mergeInto(LibraryManager.library,
|
|||
emscriptenfte_ws_connect__deps: ['emscriptenfte_handle_alloc'],
|
||||
emscriptenfte_ws_connect : function(brokerurl, protocolname)
|
||||
{
|
||||
var _url = Pointer_stringify(brokerurl);
|
||||
var _protocol = Pointer_stringify(protocolname);
|
||||
var _url = UTF8ToString(brokerurl);
|
||||
var _protocol = UTF8ToString(protocolname);
|
||||
var s = {ws:null, inq:[], err:0, con:0};
|
||||
try {
|
||||
s.ws = new WebSocket(_url, _protocol);
|
||||
|
@ -864,7 +868,7 @@ console.log("emscriptenfte_rtc_create callback: " + evtype);
|
|||
var stringlen = (stringdata.length*3)+1;
|
||||
var dataptr = _malloc(stringlen);
|
||||
stringToUTF8(stringdata, dataptr, stringlen);
|
||||
Runtime.dynCall('viiii', callback, [ctxp,ctxi,evtype,dataptr]);
|
||||
{{{makeDynCall('viiii')}}}(callback, ctxp,ctxi,evtype,dataptr);
|
||||
_free(dataptr);
|
||||
}
|
||||
};
|
||||
|
@ -973,8 +977,8 @@ console.log(e);
|
|||
emscriptenfte_rtc_offer : function(sockid, offer, offertype)
|
||||
{
|
||||
var s = FTEH.h[sockid];
|
||||
offer = Pointer_stringify(offer);
|
||||
offertype = Pointer_stringify(offertype);
|
||||
offer = UTF8ToString(offer);
|
||||
offertype = UTF8ToString(offertype);
|
||||
if (s === undefined)
|
||||
return -1;
|
||||
|
||||
|
@ -1012,7 +1016,7 @@ console.log(e);
|
|||
emscriptenfte_rtc_candidate : function(sockid, offer)
|
||||
{
|
||||
var s = FTEH.h[sockid];
|
||||
offer = Pointer_stringify(offer);
|
||||
offer = UTF8ToString(offer);
|
||||
if (s === undefined)
|
||||
return -1;
|
||||
|
||||
|
@ -1028,7 +1032,7 @@ console.log(desc);
|
|||
|
||||
emscriptenfte_async_wget_data2 : function(url, ctx, onload, onerror, onprogress)
|
||||
{
|
||||
var _url = Pointer_stringify(url);
|
||||
var _url = UTF8ToString(url);
|
||||
console.log("Attempting download of " + _url);
|
||||
var http = new XMLHttpRequest();
|
||||
try
|
||||
|
@ -1038,7 +1042,7 @@ console.log(desc);
|
|||
catch(e)
|
||||
{
|
||||
if (onerror)
|
||||
Runtime.dynCall('vii', onerror, [ctx, 404]);
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, 404);
|
||||
return;
|
||||
}
|
||||
http.responseType = 'arraybuffer';
|
||||
|
@ -1049,12 +1053,12 @@ console.log("onload: " + _url + " status " + http.status);
|
|||
if (http.status == 200)
|
||||
{
|
||||
if (onload)
|
||||
Runtime.dynCall('vii', onload, [ctx, _emscriptenfte_buf_createfromarraybuf(http.response)]);
|
||||
{{{makeDynCall('vii')}}}(onload, ctx, _emscriptenfte_buf_createfromarraybuf(http.response));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (onerror)
|
||||
Runtime.dynCall('vii', onerror, [ctx, http.status]);
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, http.status);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1062,13 +1066,13 @@ console.log("onload: " + _url + " status " + http.status);
|
|||
{
|
||||
console.log("onerror: " + _url);
|
||||
if (onerror)
|
||||
Runtime.dynCall('vii', onerror, [ctx, 0]);
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, 0);
|
||||
};
|
||||
|
||||
http.onprogress = function(e)
|
||||
{
|
||||
if (onprogress)
|
||||
Runtime.dynCall('viii', onprogress, [ctx, e.loaded, e.total]);
|
||||
{{{makeDynCall('viii')}}}(onprogress, ctx, e.loaded, e.total);
|
||||
};
|
||||
|
||||
try //ffs
|
||||
|
@ -1157,7 +1161,7 @@ console.log("onerror: " + _url);
|
|||
|
||||
var img = new Image();
|
||||
var gltex = GL.textures[texid];
|
||||
img.name = Pointer_stringify(fname);
|
||||
img.name = UTF8ToString(fname);
|
||||
img.onload = function()
|
||||
{
|
||||
if (img.width < 1 || img.height < 1)
|
||||
|
|
Loading…
Reference in a new issue