aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cyberschuessel/schuessel.py5
-rw-r--r--cyberschuessel/templates/index.html34
2 files changed, 28 insertions, 11 deletions
diff --git a/cyberschuessel/schuessel.py b/cyberschuessel/schuessel.py
index 8ce3715..3b05b23 100644
--- a/cyberschuessel/schuessel.py
+++ b/cyberschuessel/schuessel.py
@@ -37,7 +37,8 @@ class Schuessel:
# first draw -> start game
if self.phase == 0:
self.phase = 1
- elif last_word:
+ # we ignore invalid last_words
+ elif last_word and last_word in self.words:
self.drawn.append(last_word)
del (self.words[self.words.index(last_word)])
@@ -126,7 +127,7 @@ class Schuessel:
elif data['action'] == 'reset':
self.reset()
- reset_msg = {'action': 'init'}
+ reset_msg = {'action': 'reset'}
reset_msg.update(self.schuessel_state())
await self.broadcast(reset_msg)
diff --git a/cyberschuessel/templates/index.html b/cyberschuessel/templates/index.html
index 8839f07..eeaa1d9 100644
--- a/cyberschuessel/templates/index.html
+++ b/cyberschuessel/templates/index.html
@@ -78,7 +78,6 @@
let phase = 0;
let words_in_schuessel = 0;
let words_drawn = 0;
- let last_word = ""
let wsUri = (window.location.protocol=='https:'&&'wss://'||'ws://') + window.location.host;
let conn = new WebSocket(wsUri);
@@ -118,9 +117,19 @@
set_words_drawn(words_drawn + diff);
}
+ set_drawn_word = function(word) {
+ let drawn_word = document.getElementById('drawn_word')
+ if (word == '') {
+ drawn_word.innerText = "";
+ } else {
+ drawn_word.innerText = strings.drawn_word_prefix[userLang] + " " + word;
+ }
+
+ localStorage.setItem('last_word', word);
+ }
+
reset_drawn_word = function() {
- document.getElementById('drawn_word').innerText = "";
- last_word = "";
+ set_drawn_word('');
}
set_phase = function(val) {
@@ -131,18 +140,27 @@
let add_div = document.getElementById('add_div');
if (phase != 0) {
add_div.style.display = 'none';
+ set_drawn_word(localStorage.getItem('last_word') || '');
} else {
add_div.style.display = 'block';
reset_drawn_word();
}
-
}
conn.onmessage = function(e) {
let data = JSON.parse(e.data);
switch (data.action) {
+ case 'reset':
+ localStorage.setItem('last_word', '');
+ // fall through
+
case 'init':
- set_words_in_schuessel(data.words);
+ if (data.phase == 0) {
+ set_words_in_schuessel(data.words);
+ } else {
+ // we are playing some one must have a word in hand
+ set_words_in_schuessel(data.words - 1);
+ }
set_words_drawn(data.drawn);
set_phase(data.phase);
break;
@@ -162,9 +180,7 @@
break;
case 'draw':
- let drawn_word = document.getElementById('drawn_word');
- drawn_word.innerText = strings.drawn_word_prefix[userLang] + " " + data.drawn_word;
- last_word = data.drawn_word;
+ set_drawn_word(data.drawn_word);
break;
case 'add':
@@ -190,7 +206,7 @@
document.getElementById("draw_button").onclick = function() {
let data = {};
data.action = 'draw';
- data.last_word = last_word;
+ data.last_word = localStorage.getItem('last_word');
conn.send(JSON.stringify(data));
return false;
}