summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/dartboat_wasm.c49
-rw-r--r--web/static/dartboat.js29
2 files changed, 51 insertions, 27 deletions
diff --git a/web/dartboat_wasm.c b/web/dartboat_wasm.c
index e00c330..e8cde21 100644
--- a/web/dartboat_wasm.c
+++ b/web/dartboat_wasm.c
@@ -125,6 +125,38 @@ EMSCRIPTEN_KEEPALIVE void draw_match() {
}
}
+char *str_for_rem_state(int rem) {
+ char *buf = malloc(10);
+
+ if (rem < 0 || rem == 1)
+ strcpy(buf, "BUST");
+ else
+ sprintf(buf, "%d", rem);
+
+ return buf;
+}
+
+EMSCRIPTEN_KEEPALIVE void update_user_rem(int rem) {
+ char *str = str_for_rem_state(rem);
+ EM_ASM({updateUserStateRem($0)}, str);
+ free(str);
+
+ get_suggested(rem, 1);
+}
+
+EMSCRIPTEN_KEEPALIVE void update_user_rem_from_pts(int pts) {
+ update_user_rem(state->l1->rem - pts);
+}
+
+EMSCRIPTEN_KEEPALIVE void update_boat_rem(int rem) {
+ char *str = str_for_rem_state(rem);
+ EM_ASM({updateBoatStateRem($0)}, str);
+ free(str);
+
+ get_suggested(rem, 2);
+}
+
+
EMSCRIPTEN_KEEPALIVE void boat_visit() {
if (state->l1->rem <= 0 || state->l2->rem <= 0)
return;
@@ -143,7 +175,7 @@ EMSCRIPTEN_KEEPALIVE void boat_visit() {
avg = ((double)l->start / (((l->n_visits - 1) * 3) + v->n_darts)) * 3;
if (!delay_ms) {
- EM_ASM({updateBoatStateRem($0)}, l->rem);
+ update_boat_rem(l->rem);
EM_ASM({updateBoatAvg($0)}, avg);
EM_ASM({clearMatchLog()});
draw_match();
@@ -196,7 +228,7 @@ EMSCRIPTEN_KEEPALIVE bool user_visit(int points) {
v->points = points;
l->rem -= points;
v->rem = l->rem;
- EM_ASM({updateUserRem($0)}, l->rem);
+ update_user_rem(l->rem);
if (v->rem > 0)
EM_ASM({updateUserAvg($0)}, (double)(l->start-l->rem)/l->n_visits);
@@ -212,19 +244,24 @@ EMSCRIPTEN_KEEPALIVE bool user_visit(int points) {
return true;
}
+// FIXME neg
+EMSCRIPTEN_KEEPALIVE bool user_visit_to_rem(int rem) {
+ user_visit(state->l1->rem - rem);
+}
+
EMSCRIPTEN_KEEPALIVE void draw_boat_throwing(int pts, char *str) {
char buf[10];
sprintf(buf, "%d", pts);
int rem = state->l2->n_visits > 1 ? state->l2->visits[state->l2->n_visits-2].rem : state->l2->start;
- EM_ASM({updateBoatStateRem($0)}, rem - pts);
+ update_boat_rem(rem - pts);
EM_ASM({setPromptText($0)}, buf);
EM_ASM({promptSugg($0)}, str);
}
EMSCRIPTEN_KEEPALIVE void end_boat_throwing(int rem, int avg) {
- EM_ASM({updateBoatStateRem($0)}, rem);
+ update_boat_rem(rem);
EM_ASM({updateBoatAvg($0)}, avg);
EM_ASM({setPromptText($0)}, "");
EM_ASM(clearMatchLog());
@@ -280,8 +317,8 @@ EMSCRIPTEN_KEEPALIVE void start_match() {
EM_ASM({updateUserName($0)}, state->l1->name);
EM_ASM({updateBoatName($0)}, state->l2->name);
- EM_ASM({updateUserRem($0)}, state->l1->rem);
- EM_ASM({updateBoatStateRem($0)}, state->l2->rem);
+ update_user_rem(state->l1->rem);
+ update_boat_rem(state->l2->rem);
EM_ASM(clearMatchLog());
set_user_active();
diff --git a/web/static/dartboat.js b/web/static/dartboat.js
index 292c50d..2a26a0c 100644
--- a/web/static/dartboat.js
+++ b/web/static/dartboat.js
@@ -45,9 +45,9 @@ let prompt_handlers = {
},
submit_rem() {
- let pts = _promptGetAndClear();
- if (pts)
- Module.ccall('user_visit', 'number', ['number'], [user_rem - pts]);
+ let rem = _promptGetAndClear();
+ if (rem)
+ Module.ccall('user_visit_to_rem', 'number', ['number'], [rem]);
}
},
num_darts: {
@@ -127,22 +127,12 @@ function clearOi() {
}
}
-let user_rem;
-function updateUserRem(rem) {
- user_rem = rem;
- updateUserStateRem(rem);
+function updateUserStateRem(ptr) {
+ document.getElementById('p1-rem').textContent = UTF8ToString(ptr);
}
-function updateUserStateRem(rem) {
- let elem = document.getElementById('p1-rem');
- elem.textContent = rem < 0 || rem == 1 ? 'BUST' : rem;
- Module.ccall('get_suggested', null, ['number', 'number'], [rem, 1]);
-}
-
-function updateBoatStateRem(rem) {
- let elem = document.getElementById('p2-rem');
- elem.textContent = rem < 0 || rem == 1 ? 'BUST' : rem;
- Module.ccall('get_suggested', null, ['number', 'number'], [rem, 2]);
+function updateBoatStateRem(ptr) {
+ document.getElementById('p2-rem').textContent = UTF8ToString(ptr);
}
function updateUserName(p) {
@@ -182,10 +172,7 @@ function promptSugg(p) {
}
function promptUpdateRem() {
- let elem = document.getElementById('p1-rem');
- let pts = _promptGet();
-
- updateUserStateRem(pts ? user_rem - pts : user_rem);
+ Module.ccall('update_user_rem_from_pts', null, ['number'], [_promptGet()]);
}
function setUserActive() {