-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error while trying to run code as is in master #2
Comments
Turns out this repository needs to be updated for changes that have occurred in the emscripten tool chain over the years. This diff got things working for me: diff --git a/create.sh b/create.sh
index 04c5666..09bba04 100755
--- a/create.sh
+++ b/create.sh
@@ -4,11 +4,16 @@ mkdir -p dist
mkdir -p build
em++ \
- --std=c++11 \
+ --std=c++17 \
--bind \
-s WASM=1 \
-s MODULARIZE=1 \
-s ALLOW_MEMORY_GROWTH=1 \
+ -s WASM_ASYNC_COMPILATION=0 \
+ -s BINARYEN_ASYNC_COMPILATION=0 \
+ -s EXPORTED_FUNCTIONS='["_loop"]' \
+ -s "EXPORTED_RUNTIME_METHODS=['ccall']" \
+ -s ENVIRONMENT=shell \
-Iinclude -Ilib \
-O3 -Wall -pedantic \
src/loop.cpp \
diff --git a/include/cppreeps.hpp b/include/cppreeps.hpp
index e45af61..105e639 100644
--- a/include/cppreeps.hpp
+++ b/include/cppreeps.hpp
@@ -75,9 +75,6 @@ namespace screeps {
val Memory = get_global("Memory");
val RawMemory = get_global("RawMemory");
val PathFinder = get_global("PathFinder");
-
- tick_t() { std::printf(LOG_HEAD "TICK{%d} CONSTRUCTED\n", Game["time"].as<int>()); }
- ~tick_t() { std::printf(LOG_HEAD "TICK{%d} DESTROYED\n", Game["time"].as<int>()); }
};
static std::unique_ptr<tick_t> tick;
diff --git a/src/loop.cpp b/src/loop.cpp
index 6d38d51..2f48ae6 100644
--- a/src/loop.cpp
+++ b/src/loop.cpp
@@ -8,34 +8,17 @@
/// Exporting lzw_xxcode() to current module
#include <lzw.hpp>
+extern "C"
+{
void loop() {
using namespace utils;
using namespace screeps;
INIT();
- std::printf("Updated Game.time = %d\n",
- tick->Game["time"].as<int>());
+ std::printf("life\n");
- std::printf("RawMemory.length = %d\n",
- tick->RawMemory.call<val>("get")["length"].as<int>());
-
- std::printf("[OK, MOVE, RESOURCE_ENERGY] = [%d, %s, %s]\n",
- gCONST("OK").as<int>(),
- gCONST("MOVE").as<std::string>().c_str(),
- gCONST("RESOURCE_ENERGY").as<std::string>().c_str());
-
- EM_ASM({
- console.log("ASM: Game time = " + Game.time);
- console.log("ASM: Creeps num = " + _.size(Game.creeps));
- });
-
- auto creeps_map = js_object_to_map(tick->Game["creeps"]);
- for(auto const& kv : creeps_map) {
- auto const& name = kv.first;
- auto const& creep = kv.second;
- creep.call<int>("say", name);
- }
+}
}
EMSCRIPTEN_BINDINGS(loop) { |
Something like: diff --git a/src/main.js b/src/main.js
index 97fe88a..e7451df 100644
--- a/src/main.js
+++ b/src/main.js
@@ -5,6 +5,8 @@ const wasm_loader = require('wasm_loader')
/// Module by XXX.js and XXX.wasm files
const mod = wasm_loader('loop_mod', 'loop');
+global.Game = Game;
+global.Game = RawMemory;
global.byteLength = function(str) {
str = str + "";
let len = str.length; is also necessary to get at the memory |
Hi @TylerSeanRau! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The text was updated successfully, but these errors were encountered: