diff options
author | Patric Stout <truebrain@openttd.org> | 2020-12-05 21:57:47 +0100 |
---|---|---|
committer | Patric Stout <github@truebrain.nl> | 2020-12-15 15:46:39 +0100 |
commit | d15dc9f40f5a20bff452547a2dcb15231f9f969d (patch) | |
tree | 7b8d88635c048d906cbb6358007fb26055e24410 /src/network/network_content.cpp | |
parent | 2da07f76154d841bcfe9aaff4833144550186deb (diff) | |
download | openttd-d15dc9f40f5a20bff452547a2dcb15231f9f969d.tar.xz |
Add: support for emscripten (play-OpenTTD-in-the-browser)
Emscripten compiles to WASM, which can be loaded via
HTML / JavaScript. This allows you to play OpenTTD inside a
browser.
Co-authored-by: milek7 <me@milek7.pl>
Diffstat (limited to 'src/network/network_content.cpp')
-rw-r--r-- | src/network/network_content.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index 5e401d3e9..0140d3ef2 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -23,6 +23,10 @@ #include <zlib.h> #endif +#ifdef __EMSCRIPTEN__ +# include <emscripten.h> +#endif + #include "../safeguards.h" extern bool HasScenario(const ContentInfo *ci, bool md5sum); @@ -289,6 +293,13 @@ void ClientNetworkContentSocketHandler::DownloadSelectedContent(uint &files, uin { bytes = 0; +#ifdef __EMSCRIPTEN__ + /* Emscripten is loaded via an HTTPS connection. As such, it is very + * difficult to make HTTP connections. So always use the TCP method of + * downloading content. */ + fallback = true; +#endif + ContentIDList content; for (const ContentInfo *ci : this->infos) { if (!ci->IsSelected() || ci->state == ContentInfo::ALREADY_HERE) continue; @@ -535,6 +546,10 @@ void ClientNetworkContentSocketHandler::AfterDownload() unlink(GetFullFilename(this->curInfo, false)); } +#ifdef __EMSCRIPTEN__ + EM_ASM(if (window["openttd_syncfs"]) openttd_syncfs()); +#endif + this->OnDownloadComplete(this->curInfo->id); } else { ShowErrorMessage(STR_CONTENT_ERROR_COULD_NOT_EXTRACT, INVALID_STRING_ID, WL_ERROR); |