diff options
Diffstat (limited to 'app/views/puzzles/_handle_puzzle.html.erb')
-rw-r--r-- | app/views/puzzles/_handle_puzzle.html.erb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/app/views/puzzles/_handle_puzzle.html.erb b/app/views/puzzles/_handle_puzzle.html.erb new file mode 100644 index 0000000..f0e3227 --- /dev/null +++ b/app/views/puzzles/_handle_puzzle.html.erb | |||
@@ -0,0 +1,76 @@ | |||
1 | <script type="text/javascript"> | ||
2 | var totalSeconds = 0 | ||
3 | var startTime = 0 | ||
4 | var timerInterval | ||
5 | |||
6 | function pad(val) { | ||
7 | var valString = val + "" | ||
8 | if (valString.length < 2) | ||
9 | { | ||
10 | return "0" + valString | ||
11 | } else { | ||
12 | return valString | ||
13 | } | ||
14 | } | ||
15 | function setTime() { | ||
16 | totalSeconds = Math.floor((Date.now() - startTime) / 1000) | ||
17 | $("#seconds").text(pad(totalSeconds%60)) | ||
18 | $("#minutes").text(pad(parseInt(totalSeconds/60))) | ||
19 | } | ||
20 | |||
21 | window.onload = function() { | ||
22 | <% if @playable or @puzzle.latest? %> | ||
23 | $("#sens").val(window.settings.sensitivity) | ||
24 | $("#sens").on("change", function() { | ||
25 | window.settings.sensitivity = this.value | ||
26 | }) | ||
27 | $("#volume").val(parseFloat(window.settings.volume)) | ||
28 | $("#volume").on("change", function() { | ||
29 | window.settings.volume = this.value | ||
30 | }) | ||
31 | <% end %> | ||
32 | |||
33 | <% if @playable %> | ||
34 | <% if @already_started %> | ||
35 | var puzzle = window.deserializePuzzle("<%= @puzzle.data %>") | ||
36 | draw(puzzle) | ||
37 | <% else %> | ||
38 | $("#activation-button button").on("click", function() { | ||
39 | var puzzle = window.deserializePuzzle("<%= @puzzle.data %>") | ||
40 | draw(puzzle) | ||
41 | |||
42 | $("#activation-button").hide() | ||
43 | |||
44 | startTime = Date.now() | ||
45 | timerInterval = setInterval(setTime, 1000); | ||
46 | |||
47 | $.ajax({ | ||
48 | type: "POST", | ||
49 | url: "<%= start_puzzle_path(@puzzle, format: :js) %>" | ||
50 | }) | ||
51 | }) | ||
52 | <% end %> | ||
53 | <% else %> | ||
54 | var puzzle = window.deserializePuzzle("<%= @puzzle.data %>") | ||
55 | draw(puzzle) | ||
56 | drawPath(puzzle, JSON.parse("<%= escape_javascript(sanitize @solution) %>")) | ||
57 | <% unless @puzzle.latest? %> | ||
58 | window.trace = function() {} | ||
59 | <% end %> | ||
60 | <% end %> | ||
61 | } | ||
62 | |||
63 | <% if @playable %> | ||
64 | window.TRACE_COMPLETION_FUNC = function(puzzle, rawPath) { | ||
65 | clearInterval(timerInterval) | ||
66 | setTime() | ||
67 | |||
68 | $.ajax({ | ||
69 | type: "POST", | ||
70 | url: "<%= solve_puzzle_path(@puzzle, format: :js) %>", | ||
71 | data: { solved: JSON.stringify(rawPath) <% unless @already_started %> , time: totalSeconds <% end %> } | ||
72 | }) | ||
73 | } | ||
74 | |||
75 | <% end %> | ||
76 | </script> | ||