diff --git a/party/static/party/tegn-fixtures.js b/party/static/party/tegn-fixtures.js
index ab4a484..b2a2de7 100644
--- a/party/static/party/tegn-fixtures.js
+++ b/party/static/party/tegn-fixtures.js
@@ -3,8 +3,8 @@
'use strict';
var COLORS = ['#ff4d6d', '#4cc9f0', '#ffd166', '#06d6a0', '#b388ff'];
var NAMES = ['Asger', 'Sus', 'Bo', 'Mette', 'Kasper'];
- var PHASES = ['lobby', 'rules', 'theme', 'word', 'draw', 'guess', 'reveal-wait', 'reveal', 'reveal-guess', 'reveal-end', 'final'];
- var REAL = { 'reveal-wait': 'reveal', 'reveal-guess': 'reveal', 'reveal-end': 'reveal' };
+ var PHASES = ['lobby', 'rules', 'theme', 'word', 'draw', 'draw-own', 'guess', 'reveal-wait', 'reveal', 'reveal-guess', 'reveal-end', 'final'];
+ var REAL = { 'draw-own': 'draw', 'reveal-wait': 'reveal', 'reveal-guess': 'reveal', 'reveal-end': 'reveal' };
var INK = ['#1d1b2e', '#e63946', '#2a7de1', '#2bb673'];
function circle(cx, cy, r, n) {
@@ -119,6 +119,13 @@
mes[1].task = { kind: 'draw', done: true, from: 'p1', text: 'kat', drawing: null, mine: null, draft: null };
mes[2].task = { kind: 'draw', done: false, from: 'p2', text: 'pizza', drawing: null, mine: null, draft: CAT.slice(0, 4) };
break;
+ case 'draw-own': /* lige antal spillere: trin 1 tegner ejeren sit eget ord */
+ host.theme = theme; host.step = { index: 1, number: 2, of: 5, kind: 'draw', own: true }; host.deadline = now + 61000;
+ host.players = players(4, [{}, { done: true }]);
+ mes[0].task = { kind: 'draw', done: false, from: 'p1', text: 'kat', drawing: null, mine: null, draft: null };
+ mes[1].task = { kind: 'draw', done: true, from: 'p2', text: 'pizza', drawing: null, mine: null, draft: null };
+ mes[2].task = { kind: 'draw', done: false, from: 'p3', text: 'giraf', drawing: null, mine: null, draft: CAT.slice(0, 4) };
+ break;
case 'guess':
host.theme = theme; host.step = { index: 2, number: 3, of: 5, kind: 'guess' }; host.deadline = now + 18000;
mes[0].task = { kind: 'guess', done: false, from: 'p4', text: null, drawing: DOG, mine: null, draft: null };
diff --git a/party/static/party/tegn.js b/party/static/party/tegn.js
index 06b4d56..b0a71b0 100644
--- a/party/static/party/tegn.js
+++ b/party/static/party/tegn.js
@@ -163,7 +163,7 @@
var out = '
' + stepLabel(state) + '
';
if (!t) return out + big('Spillerne tegner…', 'Kig med på storskærmen bagefter.', 'aud', 'pulse');
if (t.done) return out + big('Flot tegnet!', 'Venter på de andre…', 'done', 'pop') + doneCount(state);
- var s = tg(u), full = s.full;
+ var s = tg(u), full = s.full, own = !!(state.step && state.step.own);
var tools = PALETTE.map(function (c) {
return ' ';
}).join('') + WIDTHS.map(function (w, i) {
@@ -171,7 +171,7 @@
}).join('') +
'↶ ' +
'🗑 ';
- return out + 'Tegn ' + esc(t.text || '') + ' ' +
+ return out + '' + (own ? 'Tegn dit eget ord' : 'Tegn') + ' ' + esc(t.text || '') + ' ' +
'
' +
'' +
(full ? 'Tegningen er fuld. Send den, eller fortryd lidt.
' : '') +
@@ -356,6 +356,7 @@
var KIND_TEXT = {
word: 'Skriv et ord om temaet på din telefon!',
draw: 'Tegn det ord, du har fået!',
+ own: 'Tegn dit eget ord!',
guess: 'Hvad forestiller tegningen ? Skriv dit gæt!'
};
var host = {};
@@ -377,7 +378,7 @@
'' + esc(stepLabel(state)) + ' · ' + esc((t.icon ? t.icon + ' ' : '') + (t.name || '')) + '
' +
'' + KIND_ICON[kind] + '
' +
'' + ({ word: 'Skriv et ord', draw: 'Tegn!', guess: 'Gæt tegningen' })[kind] + ' ' +
- '' + KIND_TEXT[kind] + '
' +
+ '' + KIND_TEXT[state.step && state.step.own ? 'own' : kind] + '
' +
'' + WPP.timerHtml(state, 'ring') + '
';
}
host.word = host.draw = host.guess = stepScreen;
diff --git a/party/tegn.py b/party/tegn.py
index 82b3fe0..4565692 100644
--- a/party/tegn.py
+++ b/party/tegn.py
@@ -30,7 +30,7 @@ BEAT_PAD_MS = 700 # luft efter speakerens replik i et trin af afsløringe
HURRY_BEFORE = 10 # "ti sekunder tilbage"
# Replikker uden navne eller spillertekst, som rummet siger alene: dem kan tts_warm lave på forhånd.
# reveal_intro er udeladt med vilje: den siges kun sammen med første kædes intro, som har et navn.
-FIXED_LINES = ("lobby_welcome", "draw_start", "guess_start", "step_hurry", "step_all_done", "play_again")
+FIXED_LINES = ("lobby_welcome", "draw_start", "draw_own_start", "guess_start", "step_hurry", "step_all_done", "play_again")
THEME_LINES = ("theme_chosen", "theme_timeout", "word_start") # {tema}: ét sæt pr. tema
COUNT_LINES = ("game_start",) # {antal_spillere}: ét sæt pr. antal spillere
AWARD_LINES = {"drawing": "award_best_drawing", "guess": "award_best_guess", "survived": "award_survived",
@@ -161,7 +161,7 @@ class TegnRoom(rooms.BaseRoom):
if t == "step":
if ev["step"] == "word":
return [line("word_start", tema=ev["theme"])]
- return [line(f"{ev['step']}_start")]
+ return [line("draw_own_start" if ev.get("own") else f"{ev['step']}_start")]
if t in ("step_all_done", "play_again"):
return [line(t)]
if t == "final":
diff --git a/party/tests/test_tegn.py b/party/tests/test_tegn.py
index 973ee5b..ca37b53 100644
--- a/party/tests/test_tegn.py
+++ b/party/tests/test_tegn.py
@@ -187,6 +187,10 @@ class TegnSpeakerTests(SimpleTestCase):
room = TegnRoom("TEST", g, "agw")
self.assertIn("Dyr", room.lines_for({"type": "theme_chosen", "theme": "Dyr", "timeout": False})[0])
self.assertIn("Dyr", room.lines_for({"type": "step", "step": "word", "theme": "Dyr"})[0])
+ own = room.lines_for({"type": "step", "step": "draw", "theme": "Dyr", "own": True})[0]
+ self.assertIn(own, room.narrator.variants("draw_own_start")) # lige antal: ejeren tegner sit eget ord
+ self.assertIn(room.lines_for({"type": "step", "step": "draw", "theme": "Dyr", "own": False})[0],
+ room.narrator.variants("draw_start"))
lines = room.lines_for({"type": "final", "winner": "Bo", "points": 600,
"awards": [{"kind": "drawing", "name": "Sus"}]})
self.assertIn("seks hundrede", lines[0])
diff --git a/tegnoggaet/narrator/lines.json b/tegnoggaet/narrator/lines.json
index 5872cb8..39f6c4b 100644
--- a/tegnoggaet/narrator/lines.json
+++ b/tegnoggaet/narrator/lines.json
@@ -64,6 +64,13 @@
"Tegn løs. Det behøver ikke være kønt, bare genkendeligt.",
"Fingrene frem. Tegn det, du ser på skærmen."
],
+ "draw_own_start": [
+ "Tegn dit eget ord. Ingen bogstaver!",
+ "[excited] Først tegner I jeres eget ord. Kun streger.",
+ "Nu skal I tegne det ord, I selv skrev. Gør det tydeligt.",
+ "Jeres eget ord først. Tegn det, så de andre kan gætte det.",
+ "Tegn det ord, du selv fandt på. Bare streger, ingen bogstaver."
+ ],
"guess_start": [
"Hvad forestiller tegningen? Skriv dit gæt.",
"Kig godt på tegningen. Hvad er det?",
diff --git a/tegnoggaet/tests/test_lines.py b/tegnoggaet/tests/test_lines.py
index 0fa8d98..56129b6 100644
--- a/tegnoggaet/tests/test_lines.py
+++ b/tegnoggaet/tests/test_lines.py
@@ -14,7 +14,7 @@ LINES = Path(__file__).resolve().parents[1] / "narrator" / "lines.json"
EVENTS = {
"lobby_welcome": set(), "lobby_join": {"navn"}, "lobby_waiting": {"vip"}, "game_start": {"antal_spillere"},
"theme_choose": {"vip"}, "theme_chosen": {"tema"}, "theme_timeout": {"tema"}, "word_start": {"tema"},
- "draw_start": set(), "guess_start": set(), "step_hurry": set(), "step_all_done": set(),
+ "draw_start": set(), "draw_own_start": set(), "guess_start": set(), "step_hurry": set(), "step_all_done": set(),
"reveal_intro": set(), "chain_intro": {"navn"}, "chain_survived": {"ord"}, "chain_changed": {"ord", "gaet"},
"award_best_drawing": {"navn"}, "award_best_guess": {"navn"}, "award_survived": {"navn"},
"award_transformed": {"navn"}, "winner": {"vinder", "point"}, "play_again": set(),