diff --git a/src/cfd.sqlite b/src/cfd.sqlite index 982bdad438b200029529408c0f55b04650c7ced3..f3fe33a6f9d8ff4e040941ebb652492020309c21 100644 Binary files a/src/cfd.sqlite and b/src/cfd.sqlite differ diff --git a/src/data/questions_35c3.json b/src/data/questions_35c3.json deleted file mode 100644 index e97c7978cb7f763a2c4ea781f907c5ce6f59ceed..0000000000000000000000000000000000000000 --- a/src/data/questions_35c3.json +++ /dev/null @@ -1,477 +0,0 @@ -[ - { - "question": "Nenne eine Programmiersprache:", - "answers": [ - { - "answer": "python", - "score": 247 - }, - { - "answer": "c", - "score": 246 - }, - { - "answer": "c++", - "score": 104 - }, - { - "answer": "java", - "score": 87 - }, - { - "answer": "rust", - "score": 81 - } - ] - }, - { - "question": "Nenne einen Compiler:", - "answers": [ - { - "answer": "gcc", - "score": 750 - }, - { - "answer": "clang", - "score": 160 - }, - { - "answer": "llvm", - "score": 67 - }, - { - "answer": "javac", - "score": 45 - }, - { - "answer": "ghc", - "score": 34 - } - ] - }, - { - "question": "Nenne eine Prozessorarchitektur:", - "answers": [ - { - "answer": "arm", - "score": 375 - }, - { - "answer": "x86", - "score": 289 - }, - { - "answer": "risc", - "score": 78 - }, - { - "answer": "amd64", - "score": 76 - }, - { - "answer": "mips", - "score": 75 - } - ] - }, - { - "question": "Nenne eine Zahl:", - "answers": [ - { - "answer": "42", - "score": 468 - }, - { - "answer": "23", - "score": 218 - }, - { - "answer": "7", - "score": 78 - }, - { - "answer": "pi", - "score": 59 - }, - { - "answer": "1", - "score": 49 - } - ] - }, - { - "question": "Nenne ein Netzwerkprotokoll:", - "answers": [ - { - "answer": "tcp", - "score": 474 - }, - { - "answer": "udp", - "score": 155 - }, - { - "answer": "http", - "score": 104 - }, - { - "answer": "ip", - "score": 69 - }, - { - "answer": "ssh", - "score": 51 - } - ] - }, - { - "question": "Nenne einen HTTP-Statuscode:", - "answers": [ - { - "answer": "404", - "score": 486 - }, - { - "answer": "418", - "score": 212 - }, - { - "answer": "200", - "score": 178 - }, - { - "answer": "403", - "score": 90 - }, - { - "answer": "500", - "score": 67 - } - ] - }, - { - "question": "Nenne einen Standard:", - "answers": [ - { - "answer": "din a4", - "score": 68 - }, - { - "answer": "iso 8601", - "score": 38 - }, - { - "answer": "iso", - "score": 36 - }, - { - "answer": "iso 9001", - "score": 34 - }, - { - "answer": "din", - "score": 31 - } - ] - }, - { - "question": "Nenne einen HTML-Tag:", - "answers": [ - { - "answer": "html", - "score": 149 - }, - { - "answer": "blink", - "score": 140 - }, - { - "answer": "a", - "score": 130 - }, - { - "answer": "body", - "score": 125 - }, - { - "answer": "marquee", - "score": 109 - } - ] - }, - { - "question": "Nenne einen Kernel:", - "answers": [ - { - "answer": "linux", - "score": 494 - }, - { - "answer": "hurd", - "score": 72 - }, - { - "answer": "darwin", - "score": 56 - }, - { - "answer": "mach", - "score": 56 - }, - { - "answer": "xnu", - "score": 37 - } - ] - }, - { - "question": "Nenne ein Getr\u00e4nk:", - "answers": [ - { - "answer": "mate", - "score": 372 - }, - { - "answer": "wasser", - "score": 135 - }, - { - "answer": "bier", - "score": 105 - }, - { - "answer": "kaffee", - "score": 105 - }, - { - "answer": "cola", - "score": 99 - } - ] - }, - { - "question": "Nenne ein Gesellschaftsspiel:", - "answers": [ - { - "answer": "monopoly", - "score": 318 - }, - { - "answer": "risiko", - "score": 105 - }, - { - "answer": "mensch \u00e4rgere dich nicht", - "score": 96 - }, - { - "answer": "siedler von catan", - "score": 86 - }, - { - "answer": "cards against humanity", - "score": 40 - } - ] - }, - { - "question": "Nenne einen Cocktail:", - "answers": [ - { - "answer": "tschunk", - "score": 409 - }, - { - "answer": "white russian", - "score": 122 - }, - { - "answer": "sex on the beach", - "score": 79 - }, - { - "answer": "mojito", - "score": 61 - }, - { - "answer": "cuba libre", - "score": 47 - } - ] - }, - { - "question": "Nenne eine Shell:", - "answers": [ - { - "answer": "bash", - "score": 556 - }, - { - "answer": "zsh", - "score": 493 - }, - { - "answer": "fish", - "score": 99 - }, - { - "answer": "powershell", - "score": 29 - }, - { - "answer": "ksh", - "score": 23 - } - ] - }, - { - "question": "Nenne eine Farbe:", - "answers": [ - { - "answer": "blau", - "score": 292 - }, - { - "answer": "schwarz", - "score": 229 - }, - { - "answer": "gr\u00fcn", - "score": 197 - }, - { - "answer": "rot", - "score": 172 - }, - { - "answer": "gelb", - "score": 64 - } - ] - }, - { - "question": "Nenne einen Film:", - "answers": [ - { - "answer": "matrix", - "score": 209 - }, - { - "answer": "hackers", - "score": 119 - }, - { - "answer": "23", - "score": 56 - }, - { - "answer": "tron", - "score": 31 - }, - { - "answer": "pulp fiction", - "score": 31 - } - ] - }, - { - "question": "Nenne eine Serie:", - "answers": [ - { - "answer": "doctor who", - "score": 64 - }, - { - "answer": "it crowd", - "score": 63 - }, - { - "answer": "mr. robot", - "score": 59 - }, - { - "answer": "star trek", - "score": 49 - }, - { - "answer": "game of thrones", - "score": 48 - } - ] - }, - { - "question": "Von welchem Hersteller ist dein Laptop?", - "answers": [ - { - "answer": "lenovo", - "score": 644 - }, - { - "answer": "apple", - "score": 372 - }, - { - "answer": "dell", - "score": 110 - }, - { - "answer": "hp", - "score": 69 - }, - { - "answer": "acer", - "score": 50 - } - ] - }, - { - "question": "Nenne ein Werkzeug:", - "answers": [ - { - "answer": "hammer", - "score": 507 - }, - { - "answer": "schraubendreher", - "score": 90 - }, - { - "answer": "l\u00f6tkolben", - "score": 90 - }, - { - "answer": "schraubenzieher", - "score": 56 - }, - { - "answer": "phasenpr\u00fcfer", - "score": 52 - } - ] - }, - { - "question": "Nenne den PIN deiner EC Karte:", - "answers": [ - { - "answer": "1234", - "score": 264 - }, - { - "answer": "0000", - "score": 206 - }, - { - "answer": "1337", - "score": 173 - }, - { - "answer": "2342", - "score": 80 - }, - { - "answer": "nein", - "score": 64 - } - ] - } -] \ No newline at end of file diff --git a/src/frontend/ChaosWest.png b/src/frontend/ChaosWest.png deleted file mode 100644 index 961d765286aba46f8fb550b1579da483fc5a27ca..0000000000000000000000000000000000000000 Binary files a/src/frontend/ChaosWest.png and /dev/null differ diff --git a/src/frontend/ChaosWest.svg b/src/frontend/ChaosWest.svg deleted file mode 100644 index 29c833f5d27d229e2030dad078c74cc37bd2fb9a..0000000000000000000000000000000000000000 --- a/src/frontend/ChaosWest.svg +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 23.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 322.2 396.6" style="enable-background:new 0 0 322.2 396.6;" xml:space="preserve"> -<style type="text/css"> - .st0{clip-path:url(#SVGID_2_);fill:url(#SVGID_3_);} -</style> -<g> - <defs> - <path id="SVGID_1_" d="M156.3,342.2c0,2.1,1.4,3.9,3.3,4.6v20.9c-1.9,0.6-3.3,2.4-3.3,4.6c0,2.7,2.2,4.8,4.8,4.8 - c2.7,0,4.8-2.2,4.8-4.8c0-2.1-1.4-3.9-3.3-4.6v-20.9c1.9-0.6,3.3-2.4,3.3-4.6c0-2.7-2.2-4.8-4.8-4.8 - C158.4,337.4,156.3,339.6,156.3,342.2 M103.9,334.1c-1.5,2.2-1,5.2,1.2,6.7c1.7,1.2,4,1.1,5.6-0.1l17.2,12 - c-0.6,1.9,0.1,4.1,1.8,5.3c2.2,1.5,5.2,1,6.7-1.2c1.5-2.2,1-5.2-1.2-6.7c-1.7-1.2-4-1.1-5.6,0.1l-17.2-12c0.6-1.9-0.1-4.1-1.8-5.3 - c-0.8-0.6-1.8-0.9-2.8-0.9C106.4,332,104.9,332.7,103.9,334.1 M212,332.9c-1.7,1.2-2.4,3.4-1.8,5.3l-17.2,12 - c-1.6-1.2-3.9-1.3-5.6-0.1c-2.2,1.5-2.7,4.5-1.2,6.7c1.5,2.2,4.5,2.7,6.7,1.2c1.7-1.2,2.4-3.4,1.8-5.3l17.2-12 - c1.6,1.2,3.9,1.4,5.6,0.1c2.2-1.5,2.7-4.5,1.2-6.7c-0.9-1.3-2.4-2.1-4-2.1C213.8,332,212.8,332.3,212,332.9 M43.7,265.2 - c-1.6,0.7-2.8,1.6-3.6,2.8c-0.8,1.2-1.2,2.5-1.2,3.9c0,1.6,0.4,2.9,1.3,3.9c0.9,1,1.9,1.7,3,2.1c1.2,0.4,2.6,0.8,4.4,1.2 - c1.4,0.3,2.3,0.5,2.9,0.8c0.6,0.2,0.9,0.6,0.9,1.1c0,0.4-0.2,0.7-0.7,0.9c-0.5,0.2-1.2,0.3-2.3,0.3c-1.2,0-2.5-0.2-3.9-0.6 - c-1.3-0.4-2.5-0.9-3.6-1.5l-2.5,5.6c1.1,0.7,2.6,1.3,4.4,1.7c1.8,0.4,3.6,0.6,5.5,0.6c2.3,0,4.2-0.3,5.8-1 - c1.6-0.7,2.8-1.6,3.6-2.8c0.8-1.2,1.2-2.4,1.2-3.9c0-1.6-0.4-2.9-1.3-3.9c-0.9-1-1.9-1.6-3.1-2.1c-1.2-0.4-2.6-0.8-4.4-1.1 - c-1.3-0.3-2.3-0.5-2.9-0.7c-0.6-0.2-0.9-0.6-0.9-1c0-0.9,1-1.4,2.9-1.4c2,0,4.1,0.6,6.3,1.7l2.3-5.5c-1.1-0.6-2.5-1.1-4-1.5 - c-1.5-0.3-3-0.5-4.6-0.5C47.2,264.2,45.3,264.5,43.7,265.2 M264.1,245.4v5.9h6.6V268h7.6v-16.7h6.6v-5.9H264.1z M46,242.1 - c-0.8-0.5-1.4-1.1-1.8-2c-0.5-0.9-0.7-1.9-0.7-3s0.2-2.1,0.7-3c0.5-0.9,1.1-1.5,1.8-2c0.8-0.5,1.6-0.7,2.6-0.7 - c1,0,1.8,0.2,2.6,0.7c0.8,0.5,1.4,1.1,1.8,2c0.5,0.9,0.7,1.9,0.7,3s-0.2,2.1-0.7,3c-0.5,0.9-1.1,1.5-1.8,2 - c-0.8,0.5-1.6,0.7-2.6,0.7C47.6,242.8,46.8,242.6,46,242.1 M42,226.8c-1.9,1-3.5,2.4-4.6,4.2c-1.1,1.8-1.7,3.8-1.7,6.1 - c0,2.3,0.6,4.3,1.7,6.1c1.1,1.8,2.6,3.2,4.6,4.2c1.9,1,4.1,1.5,6.6,1.5c2.4,0,4.6-0.5,6.6-1.5c1.9-1,3.5-2.4,4.6-4.2 - c1.1-1.8,1.7-3.8,1.7-6.1c0-2.3-0.5-4.3-1.7-6.1c-1.1-1.8-2.6-3.2-4.6-4.2c-1.9-1-4.1-1.5-6.6-1.5C46.1,225.3,43.9,225.8,42,226.8 - M270.2,208c-1.6,0.7-2.8,1.6-3.6,2.8c-0.8,1.2-1.2,2.5-1.2,3.9c0,1.6,0.4,2.9,1.3,3.9c0.9,1,1.9,1.7,3,2.1 - c1.2,0.4,2.6,0.8,4.4,1.2c1.4,0.3,2.3,0.5,2.9,0.8c0.6,0.2,0.9,0.6,0.9,1.1c0,0.4-0.2,0.7-0.7,0.9c-0.5,0.2-1.2,0.3-2.3,0.3 - c-1.2,0-2.5-0.2-3.9-0.6c-1.3-0.4-2.5-0.9-3.6-1.5l-2.5,5.6c1.1,0.7,2.6,1.3,4.4,1.7c1.8,0.4,3.6,0.6,5.5,0.6c2.3,0,4.2-0.3,5.8-1 - c1.6-0.7,2.8-1.6,3.6-2.8c0.8-1.2,1.2-2.4,1.2-3.9c0-1.6-0.4-2.9-1.3-3.9c-0.9-0.9-1.9-1.6-3.1-2.1c-1.2-0.4-2.6-0.8-4.4-1.1 - c-1.3-0.3-2.3-0.5-2.9-0.7c-0.6-0.2-0.9-0.6-0.9-1c0-0.9,1-1.4,2.9-1.4c2,0,4.1,0.6,6.3,1.7l2.3-5.5c-1.1-0.6-2.5-1.1-4-1.5 - c-1.5-0.3-3-0.5-4.6-0.5C273.7,207,271.8,207.4,270.2,208 M48.5,194.5l2.2,5.7h-4.4L48.5,194.5z M44.8,187l-9.9,22.7h7.8l1.5-4 - h8.6l1.5,4h7.9L52.3,187H44.8z M265.1,167.7v22.7h18.9v-5.8h-11.3v-3h9.6v-5.5h-9.6v-2.7h10.9v-5.8H265.1z M52.3,147.6v8h-7.1v-8 - h-7.6v22.7h7.6v-8.4h7.1v8.4H60v-22.7H52.3z M286.5,128.3l-4.2,13.1l-4-13.1h-7l-4.2,12.9l-4-12.9h-7.9l7.3,22.7h8.2l3.9-12.1 - l3.7,12.1h8.2l7.3-22.7H286.5z M43.3,109.7c-1.9,1-3.4,2.4-4.5,4.2c-1.1,1.8-1.6,3.9-1.6,6.1c0,2.3,0.5,4.3,1.6,6.1 - c1.1,1.8,2.6,3.2,4.5,4.2c1.9,1,4.1,1.5,6.5,1.5c2.2,0,4.2-0.4,5.9-1.2c1.7-0.8,3.2-1.9,4.3-3.4l-4.8-4.3c-1.4,1.8-3.1,2.7-5,2.7 - c-1.6,0-2.9-0.5-3.9-1.5c-1-1-1.5-2.4-1.5-4.1c0-1.7,0.5-3.1,1.5-4.1c1-1,2.3-1.5,3.9-1.5c1.9,0,3.6,0.9,5,2.7l4.8-4.3 - c-1.1-1.5-2.5-2.6-4.3-3.4c-1.7-0.8-3.7-1.2-5.9-1.2C47.4,108.2,45.2,108.7,43.3,109.7 M145.3,263.6c0-2.7,2.2-4.9,4.9-4.9 - c2.7,0,4.9,2.2,4.9,4.9c0,2.7-2.2,4.9-4.9,4.9C147.5,268.5,145.3,266.3,145.3,263.6 M165.4,263.6c0-2.7,2.2-4.9,4.9-4.9 - c2.7,0,4.9,2.2,4.9,4.9c0,2.7-2.2,4.9-4.9,4.9C167.6,268.5,165.4,266.3,165.4,263.6 M107.7,218.4c0-2.7,2.2-4.9,4.9-4.9 - c2.7,0,4.9,2.2,4.9,4.9c0,2.7-2.2,4.9-4.9,4.9C109.9,223.3,107.7,221.1,107.7,218.4 M203,218.4c0-2.7,2.2-4.9,4.9-4.9 - s4.9,2.2,4.9,4.9c0,2.7-2.2,4.9-4.9,4.9S203,221.1,203,218.4 M202,184.7c0-2.7,2.2-4.9,4.9-4.9c2.7,0,4.9,2.2,4.9,4.9 - c0,2.7-2.2,4.9-4.9,4.9C204.2,189.6,202,187.4,202,184.7 M310,105.4l9.2,6.3v173.1l-9.2,6.3V105.4z M3,284.8V111.7l10-6.9v186.9 - L3,284.8z M202,108.3c0-2.7,2.2-4.9,4.9-4.9c2.7,0,4.9,2.2,4.9,4.9c0,2.7-2.2,4.9-4.9,4.9C204.2,113.1,202,110.9,202,108.3 - M131.9,74.7h58.8c0.8,1.6,2.4,2.8,4.3,2.8c0.8,0,1.6-0.2,2.2-0.6l41.7,24.9v115.7h-23.3c-0.5-3.8-3.8-6.8-7.8-6.8 - c-4.3,0-7.9,3.5-7.9,7.9c0,3.8,2.7,7,6.3,7.7V284l-7.8,8.9h-17.5l-9.8-9v-12.5c3.9-0.5,6.9-3.8,6.9-7.8c0-4.3-3.5-7.9-7.9-7.9 - c-3.6,0-6.7,2.5-7.6,5.9h-5c-0.9-3.4-3.9-5.9-7.6-5.9c-4.3,0-7.9,3.5-7.9,7.9c0,4,3,7.3,6.9,7.8v12.5l-9.8,9h-17.5l-7.8-8.9v-57.9 - c3.6-0.7,6.3-3.9,6.3-7.7c0-4.3-3.5-7.9-7.9-7.9c-4.3,0-7.9,3.5-7.9,7.9c0,3.8,2.8,7,6.4,7.7v59l9.4,10.8h20l11.6-10.7v-14 - c3-0.8,5.3-3.4,5.8-6.6h4.6c0.4,3.2,2.7,5.7,5.8,6.6v14l11.6,10.7h20l9.4-10.8v-59c3-0.6,5.4-2.8,6.2-5.7H239V342l-0.9-1.2 - l-76.6,52.8h-0.8l-76.6-52.8V147h29.8v18.3l17.7,20.9h67.5V186c0.6,3.7,3.8,6.6,7.7,6.6c4.3,0,7.9-3.5,7.9-7.9 - c0-4.3-3.5-7.9-7.9-7.9c-3.9,0-7.1,2.9-7.7,6.6v-0.3H133l-16.1-19v-34.6l16.1-19.7h66.1c0.7,3.6,3.9,6.3,7.7,6.3 - c4.3,0,7.9-3.5,7.9-7.9c0-4.3-3.5-7.9-7.9-7.9c-3.9,0-7,2.8-7.7,6.4h-67.5l-17.7,21.6V144H84.1v-42l40.6-25.4 - c0.8,0.6,1.8,0.9,2.8,0.9C129.5,77.5,131.1,76.3,131.9,74.7 M16,307.5v-219l65-45.6v310.2L16,307.5z M242,43l65,45.6v219l-65,45.6 - V43z M84.1,41.1l39.2,29.3c-0.4,0.7-0.6,1.4-0.6,2.3c0,0.5,0.1,1,0.2,1.4L84.1,98.4V41.1z M199.4,74.7c0.3-0.6,0.5-1.3,0.5-2 - c0-0.7-0.2-1.4-0.5-2L239,41v57.3L199.4,74.7z M97,46.9L160.7,3h0.8l64.1,44.2l-28.4,21.2c-0.7-0.4-1.4-0.6-2.3-0.6 - c-2.3,0-4.3,1.7-4.7,3.9h-58c-0.4-2.2-2.4-3.9-4.7-3.9c-0.7,0-1.4,0.2-2,0.5L97,46.9z M159.8,0L94.4,45.1l-10.3-7.7v-0.1L13,87 - v14.2l-13,9v176.2l13,9v13.7l71,49.8v-14.5l75.7,52.2h2.7l76.5-52.8v15.1l70.4-49.4l0.6-0.4v-14.3l12.2-8.4V110.2l-12.2-8.4V87 - l-71-49.8v0.1l0,0l-10.8,8.1L162.4,0H159.8z"/> - </defs> - <clipPath id="SVGID_2_"> - <use xlink:href="#SVGID_1_" style="overflow:visible;"/> - </clipPath> - - <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="9.466112e-08" y1="397.6167" x2="1" y2="397.6167" gradientTransform="matrix(322.2028 0 0 -322.2028 -3.049988e-05 128311.5078)"> - <stop offset="0" style="stop-color:#0084B1"/> - <stop offset="1" style="stop-color:#00A356"/> - </linearGradient> - <rect x="0" y="0" class="st0" width="322.2" height="396.6"/> -</g> -</svg> diff --git a/src/frontend/PermanentMarker-Regular.ttf b/src/frontend/PermanentMarker-Regular.ttf deleted file mode 100644 index 3218fc5b3d395c3a3fc207fdf17a27bb32af3242..0000000000000000000000000000000000000000 Binary files a/src/frontend/PermanentMarker-Regular.ttf and /dev/null differ diff --git a/src/frontend/PressStart2P-Regular.ttf b/src/frontend/PressStart2P-Regular.ttf deleted file mode 100644 index 39adf42efa597906e53be689474ac82214112124..0000000000000000000000000000000000000000 Binary files a/src/frontend/PressStart2P-Regular.ttf and /dev/null differ diff --git a/src/frontend/audio/Familien Duell Intromusik-ZIjs-VVh8l8.m4a b/src/frontend/audio/Familien Duell Intromusik-ZIjs-VVh8l8.m4a deleted file mode 100644 index 542a5c0cf101c685feb1260f42d8c24210b3b063..0000000000000000000000000000000000000000 Binary files a/src/frontend/audio/Familien Duell Intromusik-ZIjs-VVh8l8.m4a and /dev/null differ diff --git a/src/frontend/audio/failure.mp3 b/src/frontend/audio/failure.mp3 deleted file mode 100644 index c40bcdbc6ba28b3e81540b6d2a2309049f99a655..0000000000000000000000000000000000000000 Binary files a/src/frontend/audio/failure.mp3 and /dev/null differ diff --git a/src/frontend/audio/frage.mp3 b/src/frontend/audio/frage.mp3 deleted file mode 100644 index cb0adb63d075205957bfdc4cf9da98f0bd602385..0000000000000000000000000000000000000000 Binary files a/src/frontend/audio/frage.mp3 and /dev/null differ diff --git a/src/frontend/audio/intro.mp3 b/src/frontend/audio/intro.mp3 deleted file mode 100644 index 74be728bc5a1aa8fe655f4b9a4d55e293fef688f..0000000000000000000000000000000000000000 Binary files a/src/frontend/audio/intro.mp3 and /dev/null differ diff --git a/src/frontend/chaos_west_text.jpg b/src/frontend/chaos_west_text.jpg deleted file mode 100644 index fa13fd5fd5e3ed15cf9e7c30ca52276d763a1f27..0000000000000000000000000000000000000000 Binary files a/src/frontend/chaos_west_text.jpg and /dev/null differ diff --git a/src/frontend/current_round.json b/src/frontend/current_round.json deleted file mode 100644 index 8c22bf09c36400cf1246d96850b65a223d3898ba..0000000000000000000000000000000000000000 --- a/src/frontend/current_round.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "state": "player_select", - "points": 0, - "current_teams": [ - "warpzone", - "binary kitchen" - ], - "current_team_logos": [ - "halo/i/bims/1/pfad", - "static/teamlogos/binary kitchen.png" - ], - "current_team_points": [ - 0, - 0 - ], - "current_team_fails": [ - 0, - 0 - ], - "answer_amount": 5, - "question": "Nenne eine Shell:", - "answers": [ - { - "answer": "bash", - "numberOfPeople": 556, - "visible": false - }, - { - "answer": "zsh", - "numberOfPeople": 493, - "visible": false - }, - { - "answer": "fish", - "numberOfPeople": 99, - "visible": false - }, - { - "answer": "powershell", - "numberOfPeople": 29, - "visible": false - }, - { - "answer": "ksh", - "numberOfPeople": 23, - "visible": false - } - ] -} \ No newline at end of file diff --git a/src/frontend/live.py b/src/frontend/live.py deleted file mode 100644 index b2644ad3e63785772496d723cd929ece46001303..0000000000000000000000000000000000000000 --- a/src/frontend/live.py +++ /dev/null @@ -1,292 +0,0 @@ -import pygame -import json -import os -import sys -import time -import logging -from watchdog.observers import Observer -from watchdog.events import FileSystemEventHandler -import cv2 - -pygame.font.init() - -WHITE = (255, 255, 255) -BLACK = (0, 0, 0) -DARK_GRAY = (30, 30, 60) -LIGHT_GRAY = (150, 150, 150) -RED = (200, 50, 0) -CCC_GREEN = (0, 163, 86) -CCC_BLUE = (0, 132, 176) -BG_COLOR = BLACK # (59, 0, 112) - -class LoggingEventHandler(FileSystemEventHandler): - """Logs all the events captured.""" - - def __init__(self, callback, *args, **kwargs): - super(LoggingEventHandler, self).__init__(*args, **kwargs) - self.callback = callback - - def on_moved(self, event): - super(LoggingEventHandler, self).on_moved(event) - - what = 'directory' if event.is_directory else 'file' - logging.info("Moved %s: from %s to %s", what, event.src_path, - event.dest_path) - - def on_created(self, event): - super(LoggingEventHandler, self).on_created(event) - - what = 'directory' if event.is_directory else 'file' - logging.info("Created %s: %s", what, event.src_path) - - def on_deleted(self, event): - super(LoggingEventHandler, self).on_deleted(event) - - what = 'directory' if event.is_directory else 'file' - logging.info("Deleted %s: %s", what, event.src_path) - - def on_modified(self, event): - super(LoggingEventHandler, self).on_modified(event) - - # if not event.is_directory and event.src_path == "current_round.json": - self.callback() - - what = 'directory' if event.is_directory else 'file' - logging.info("Modified %s: %s", what, event.src_path) - - -class Live(object): - - - def __init__(self, window_width=-1): - - self.window_width = window_width - - self.side_width = 768 - self.height = 768 - - self.main_width = 2560 - - self.left_screen = pygame.surface.Surface((self.side_width, self.height)) - self.main_screen = pygame.surface.Surface((self.main_width, self.height)) - self.right_screen = pygame.surface.Surface((self.side_width, self.height)) - - #self.display = pygame.display.set_mode((self.side_width + self.side_width + self.main_width, self.height)) - - cv2.namedWindow("output") - - _font = "PressStart2P-Regular.ttf" - self.font_xxl = pygame.font.Font(_font, 150) - self.font_xl = pygame.font.Font(_font, 75) - self.font_l = pygame.font.Font(_font, 40) - self.font_m = pygame.font.Font(_font, 30) - self.font_s = pygame.font.Font(_font, 20) - - # intro_screen - # player_select - # running_round - # final_screen - self.state = "intro_screen" - - self.current_player = -1 # -1 No Team, 0 Left Team, 1 Right Team - - self.team_names = ["", ""] - self.team_points = [0, 0] - self.team_fails = [0, 0] - - self.current_round = {} - - self.not_animated = [1, 1, 1, 1, 1] - self.vis_questions = [0, 0, 0, 0, 0] - - ## PRE RENDERS '_pr' - - self.debug_side_pr = pygame.surface.Surface((1080, 1080)) - self.debug_side_pr.fill((0, 0, 30)) - self.debug_middle_pr = pygame.surface.Surface((1920, 1080)) - self.debug_middle_pr.fill((30, 0, 0)) - - self.header_pr = self.font_xl.render("Chaos-Familien-Duell", True, CCC_BLUE, BG_COLOR) - self.slogan_pr = self.font_m.render("Wir haben 1509 HackerInnen gefragt...", True, WHITE, BG_COLOR) - # self.final_slogan_pr = self.font_m.render("Vielen Dank an watterott.com für die tollen Preise!", True, WHITE, BG_COLOR) - self.final_slogan_pr = self.font_m.render("Die Entwicklung dieser Software wurde freundlicherweise unterstützt von", True, WHITE, BG_COLOR) - self.koffein = self.font_xxl.render("KOFFEIN", True, WHITE, BG_COLOR) - - - self.x_pr = self.font_xxl.render("X", True, RED, BG_COLOR) - self.x_small_pr = self.font_m.render("X", True, WHITE, DARK_GRAY) - - self.chaos_west_pr = pygame.image.load("ChaosWest.png") - self.watterott_pr = pygame.image.load("watterott.png") - - self.chaos_west_pr = pygame.transform.scale(self.chaos_west_pr, (400, 500)) - self.chaos_west_text_pr = pygame.image.load("chaos_west_text.jpg") - self.gray_box_pr = pygame.surface.Surface((1200, 60)) - self.gray_box_pr.fill(DARK_GRAY) - - self.team_left_pr = None - self.team_right_pr = None - self.question_pr = None - - self.logo_left_pr = None - self.logo_right_pr = None - self.answers_pr = [None, None, None, None, None] - self.answered_pr = [None, None, None, None, None] - - self.file_changed() - - - logging.basicConfig(level=logging.INFO, - format='%(asctime)s - %(message)s', - datefmt='%Y-%m-%d %H:%M:%S') - path = '.' - event_handler = LoggingEventHandler(self.file_changed) - observer = Observer() - observer.schedule(event_handler, path, recursive=True) - observer.start() - - - def file_changed(self): - with open("current_round.json", 'r') as target: - self.current_round = json.load(target) - - state = self.current_round["state"] - - self.team_names = self.current_round["current_teams"] - self.team_points = self.current_round["current_team_points"] - self.team_fails = self.current_round["current_team_fails"] - self.round_points = self.current_round["points"] - self.current_player = -1 - - if len(self.team_names[0]) > 30: - _font_left = self.font_s - else: - _font_left = self.font_l - - if len(self.team_names[1]) > 30: - _font_right = self.font_s - else: - _font_right = self.font_l - - self.team_left_pr = _font_left.render(self.team_names[0], True, WHITE, BG_COLOR) - self.team_right_pr = _font_right.render(self.team_names[1], True, WHITE, BG_COLOR) - self.question_pr = self.font_l.render(self.current_round["question"], True, CCC_BLUE, BG_COLOR) - - # _p1 = "../static/teamlogos" + str(self.current_round["current_teams_id"][0]) + ".png" - # _p2 = "data/logo_" + str(self.current_round["current_teams_id"][1]) + ".png" - - _p1 = "../" + self.current_round["current_team_logos"][0] - _p2 = "../" + self.current_round["current_team_logos"][1] - - if os.path.exists(_p1): - self.logo_left_pr = pygame.image.load(_p1) - if os.path.exists(_p2): - self.logo_right_pr = pygame.image.load(_p2) - - for i in range(0, self.current_round["answer_amount"]): - self.vis_questions[i] = self.current_round["answers"][i]["visible"] - self.answers_pr[i] = self.font_m.render(self.current_round["answers"][i]["answer"], True, WHITE, DARK_GRAY) - self.answered_pr[i] = self.font_m.render(str(self.current_round["answers"][i]["numberOfPeople"]), True, WHITE, DARK_GRAY) - - self.state = state - - def update(self): - - if self.state == "intro_screen": - pass - elif self.state == "player_select": - pass # TODO: Read input from hardware - elif self.state == "running_round": - pass # .... - elif self.state == "final_screen": - pass # ... - - def draw(self): - - self.main_screen.fill(BG_COLOR) - self.left_screen.fill(BG_COLOR) - self.right_screen.fill(BG_COLOR) - #self.left_screen.fill((255, 0, 0)) - #self.right_screen.fill((0, 0, 255)) - - if self.state == "intro_screen": - self.main_screen.blit(self.chaos_west_text_pr, (((self.main_width / 2) - (self.chaos_west_text_pr.get_width() / 2)), 200)) - self.main_screen.blit(self.header_pr, ((self.main_width / 2) - (self.header_pr.get_width() / 2), 20)) - self.main_screen.blit(self.slogan_pr, ((self.main_width / 2) - (self.slogan_pr.get_width() / 2), 150)) - self.left_screen.blit(self.chaos_west_pr, ((self.side_width / 2) - (self.chaos_west_pr.get_width() / 2), (self.height / 2) - (self.chaos_west_pr.get_height() / 2))) - self.right_screen.blit(self.chaos_west_pr, ((self.side_width / 2) - (self.chaos_west_pr.get_width() / 2), (self.height / 2) - (self.chaos_west_pr.get_height() / 2))) - - elif self.state == "player_select": - self.main_screen.blit(self.header_pr, ((self.main_width / 2) - (self.header_pr.get_width() / 2), 20)) - - self.main_screen.blit(self.question_pr, (530, 250)) - - for i in range(0, self.current_round["answer_amount"]): - self.main_screen.blit(self.gray_box_pr, ((self.main_width / 2) - (self.gray_box_pr.get_width() / 2), 350 + (i * 70))) - - if not self.vis_questions[i] and self.not_animated[i] <= 0: - self.not_animated[i] = 1 - - if self.vis_questions[i]: - self.main_screen.blit(self.answers_pr[i], (700, 364 + (i * 70))) - self.main_screen.blit(self.answered_pr[i], (1850 - self.answered_pr[i].get_width(), 363 + (i * 70))) - - if self.vis_questions[i] and self.not_animated[i] > 0: - self.not_animated[i] -= 0.2 - if (self.not_animated[i] <= 0): - self.not_animated[i] = 0.001 - _tmp_sur = pygame.surface.Surface((self.gray_box_pr.get_width() * self.not_animated[i], self.gray_box_pr.get_height())) - _tmp_sur.fill(DARK_GRAY) - - self.main_screen.blit(_tmp_sur, ((self.main_width / 2) - (self.gray_box_pr.get_width() / 2), 350 + (i * 70))) - - _points_left = self.font_xxl.render(str(self.team_points[0]), True, CCC_GREEN, BG_COLOR) - _points_right = self.font_xxl.render(str(self.team_points[1]), True, CCC_GREEN, BG_COLOR) - - self.main_screen.blit(_points_left, (0, (self.height/2) - (_points_left.get_height() / 2))) - self.main_screen.blit(_points_right, ((self.main_width - 0 - _points_right.get_width()), (self.height/2) - (_points_left.get_height() / 2))) - - _round_points = self.font_xl.render(str(self.round_points), True, CCC_GREEN, BG_COLOR) - self.main_screen.blit(_round_points, (1200, 140)) - - self.left_screen.blit(self.team_left_pr, ((self.side_width/2) - (self.team_left_pr.get_width()/2), 60)) - self.left_screen.blit(self.logo_left_pr, ((self.side_width/2) - (self.logo_left_pr.get_width()/2), self.height - self.logo_left_pr.get_height() - 20)) - self.right_screen.blit(self.team_right_pr, ((self.side_width/2) - (self.team_right_pr.get_width()/2), 60)) - self.right_screen.blit(self.logo_right_pr, ((self.side_width/2) - (self.logo_right_pr.get_width()/2), self.height - self.logo_right_pr.get_height() - 20)) - - for i in range(0, self.team_fails[0]): - self.main_screen.blit(self.x_pr, (60 + (i * 175), 600)) - for i in range(0, self.team_fails[1]): - self.main_screen.blit(self.x_pr, (2530 - ((i+1) * 175), 600)) - - - elif self.state == "final_screen": - # self.main_screen.blit(self.watterott_pr, ((self.main_width / 2) - (self.watterott_pr.get_width() / 2), -100)) - self.main_screen.blit(self.final_slogan_pr, ((self.main_width / 2) - (self.final_slogan_pr.get_width() / 2), 150)) - self.main_screen.blit(self.koffein, ((self.main_width / 2) - (self.koffein.get_width() / 2), 250)) - # self.main_screen.blit(self.header_pr, ((self.main_width / 2) - (self.header_pr.get_width() / 2), 20)) - - self.output() - - def output(self): - - - _tmp = pygame.surface.Surface((4096, 768)) - _tmp.blit(self.left_screen, (0, 0)) - _tmp.blit(self.main_screen, (self.side_width, 0)) - _tmp.blit(self.right_screen, (self.side_width + self.main_width, 0)) - - out = pygame.surfarray.array3d(_tmp) - out = out.swapaxes(0, 1) - out = cv2.cvtColor(out, cv2.COLOR_BGR2RGB) - - if self.window_width != -1: - out = cv2.resize(out, (self.window_width, int(self.height / ((self.side_width * 2 + self.main_width) / self.window_width)))) - - cv2.imshow("output", out) - - key = cv2.waitKey(1) - if key == 27: - exit(0) - if key == ord("f"): - cv2.setWindowProperty("output", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) diff --git a/src/frontend/start.py b/src/frontend/start.py deleted file mode 100644 index db5aa99694fed6ebcc326ef88ccca610976f3122..0000000000000000000000000000000000000000 --- a/src/frontend/start.py +++ /dev/null @@ -1,13 +0,0 @@ -import live -import time -import argparse - -parser = argparse.ArgumentParser() -parser.add_argument("--width", help="Breite des Fensters in Pixel (-1 Default)", default="-1", type=int) -args = parser.parse_args() - -l = live.Live(args.width) - -while 1: - l.update() - l.draw() \ No newline at end of file diff --git a/src/frontend/watterott.png b/src/frontend/watterott.png deleted file mode 100644 index 55b04b1a4b75f3a271512f7c162d047f36757af6..0000000000000000000000000000000000000000 Binary files a/src/frontend/watterott.png and /dev/null differ