906b705bf0
fixed non-browser ogg decoding and openal logic. should finally be fixed, I guess. wasted some time on an ezhud plugin, along with ensuring certain info is available to the plugin. this is still a work in progress however. non-web builds are now able to download images from urls. download progress does not display for uri_get/uri_post builtins, nor other non-saved things. q1qvm logic now uses pr_maxedicts cvar. the gamecode api still provides no way to tell how many are permissable, so set at own risk. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4852 fc73d0e0-1445-4013-8a0c-d673dee63da5
51 lines
3.3 KiB
C
51 lines
3.3 KiB
C
//emscripten's download mechanism lacks usable progress indicators.
|
|
void emscriptenfte_async_wget_data2(const char *url, void *ctx, void (*onload)(void*ctx,void*buf,int sz), void (*onerror)(void*ctx,int code), void (*onprogress)(void*ctx,int prog,int total));
|
|
|
|
//filesystem buffers are implemented in javascript so that we are not bound by power-of-two heap limitations quite so much.
|
|
//also, we can't use emscripten's stdio because it reserves 16m file handles or something.
|
|
//these buffers do not track file offsets nor file access permissions.
|
|
int emscriptenfte_buf_create(void);
|
|
int emscriptenfte_buf_open(const char *name, int createifneeded); //open
|
|
int emscriptenfte_buf_rename(const char *oldname, const char *newname); //rename files (if it was open, the handle now refers to the new file instead)
|
|
int emscriptenfte_buf_delete(const char *fname); //delete the named file. there may be problems if its currently open
|
|
void emscriptenfte_buf_release(int handle); //close
|
|
void emscriptenfte_buf_pushtolocalstore(int handle); //make a copy in the browser's local storage, if possible.
|
|
unsigned int emscriptenfte_buf_getsize(int handle); //get the size of the file buffer
|
|
int emscriptenfte_buf_read(int handle, int offset, void *data, int len);//read data
|
|
int emscriptenfte_buf_write(int handle, int offset, const void *data, int len);//write data. no access checks.
|
|
|
|
//websocket is implemented in javascript because there is no usable C api (emscripten's javascript implementation is shite and has fatal errors).
|
|
int emscriptenfte_ws_connect(const char *url); //open a websocket connect to a specific host
|
|
void emscriptenfte_ws_close(int sockid); //close it again
|
|
int emscriptenfte_ws_cansend(int sockid, int extra, int maxpending); //returns false if we're blocking for some reason. avoids overflowing. everything is otherwise reliable.
|
|
int emscriptenfte_ws_send(int sockid, const void *data, int len); //send data to the peer. queues data. never dropped.
|
|
int emscriptenfte_ws_recv(int sockid, void *data, int len); //receive data from the peer.
|
|
|
|
//misc stuff for printf replacements
|
|
void emscriptenfte_alert(const char *msg);
|
|
void emscriptenfte_print(const char *msg);
|
|
void emscriptenfte_abortmainloop(const char *caller);
|
|
|
|
//we're trying to avoid including libpng+libjpeg+libogg in javascript due to it being redundant bloat.
|
|
//to use such textures/sounds, we can just 'directly' load them via webgl
|
|
void emscriptenfte_gl_loadtexturefile(int gltexid, int *width, int *height, void *data, int datasize);
|
|
void emscriptenfte_al_loadaudiofile(int al_buf, void *data, int datasize);
|
|
|
|
//avoid all of emscripten's sdl emulation.
|
|
//this resolves input etc issues.
|
|
unsigned long emscriptenfte_ticks_ms(void);
|
|
void emscriptenfte_polljoyevents(void);
|
|
void emscriptenfte_settitle(const char *text);
|
|
int emscriptenfte_setupcanvas(
|
|
int width,
|
|
int height,
|
|
void(*Resized)(int newwidth, int newheight),
|
|
void(*Mouse)(int devid,int abs,float x,float y,float z,float size),
|
|
void(*Button)(int devid, int down, int mbutton),
|
|
int(*Keyboard)(int devid, int down, int keycode, int unicode),
|
|
void(*LoadFile)(char *url, char *mime, int filehandle),
|
|
void(*buttonevent)(int joydev, int button, int ispressed),
|
|
void(*axisevent)(int joydev, int axis, float value),
|
|
int (*ShouldSwitchToFullscreen)(void)
|
|
);
|
|
|