You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>KIDNAPPD JSON</title>
  6. <link rel="stylesheet" type="text/css" href="deps/opt/bootstrap.css"/>
  7. <style>html {
  8. padding: 10px
  9. }</style>
  10. </head>
  11. <body>
  12. <h1>Kidnapp'd JSON Maker</h1>
  13. <button onclick="resetServer()">Reset</button>
  14. <form></form>
  15. <div id="res" class="alert"></div>
  16. <script type="text/javascript" src="deps/jquery.min.js"></script>
  17. <script type="text/javascript" src="deps/underscore.js"></script>
  18. <script type="text/javascript" src="deps/opt/jsv.js"></script>
  19. <script type="text/javascript" src="lib/jsonform.js"></script>
  20. <script type="text/javascript">
  21. $('form').jsonForm({
  22. schema: {
  23. "room": {
  24. "type": "tabarray",
  25. "items": {
  26. "type": "object",
  27. "title": "Room",
  28. "properties": {
  29. "id": {
  30. "type": "integer",
  31. "title": "ID",
  32. "required": true
  33. },
  34. "name": {
  35. "type": "string",
  36. "title": "Name",
  37. "required": true
  38. },
  39. "description": {
  40. "type": "string",
  41. "title": "Description",
  42. "required": true
  43. },
  44. "gameoverFlag": {
  45. "type": "boolean",
  46. "title": "GameoverFlag"
  47. },
  48. "items": {
  49. "type": "tabarray",
  50. "items": {
  51. "type": "integer",
  52. "title": "Item"
  53. }
  54. },
  55. "puzzles": {
  56. "type": "tabarray",
  57. "items": {
  58. "type": "integer",
  59. "title": "Puzzle"
  60. }
  61. }
  62. }
  63. }
  64. },
  65. "puzzle": {
  66. "type": "tabarray",
  67. "items": {
  68. "type": "object",
  69. "title": "Puzzle",
  70. "properties": {
  71. "id": {
  72. "type": "integer",
  73. "title": "ID",
  74. "required": true
  75. },
  76. "name": {
  77. "type": "string",
  78. "title": "Name",
  79. "required": true
  80. },
  81. "items": {
  82. "type": "tabarray",
  83. "items": {
  84. "type": "integer",
  85. "title": "Item"
  86. }
  87. },
  88. "description": {
  89. "type": "string",
  90. "title": "Description",
  91. "required": true
  92. },
  93. "solved": {
  94. "type": "boolean",
  95. "title": "solved"
  96. },
  97. "solvedText": {
  98. "type": "string",
  99. "title": "SolvedText",
  100. "required": true
  101. },
  102. "gameOverFlag": {
  103. "type": "boolean",
  104. "title": "GameOverFlag"
  105. },
  106. "dependencyText": {
  107. "type": "string",
  108. "title": "DependencyText"
  109. }, "dependency": {
  110. "type": "integer",
  111. "title": "Dependency",
  112. }, "nextRoom": {
  113. "type": "integer",
  114. "title": "NextRoom",
  115. }
  116. }
  117. }
  118. },
  119. "item": {
  120. "type": "tabarray",
  121. "items": {
  122. "type": "object",
  123. "title": "Item",
  124. "properties": {
  125. "id": {
  126. "type": "integer",
  127. "title": "ID",
  128. "required": true
  129. },
  130. "name": {
  131. "type": "string",
  132. "title": "Name",
  133. "required": true
  134. },
  135. "portableFlag": {
  136. "type": "boolean",
  137. "title": "PortableFlag"
  138. },
  139. "hiddenFlag": {
  140. "type": "boolean",
  141. "title": "HiddenFlag"
  142. },
  143. "description": {
  144. "type": "string",
  145. "title": "Description",
  146. "required": true
  147. }
  148. }
  149. }
  150. },
  151. "story": {
  152. "type": "string",
  153. "title": "Story",
  154. "required": true}
  155. },"value": {
  156. "room": [
  157. {
  158. "id": 1,
  159. "name": "Wohnzimmer",
  160. "description": "Der Flur ist lang und alt. Das kann man an den zerkratzten Tapeten, den Rissen in der Decke und am schimmligen Teppich erkennen. Der Anblick der entstellten Leiche mitten im Gang wirst du nie vergessen. An einem Ende des Raumes ist eine Stahltür und am anderen Ende die Badezimmertür, durch die du gekommen bist. Gleich daneben erkennst du eine eiserneTür. Gegenüber an der Wand steht eine alte hölzerne Kommode, in der zwei Schiebefächer fehlen. Alles in diesem Flur ist und vermutlich er selbst auch aus einem anderen Jahrhundert. Nur der Lichtschalter und die Deckenleuchten sehen eher neu aus. Beeil dich nun! Du hast nicht ewig Zeit",
  161. "items": [
  162. 0,
  163. 1,
  164. 2,
  165. 3,
  166. 4,
  167. 5
  168. ],
  169. "gameoverFlag": false
  170. }
  171. ],
  172. "puzzle": [
  173. {
  174. "id": 0,
  175. "name": "Lederjacke",
  176. "description": "Beim Schauen auf die schwarze Lederjacke kommt dir eine eher unkonventionelle Idee auf. Vielleicht ist ja da noch sein Handy oder Ähnliches drin, was dir helfen könnte hier rauszukommen.",
  177. "solvedText": "Du überlegst, wie du anfangen solltest. Nicht jeden Tag hast du die Möglichkeit eine muffelnde Leiche auszunehmen... Ohne auf den Kopf des jungen Mannes zu blicken durchsuchst du vorsichtig erst die zwei äußeren Taschen. Sind beide bis auf eine eklige Schleimschicht in der Linken leer. Nun versuchst du an die inneren Taschen heranzukommen. Dabeistreift deine rechte Hand das Blut der Leiche. Es ist zum Glück bereits getrocknet. In der inneren Brusttasche ertastest du ein paar Münzen und einen kleinen Schlüssel",
  178. "solved": false,
  179. "gameOverFlag": false
  180. },
  181. {
  182. "id": 1,
  183. "name": "Alte Kommode",
  184. "items": [
  185. 4
  186. ],
  187. "description": "Eine alte, kaputte Kommode. Drei Schiebefächer sind bis auf Staub und Spinnennetze komplett leer, Zwei fehlen und Eins ist verriegelt. An ihm ist eine Einkerbung füreinen Schlüssel. Vielleicht ist dort ja etwas nützliches drin.",
  188. "solvedText": "Der Schlüssel passt in die Einkerbung und vorsichtig drehst du das Schloss auf. Du ziehst langsam das Schiebefach heraus, doch dann kommt dir ein Klumpen Staub entgegen. Nachdem du dich ausgehustet hast, erkennst du zwei Gegenstände im Fach. Eine Notiz und einen Stahlschlüssel. Die Notiz sagt nur „Gut gemacht! Nur weiter so!“. Ist das hier für ihn ein Spiel oder was?",
  189. "dependencyText": "Du musst zuerst das Schloss öffnen!",
  190. "solved": false,
  191. "gameOverFlag": false
  192. },
  193. {
  194. "id": 2,
  195. "name": "Stahltür",
  196. "items": [
  197. 5
  198. ],
  199. "description": "Diese Tür ist aus Stahl und verriegelt. Wo geht es hier den weiter?",
  200. "solvedText": "Er passt ja! Du freust dich, doch womöglich solltest du das nicht tun, denn wer weiß, was sich weiter in diesem mysteriösen Gebäude verbirgt. Für den Anfang ist es gut erst einmal nicht mehr auf die entstellte Leiche des jungen Mannes starren zu müssen.",
  201. "dependencyText": "Da kommst du nicht durch.",
  202. "nextRoom": 2,
  203. "solved": false,
  204. "gameOverFlag": false
  205. }
  206. ],
  207. "item": [
  208. {
  209. "id": 0,
  210. "name": "Leiche",
  211. "description": "Der arme Junge! Wem ist er über den Weg gelaufen? Wem bist du über den Weg gelaufen? Was musst du bloß tun, damit du nicht genau so endest? Du bemühst dich auf keinenFall auf den Kopf des schwarzhaarigen Mannes zu blicken oder auf das, was noch davon übrig ist. Du schaust nur auf seine schwarze Lederjacke und gerätst ins Grübeln.",
  212. "portableFlag": false,
  213. "hiddenFlag": false
  214. },
  215. {
  216. "id": 1,
  217. "name": "Badezimmertür",
  218. "description": "Diese Tür ist nun verschlossen. Als zuvor das Licht ausgegangen ist, hat die Tür jemand zugeknallt oder dies geschah maschinell. Wobei an der Badezimmertür ist nichtsbesonderes zu erkennen, was wohl darauf hindeutet, dass der Entführer sie zugemacht hat",
  219. "portableFlag": false,
  220. "hiddenFlag": false
  221. },
  222. {
  223. "id": 2,
  224. "name": "Eiserne Tür",
  225. "description": "Die Tür ist aus Eisen. Da macht sich nichts dran. Die wurde von der anderen Seite geschlossen. Wenn der Entführer tatsächlich vorher hier in diesem Flur war und die Badezimmertür zugeknallt hat, dann ist er durch die hier wieder raus. Diese Tür zu nehmen ist vielleicht nicht zwingend die beste Wahl.",
  226. "portableFlag": false,
  227. "hiddenFlag": false
  228. },
  229. {
  230. "id": 3,
  231. "name": "Lichtschalter",
  232. "description": "Du solltest das Licht erst mal anlassen. Wer weiß, was sonst passieren kann.",
  233. "portableFlag": false,
  234. "hiddenFlag": false
  235. },
  236. {
  237. "id": 4,
  238. "name": "Kleiner Schlüssel",
  239. "portableFlag": true,
  240. "description": "Wozu könnte der denn passen? Sieht nicht wie ein Schlüssel für eine Tür aus. Dazu ist er viel zu klein.",
  241. "hiddenFlag": false
  242. },
  243. {
  244. "id": 5,
  245. "name": "Stahlschlüssel",
  246. "portableFlag": true,
  247. "description": "Dieser Schlüssel ist recht schwer. Der ist definitiv für eine der drei Türen im Flur hier.",
  248. "hiddenFlag": false
  249. }
  250. ],
  251. "story": "Deine Augen gewöhnen sich an das grelle Licht der Deckenleuchten und du versuchst kurz zu kapieren, was los ist. Du wurdest gekidnappt! Du bist irgendwo, wahrscheinlich in einem Keller eines Gebäudes. Nur wenige Meter vor dir auf dem alten Teppichboden liegt eine vollkommen entstellte Leiche. Der, der das getan hat, war höchstwahrscheinlich der selbe, der dich gekidnapp'd hat. Und offenbar spielt er hier ein Spiel mit dir, wenn du noch am Leben bist... Na gut, du hast ja keine Wahl. Finde heraus, was hier vor sich geht"
  252. },
  253. onSubmit: function (errors, values) {
  254. if (errors) {
  255. $('#res').html('<p>Something went wrong, please try again.</p>');
  256. } else {
  257. var divToPrint = JSON.stringify(values, null, 4);
  258. var newWin = window.open('', 'Print-Window');
  259. newWin.document.open();
  260. newWin.document.write('<html><body><pre>' + divToPrint + '</pre></body><style>html{word-break: break-all;background-color: #0b0e07; color: white; width: 100%; height: 100%}</style></html>');
  261. newWin.document.close();
  262. console.log("hier: " + JSON.stringify(values));
  263. $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?level-submit",values);
  264. }
  265. }
  266. });
  267. function resetServer() {
  268. $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?level-reset");
  269. }
  270. </script>
  271. </body>
  272. </html>