rapid-router 7.6.5__py2.py3-none-any.whl → 7.6.7__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- game/__init__.py +1 -1
- game/templates/game/level_editor.html +304 -248
- {rapid_router-7.6.5.dist-info → rapid_router-7.6.7.dist-info}/METADATA +8 -8
- {rapid_router-7.6.5.dist-info → rapid_router-7.6.7.dist-info}/RECORD +7 -7
- {rapid_router-7.6.5.dist-info → rapid_router-7.6.7.dist-info}/WHEEL +0 -0
- {rapid_router-7.6.5.dist-info → rapid_router-7.6.7.dist-info}/licenses/LICENSE.md +0 -0
- {rapid_router-7.6.5.dist-info → rapid_router-7.6.7.dist-info}/top_level.txt +0 -0
game/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "7.6.
|
|
1
|
+
__version__ = "7.6.7"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
{% extends 'game/basenonav.html' %}
|
|
2
|
-
{% load i18n %}
|
|
3
2
|
{% load static %}
|
|
4
3
|
{% load app_tags %}
|
|
5
4
|
{% load game.utils %}
|
|
@@ -7,113 +6,138 @@
|
|
|
7
6
|
{% block title %}Code for Life - Rapid Router - Create{% endblock %}
|
|
8
7
|
|
|
9
8
|
{% block head %}
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
<meta name="viewport" content="user-scalable=no" />
|
|
10
|
+
{% include 'game/crowdin.html' %}
|
|
12
11
|
{% endblock %}
|
|
13
12
|
|
|
14
13
|
{% block scripts %}
|
|
15
14
|
{{block.super}}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
15
|
+
<script>
|
|
16
|
+
var COW_LEVELS_ENABLED = {{ cow_level_enabled| booltojs}};
|
|
17
|
+
var NIGHT_MODE_FEATURE_ENABLED = {{ night_mode_feature_enabled }};
|
|
18
|
+
{% if level %}
|
|
19
|
+
var LEVEL = {{ level }};
|
|
20
|
+
{% else %}
|
|
21
|
+
var LEVEL = null
|
|
22
|
+
{% endif %}
|
|
23
|
+
</script>
|
|
24
|
+
<script src="{% static 'game/js/utils.js' %}"></script>
|
|
25
|
+
<script src="{% static 'game/js/mobile-detect.min.js' %}"></script>
|
|
26
|
+
<script src="{% static 'game/js/raphael.js' %}"></script>
|
|
27
|
+
<script src="{% static 'game/js/drawingConstants.js' %}"></script>
|
|
28
|
+
<script src="{% static 'game/js/character.js' %}"></script>
|
|
29
|
+
<script src="{% static 'game/js/drawing.js' %}"></script>
|
|
30
|
+
|
|
31
|
+
<script type="text/javascript" src="{% static 'game/js/blockly/blockly_compressed.js' %}"></script>
|
|
32
|
+
<script type="text/javascript" src="{% static 'game/js/blockly/blocks_compressed.js' %}"></script>
|
|
33
|
+
<script type="text/javascript" src="{% static 'game/js/blockly/msg/js/en.js' %}"></script>
|
|
34
|
+
<script type="text/javascript" src="{% static 'game/js/mobile-detect.min.js' %}"></script>
|
|
35
|
+
|
|
36
|
+
<script type="text/javascript" src="{% static 'game/js/blocklyCustomBlocks.js' %}"></script>
|
|
37
|
+
<script type="text/javascript" src="{% static 'game/js/blocklyControl.js' %}"></script>
|
|
38
|
+
<script type="text/javascript" src="{% static 'game/js/blocklyMessages.js' %}"></script>
|
|
39
|
+
|
|
40
|
+
<script src="/static/game/js/tab.js"></script>
|
|
41
|
+
<script src="/static/game/js/messages.js"></script>
|
|
42
|
+
<script src="/static/game/js/saving.js"></script>
|
|
43
|
+
<script src="/static/game/js/sharing.js"></script>
|
|
44
|
+
<script src="/static/game/js/level_editor/level_save_state.js"></script>
|
|
45
|
+
<script src="/static/game/js/level_editor/owned_levels.js"></script>
|
|
46
|
+
<script src="/static/game/js/level_editor.js"></script>
|
|
47
|
+
<script src="/static/game/js/coordinate.js"></script>
|
|
48
|
+
<script src="/static/game/js/node.js"></script>
|
|
49
|
+
<script src="/static/game/js/map.js"></script>
|
|
50
|
+
<script src="/static/game/js/pathFinder.js"></script>
|
|
51
|
+
<script src="/static/game/js/trafficLight.js"></script>
|
|
52
|
+
{% if cow_level_enabled %}
|
|
53
|
+
<script src="/static/game/js/cow.js"></script>{% endif %}
|
|
54
|
+
<script src="/static/game/js/destination.js"></script>
|
|
55
|
+
|
|
56
|
+
<script>
|
|
57
|
+
var BLOCKS = {{ blocks | safe}};
|
|
58
|
+
var THEMES = []
|
|
59
|
+
var CHARACTER_NAME = 'Van'
|
|
60
|
+
|
|
61
|
+
function initGlobals() {
|
|
62
|
+
var themes = []
|
|
63
|
+
{% for theme in themes %}
|
|
64
|
+
var name = "{{theme.name}}"
|
|
65
|
+
themes.push({
|
|
66
|
+
"name": name,
|
|
67
|
+
"id": {{ theme.id }},
|
|
68
|
+
"border": "{{theme.border}}",
|
|
69
|
+
"background": "{{theme.background}}",
|
|
70
|
+
"selected": "{{theme.selected}}"
|
|
71
71
|
});
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
72
|
+
{% endfor %}
|
|
73
|
+
|
|
74
|
+
var decor = []
|
|
75
|
+
{% for dec in decor %}
|
|
76
|
+
decor.push({
|
|
77
|
+
"id": "{{dec.id}}",
|
|
78
|
+
"name": "{{dec.name}}",
|
|
79
|
+
"url": ocargo.Drawing.raphaelImageDir + "{{dec.url}}",
|
|
80
|
+
"width": "{{dec.width}}",
|
|
81
|
+
"height": "{{dec.height}}",
|
|
82
|
+
"theme_name": "{{dec.theme.name}}",
|
|
83
|
+
"z_index": "{{ dec.z_index }}"
|
|
84
|
+
})
|
|
85
|
+
{% endfor %}
|
|
86
|
+
|
|
87
|
+
for (var i = 0; i < themes.length; i++) {
|
|
88
|
+
var theme = themes[i]
|
|
89
|
+
THEMES[theme.name] = theme
|
|
90
|
+
THEMES[theme.name].decor = {}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
for (var i = 0; i < decor.length; i++) {
|
|
94
|
+
var themeDecor = THEMES[decor[i].theme_name].decor
|
|
95
|
+
themeDecor[decor[i].name] = decor[i]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
CHARACTERS = []
|
|
99
|
+
{% for char in characters %}
|
|
100
|
+
CHARACTERS['{{char.id}}'] = {
|
|
101
|
+
id: '{{char.id}}',
|
|
102
|
+
name: '{{char.name}}',
|
|
103
|
+
image: '{% static "game/image/"|add:char.en_face %}'
|
|
104
|
+
}
|
|
105
|
+
{% endfor %}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
initGlobals();
|
|
109
|
+
</script>
|
|
110
|
+
<script>
|
|
111
|
+
document.addEventListener('DOMContentLoaded', function () {
|
|
112
|
+
const selectElement = document.getElementById('character_select')
|
|
113
|
+
const labelElement = document.getElementById('max_resource_label')
|
|
114
|
+
|
|
115
|
+
const labelMap = {
|
|
116
|
+
'Van': 'Max fuel:',
|
|
117
|
+
'Electric van': 'Max battery:',
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function updateResourceLabel() {
|
|
121
|
+
const selectedOption = selectElement.options[selectElement.selectedIndex]
|
|
122
|
+
const charName = selectedOption.textContent.trim()
|
|
123
|
+
|
|
124
|
+
labelElement.textContent = labelMap[charName] || "Max moves:"
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (selectElement) {
|
|
128
|
+
selectElement.addEventListener('change', updateResourceLabel)
|
|
129
|
+
updateResourceLabel()
|
|
106
130
|
}
|
|
131
|
+
});
|
|
132
|
+
</script>
|
|
107
133
|
|
|
108
|
-
initGlobals();
|
|
109
|
-
</script>
|
|
110
134
|
{% endblock %}
|
|
111
135
|
|
|
112
136
|
{% block css %}
|
|
113
137
|
{{ block.super }}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
<link href="{% static 'game/css/game_screen.css' %}" rel="stylesheet" type="text/css">
|
|
139
|
+
<link href="{% static 'game/css/level_share.css' %}" rel="stylesheet" type="text/css">
|
|
140
|
+
<link href="{% static 'game/css/level_editor.css' %}" rel="stylesheet" type="text/css">
|
|
117
141
|
{% endblock %}
|
|
118
142
|
|
|
119
143
|
{% block content %}
|
|
@@ -130,18 +154,18 @@
|
|
|
130
154
|
<div id="tabs">
|
|
131
155
|
|
|
132
156
|
<div id="currentTool" class="mode_panel">
|
|
133
|
-
<img id="currentToolIcon" src="{% static 'game/image/icons/delete_road.svg' %}"
|
|
157
|
+
<img id="currentToolIcon" src="{% static 'game/image/icons/delete_road.svg' %}">
|
|
134
158
|
<br>
|
|
135
|
-
<span id="currentToolText" style="font-size: 14px;">
|
|
159
|
+
<span id="currentToolText" style="font-size: 14px;">Delete Road</span>
|
|
136
160
|
</div>
|
|
137
161
|
|
|
138
162
|
<br style="clear:both">
|
|
139
163
|
|
|
140
|
-
<div id="play_tab"
|
|
164
|
+
<div id="play_tab" class="tab">
|
|
141
165
|
<input type="radio" name="tabs" id="play_radio">
|
|
142
166
|
<label for="play_radio">
|
|
143
167
|
<img src='{% static "game/image/icons/play.svg" %}'>
|
|
144
|
-
<span>
|
|
168
|
+
<span>Play</span>
|
|
145
169
|
</label>
|
|
146
170
|
</div>
|
|
147
171
|
|
|
@@ -149,49 +173,49 @@
|
|
|
149
173
|
<input type="radio" name="tabs" id="play_night_radio">
|
|
150
174
|
<label for="play_night_radio">
|
|
151
175
|
<img src='{% static "game/image/icons/play.svg" %}'>
|
|
152
|
-
<span>
|
|
176
|
+
<span>Play Night</span>
|
|
153
177
|
</label>
|
|
154
178
|
</div>
|
|
155
179
|
|
|
156
180
|
<div class="tab_break"></div>
|
|
157
181
|
|
|
158
|
-
<div id="map_tab"
|
|
182
|
+
<div id="map_tab" class="tab selectable">
|
|
159
183
|
<input type="radio" name="tabs" id="map_radio">
|
|
160
184
|
<label for="map_radio">
|
|
161
185
|
<img src='{% static "game/image/icons/map.svg" %}'>
|
|
162
|
-
<span>
|
|
186
|
+
<span>Map</span>
|
|
163
187
|
</label>
|
|
164
188
|
</div>
|
|
165
189
|
|
|
166
|
-
<div id="scenery_tab"
|
|
190
|
+
<div id="scenery_tab" class="tab selectable">
|
|
167
191
|
<input type="radio" name="tabs" id="scenery_radio">
|
|
168
192
|
<label for="scenery_radio">
|
|
169
193
|
<img src='{% static "game/image/icons/decor.svg" %}'>
|
|
170
|
-
<span>
|
|
194
|
+
<span>Scenery</span>
|
|
171
195
|
</label>
|
|
172
196
|
</div>
|
|
173
197
|
|
|
174
|
-
<div id="character_tab"
|
|
198
|
+
<div id="character_tab" class="tab selectable">
|
|
175
199
|
<input type="radio" name="tabs" id="character_radio">
|
|
176
200
|
<label for="character_radio">
|
|
177
201
|
<img src='{% static "game/image/icons/character.svg" %}'>
|
|
178
|
-
<span>
|
|
202
|
+
<span>Character</span>
|
|
179
203
|
</label>
|
|
180
204
|
</div>
|
|
181
205
|
|
|
182
|
-
<div id="blocks_tab"
|
|
206
|
+
<div id="blocks_tab" class="tab selectable">
|
|
183
207
|
<input type="radio" name="tabs" id="blocks_radio">
|
|
184
208
|
<label for="blocks_radio">
|
|
185
209
|
<img src='{% static "game/image/icons/blockly.svg" %}'>
|
|
186
|
-
<span>
|
|
210
|
+
<span>Code</span>
|
|
187
211
|
</label>
|
|
188
212
|
</div>
|
|
189
213
|
|
|
190
|
-
<div id="random_tab"
|
|
214
|
+
<div id="random_tab" class="tab selectable">
|
|
191
215
|
<input type="radio" name="tabs" id="random_radio">
|
|
192
216
|
<label for="random_radio">
|
|
193
217
|
<img src='{% static "game/image/icons/random.svg" %}'>
|
|
194
|
-
<span>
|
|
218
|
+
<span>Random</span>
|
|
195
219
|
</label>
|
|
196
220
|
</div>
|
|
197
221
|
|
|
@@ -199,7 +223,7 @@
|
|
|
199
223
|
<input type="radio" name="tabs" id="description_radio">
|
|
200
224
|
<label for="description_radio">
|
|
201
225
|
<img src='{% static "game/image/icons/description.svg" %}'>
|
|
202
|
-
<span>
|
|
226
|
+
<span>Description</span>
|
|
203
227
|
</label>
|
|
204
228
|
</div>
|
|
205
229
|
|
|
@@ -207,7 +231,7 @@
|
|
|
207
231
|
<input type="radio" name="tabs" id="hint_radio">
|
|
208
232
|
<label for="hint_radio">
|
|
209
233
|
<img src='{% static "game/image/icons/hint.svg" %}'>
|
|
210
|
-
<span>
|
|
234
|
+
<span>Hint</span>
|
|
211
235
|
</label>
|
|
212
236
|
</div>
|
|
213
237
|
|
|
@@ -217,7 +241,7 @@
|
|
|
217
241
|
<input type="radio" name="tabs" id="load_radio">
|
|
218
242
|
<label for="load_radio">
|
|
219
243
|
<img src='{% static "game/image/icons/load.svg" %}'>
|
|
220
|
-
<span>
|
|
244
|
+
<span>Load</span>
|
|
221
245
|
</label>
|
|
222
246
|
</div>
|
|
223
247
|
|
|
@@ -225,33 +249,33 @@
|
|
|
225
249
|
<input type="radio" name="tabs" id="save_radio">
|
|
226
250
|
<label for="save_radio">
|
|
227
251
|
<img src='{% static "game/image/icons/save.svg" %}'>
|
|
228
|
-
<span>
|
|
252
|
+
<span>Save</span>
|
|
229
253
|
</label>
|
|
230
254
|
</div>
|
|
231
255
|
|
|
232
|
-
<div id="share_tab"
|
|
256
|
+
<div id="share_tab" class="tab selectable">
|
|
233
257
|
<input type="radio" name="tabs" id="share_radio">
|
|
234
258
|
<label for="share_radio">
|
|
235
259
|
<img src='{% static "game/image/icons/share.svg" %}'>
|
|
236
|
-
<span>
|
|
260
|
+
<span>Share</span>
|
|
237
261
|
</label>
|
|
238
262
|
</div>
|
|
239
263
|
|
|
240
264
|
<div class="tab_break"></div>
|
|
241
265
|
|
|
242
|
-
<div id="help_tab"
|
|
266
|
+
<div id="help_tab" class="tab selectable">
|
|
243
267
|
<input type="radio" name="tabs" id="help_radio">
|
|
244
268
|
<label for="help_radio">
|
|
245
269
|
<img src='{% static "game/image/icons/help.svg" %}'>
|
|
246
|
-
<span>
|
|
270
|
+
<span>Help</span>
|
|
247
271
|
</label>
|
|
248
272
|
</div>
|
|
249
273
|
|
|
250
|
-
<div id="quit_tab"
|
|
274
|
+
<div id="quit_tab" class="tab">
|
|
251
275
|
<input type="radio" name="tabs" id="quit_radio">
|
|
252
276
|
<label for="quit_radio">
|
|
253
277
|
<img src='{% static "game/image/icons/quit.svg" %}'>
|
|
254
|
-
<span>
|
|
278
|
+
<span>Quit</span>
|
|
255
279
|
</label>
|
|
256
280
|
</div>
|
|
257
281
|
|
|
@@ -260,59 +284,57 @@
|
|
|
260
284
|
<div id='tab_panes_wrapper'>
|
|
261
285
|
<div id="tab_panes">
|
|
262
286
|
<div id="map_pane" class="tab_pane">
|
|
263
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/map.svg" %}'>
|
|
264
|
-
|
|
287
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/map.svg" %}'>Map
|
|
288
|
+
</h2>
|
|
289
|
+
<p>Here you can design your level! What sort of road will you make?</p>
|
|
265
290
|
|
|
266
291
|
<div class="tab_pane_content_holder">
|
|
267
292
|
<div class="tab_pane_content">
|
|
268
|
-
|
|
269
|
-
<span>{% trans "Max fuel:" %}</span>
|
|
270
|
-
<input type="number" id="max_fuel">
|
|
271
|
-
</div>
|
|
293
|
+
|
|
272
294
|
<br style="clear:both">
|
|
273
295
|
|
|
274
296
|
<div class="table">
|
|
275
297
|
<div class="table_row">
|
|
276
298
|
<div class="table_cell">
|
|
277
299
|
<button class="mode_panel navigation_button" id="add_road">
|
|
278
|
-
<img src="{% static "game/image/icons/add_road.svg" %}"/>
|
|
279
|
-
<span style="font-size: 14px;">
|
|
300
|
+
<img src="{% static "game/image/icons/add_road.svg" %}" />
|
|
301
|
+
<span style="font-size: 14px;">Add road</span>
|
|
280
302
|
</button>
|
|
281
303
|
</div>
|
|
282
304
|
<div class="table_cell">
|
|
283
305
|
<button class="mode_panel navigation_button" id="delete_road">
|
|
284
|
-
<img src="{% static "game/image/icons/delete_road.svg" %}"/>
|
|
285
|
-
<span style="font-size: 14px;">
|
|
306
|
+
<img src="{% static "game/image/icons/delete_road.svg" %}" />
|
|
307
|
+
<span style="font-size: 14px;">Delete road</span>
|
|
286
308
|
</button>
|
|
287
309
|
</div>
|
|
288
310
|
</div>
|
|
289
311
|
<div class="table_row">
|
|
290
312
|
<div class="table_cell">
|
|
291
313
|
<button class="mode_panel navigation_button" id="add_house">
|
|
292
|
-
<img src="{% static "game/image/icons/add_house.svg" %}"/>
|
|
293
|
-
<span style="font-size: 14px;">
|
|
314
|
+
<img src="{% static "game/image/icons/add_house.svg" %}" />
|
|
315
|
+
<span style="font-size: 14px;">Add house</span>
|
|
294
316
|
</button>
|
|
295
317
|
</div>
|
|
296
318
|
<div class="table_cell">
|
|
297
319
|
<button class="mode_panel navigation_button" id="delete_house">
|
|
298
|
-
<img src="{% static "game/image/icons/delete_house.svg" %}"/>
|
|
299
|
-
<span style="font-size: 14px;">
|
|
320
|
+
<img src="{% static "game/image/icons/delete_house.svg" %}" />
|
|
321
|
+
<span style="font-size: 14px;">Delete house</span>
|
|
300
322
|
</button>
|
|
301
323
|
</div>
|
|
302
324
|
</div>
|
|
303
325
|
<div class="table_row">
|
|
304
326
|
<div class="table_cell">
|
|
305
327
|
<button class="mode_panel navigation_button" id="start">
|
|
306
|
-
<img src="{% static "game/image/icons/origin.svg" %}"/>
|
|
307
|
-
<span style="font-size: 14px;">
|
|
328
|
+
<img src="{% static "game/image/icons/origin.svg" %}" />
|
|
329
|
+
<span style="font-size: 14px;">Mark start</span>
|
|
308
330
|
</button>
|
|
309
331
|
</div>
|
|
310
332
|
</div>
|
|
311
333
|
</div>
|
|
312
334
|
|
|
313
335
|
<button class="navigation_button long_button" id="clear">
|
|
314
|
-
<img src="{% static "game/image/icons/clear.svg" %}"/>
|
|
315
|
-
<span>
|
|
336
|
+
<img src="{% static "game/image/icons/clear.svg" %}" />
|
|
337
|
+
<span>Clear all</span>
|
|
316
338
|
</button>
|
|
317
339
|
|
|
318
340
|
{% if user|is_developer %}
|
|
@@ -325,15 +347,15 @@
|
|
|
325
347
|
</div>
|
|
326
348
|
|
|
327
349
|
<div id="scenery_pane" class="tab_pane">
|
|
328
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/decor.svg" %}'>
|
|
329
|
-
<p>
|
|
350
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/decor.svg" %}'>Scenery</h2>
|
|
351
|
+
<p>Here you can liven up your level by choosing the theme and adding scenery! Will you create beautiful countryside or a bustling city?</p>
|
|
330
352
|
<div class="tab_pane_content_holder">
|
|
331
353
|
<div class="tab_pane_content">
|
|
332
354
|
|
|
333
355
|
<table>
|
|
334
356
|
<tbody>
|
|
335
357
|
<tr>
|
|
336
|
-
<td>
|
|
358
|
+
<td>Theme:</td>
|
|
337
359
|
<td colspan=2>
|
|
338
360
|
<select id="theme_select">
|
|
339
361
|
{% for theme in themes %}
|
|
@@ -343,28 +365,42 @@
|
|
|
343
365
|
</td>
|
|
344
366
|
</tr>
|
|
345
367
|
<tr>
|
|
346
|
-
<td>
|
|
347
|
-
<td
|
|
348
|
-
|
|
368
|
+
<td>Scenery:</td>
|
|
369
|
+
<td>
|
|
370
|
+
<div class="decor_div"><img id="tree1" class="decor_button" src="{{tree1.url}}" width="70">
|
|
371
|
+
</td>
|
|
372
|
+
<td>
|
|
373
|
+
<div class="decor_div"><img id="tree2" class="decor_button" src="{{tree2.url}}" width="70">
|
|
374
|
+
</div>
|
|
375
|
+
</td>
|
|
349
376
|
</tr>
|
|
350
377
|
<tr>
|
|
351
378
|
<td></td>
|
|
352
|
-
<td
|
|
353
|
-
|
|
379
|
+
<td>
|
|
380
|
+
<div class="decor_div"><img id="bush" class="decor_button" src="{{bush.url}}" width="50"></div>
|
|
381
|
+
</td>
|
|
382
|
+
<td>
|
|
383
|
+
<div class="decor_div"><img id="pond" class="decor_button" src="{{pond.url}}" width="100"></div>
|
|
384
|
+
</td>
|
|
354
385
|
</tr>
|
|
355
386
|
<tr>
|
|
356
387
|
<td></td>
|
|
357
|
-
<td
|
|
388
|
+
<td>
|
|
389
|
+
<div class="decor_div"><img id="solar_panel" class="decor_button" src="{{solar_panel.url}}"
|
|
390
|
+
width="70" alt="solar panel"></div>
|
|
391
|
+
</td>
|
|
358
392
|
<td></td>
|
|
359
393
|
</tr>
|
|
360
394
|
<tr>
|
|
361
|
-
<td>
|
|
362
|
-
<td><img id="trafficLightRed" src="{% static 'game/image/trafficLight_red.svg' %}" width="80"
|
|
363
|
-
|
|
395
|
+
<td>Traffic lights:</td>
|
|
396
|
+
<td><img id="trafficLightRed" src="{% static 'game/image/trafficLight_red.svg' %}" width="80">
|
|
397
|
+
</td>
|
|
398
|
+
<td><img id="trafficLightGreen" src="{% static 'game/image/trafficLight_green.svg' %}" width="80">
|
|
399
|
+
</td>
|
|
364
400
|
</tr>
|
|
365
401
|
{% if cow_level_enabled %}
|
|
366
402
|
<tr>
|
|
367
|
-
<td id="animals_label">
|
|
403
|
+
<td id="animals_label">Cows:</td>
|
|
368
404
|
<td><img id="cow" src="/static/game/image/Clarice.svg" width="80"></td>
|
|
369
405
|
<td>
|
|
370
406
|
</td>
|
|
@@ -380,15 +416,19 @@
|
|
|
380
416
|
</div>
|
|
381
417
|
|
|
382
418
|
<div id="character_pane" class="tab_pane">
|
|
383
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/character.svg" %}'>
|
|
384
|
-
<p>
|
|
419
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/character.svg" %}'>Character</h2>
|
|
420
|
+
<p>Here you can choose your character. Who will you play as?</p>
|
|
385
421
|
<div class="tab_pane_content_holder">
|
|
386
422
|
<div class="tab_pane_content">
|
|
387
|
-
<
|
|
423
|
+
<div class="input_div">
|
|
424
|
+
<span id="max_resource_label"></span>
|
|
425
|
+
<input type="number" id="max_fuel">
|
|
426
|
+
</div>
|
|
427
|
+
<p>Character:
|
|
388
428
|
<select id="character_select">
|
|
389
|
-
|
|
429
|
+
{% for char in characters %}
|
|
390
430
|
<option value='{{char.id}}'> {{char.name}} </option>
|
|
391
|
-
|
|
431
|
+
{% endfor %}
|
|
392
432
|
</select>
|
|
393
433
|
</p>
|
|
394
434
|
<img id="character_image" src="">
|
|
@@ -397,19 +437,19 @@
|
|
|
397
437
|
</div>
|
|
398
438
|
|
|
399
439
|
<div id="blocks_pane" class="tab_pane">
|
|
400
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/blockly.svg" %}'>
|
|
401
|
-
<p>
|
|
440
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/blockly.svg" %}'>Code</h2>
|
|
441
|
+
<p>Here you can select the code you can use while playing your new level! </p>
|
|
402
442
|
<div class="tab_pane_content_holder">
|
|
403
443
|
<div class="tab_pane_content">
|
|
404
444
|
<div id="block_table">
|
|
405
445
|
|
|
406
446
|
<div id="language_div" class="input_div">
|
|
407
|
-
<span>
|
|
447
|
+
<span>Language:</span>
|
|
408
448
|
<select id="language_select">
|
|
409
|
-
<option value="blockly">
|
|
410
|
-
<option value="blocklyWithPythonView">
|
|
411
|
-
<option value="python">
|
|
412
|
-
<option value="both">
|
|
449
|
+
<option value="blockly">Blockly</option>
|
|
450
|
+
<option value="blocklyWithPythonView">Blockly With Python View</option>
|
|
451
|
+
<option value="python">Python</option>
|
|
452
|
+
<option value="both">Both</option>
|
|
413
453
|
</select>
|
|
414
454
|
</div>
|
|
415
455
|
|
|
@@ -419,29 +459,29 @@
|
|
|
419
459
|
<input type="checkbox" id="select_all_checkbox" class="block_checkbox">
|
|
420
460
|
</div>
|
|
421
461
|
<div>
|
|
422
|
-
<label id="select_all_label" for="select_all_checkbox">
|
|
462
|
+
<label id="select_all_label" for="select_all_checkbox">Select all</label>
|
|
423
463
|
</div>
|
|
424
464
|
</div>
|
|
425
465
|
|
|
426
466
|
{% for block in blocks %}
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
</div>
|
|
431
|
-
<div id="{{block}}_image" class="table_cell unselectable"></div>
|
|
432
|
-
<select id="{{block}}_number" class="block_number" class="table_cell unselectable">
|
|
433
|
-
<option value="infinity">∞</option>
|
|
434
|
-
<option value="1">1</option>
|
|
435
|
-
<option value="2">2</option>
|
|
436
|
-
<option value="3">3</option>
|
|
437
|
-
<option value="4">4</option>
|
|
438
|
-
<option value="5">5</option>
|
|
439
|
-
<option value="6">6</option>
|
|
440
|
-
<option value="7">7</option>
|
|
441
|
-
<option value="8">8</option>
|
|
442
|
-
<option value="9">9</option>
|
|
443
|
-
</select>
|
|
467
|
+
<div class="table_row">
|
|
468
|
+
<div class="table_cell">
|
|
469
|
+
<input type="checkbox" id="{{block}}_checkbox" class="block_checkbox" unchecked>
|
|
444
470
|
</div>
|
|
471
|
+
<div id="{{block}}_image" class="table_cell unselectable"></div>
|
|
472
|
+
<select id="{{block}}_number" class="block_number" class="table_cell unselectable">
|
|
473
|
+
<option value="infinity">∞</option>
|
|
474
|
+
<option value="1">1</option>
|
|
475
|
+
<option value="2">2</option>
|
|
476
|
+
<option value="3">3</option>
|
|
477
|
+
<option value="4">4</option>
|
|
478
|
+
<option value="5">5</option>
|
|
479
|
+
<option value="6">6</option>
|
|
480
|
+
<option value="7">7</option>
|
|
481
|
+
<option value="8">8</option>
|
|
482
|
+
<option value="9">9</option>
|
|
483
|
+
</select>
|
|
484
|
+
</div>
|
|
445
485
|
{% endfor %}
|
|
446
486
|
</div>
|
|
447
487
|
</div>
|
|
@@ -450,97 +490,113 @@
|
|
|
450
490
|
</div>
|
|
451
491
|
|
|
452
492
|
<div id="random_pane" class="tab_pane">
|
|
453
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/random.svg" %}'>
|
|
454
|
-
<p>
|
|
493
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/random.svg" %}'>Random</h2>
|
|
494
|
+
<p>Here you can generate a random map. Try changing some of the parameters below and see what you get!</p>
|
|
455
495
|
<div class="tab_pane_content_holder">
|
|
456
496
|
<div class="tab_pane_content">
|
|
457
497
|
<div class="table">
|
|
458
498
|
<div class="table_row">
|
|
459
|
-
<div class="table_cell field_label"
|
|
460
|
-
|
|
499
|
+
<div class="table_cell field_label">
|
|
500
|
+
<p>Size:</p>
|
|
501
|
+
</div>
|
|
502
|
+
<div class="table_cell field_value"><input type="number" id="size" value="20" size="4" min="2"
|
|
503
|
+
max="40"></div>
|
|
461
504
|
</div>
|
|
462
505
|
<div class="table_row">
|
|
463
|
-
<div class="table_cell field_label"
|
|
464
|
-
|
|
506
|
+
<div class="table_cell field_label">
|
|
507
|
+
<p>Branchiness:</p>
|
|
508
|
+
</div>
|
|
509
|
+
<div class="table_cell field_value"><input type="number" id="branchiness" value="1" size="4" min="0"
|
|
510
|
+
max="10"></div>
|
|
465
511
|
</div>
|
|
466
512
|
<div class="table_row">
|
|
467
|
-
<div class="table_cell field_label"
|
|
468
|
-
|
|
513
|
+
<div class="table_cell field_label">
|
|
514
|
+
<p>Loopiness:</p>
|
|
515
|
+
</div>
|
|
516
|
+
<div class="table_cell field_value"><input type="number" id="loopiness" value="1" size="4" min="0"
|
|
517
|
+
max="10"></div>
|
|
469
518
|
</div>
|
|
470
519
|
<div class="table_row">
|
|
471
|
-
<div class="table_cell field_label"
|
|
472
|
-
|
|
520
|
+
<div class="table_cell field_label">
|
|
521
|
+
<p>Curviness:</p>
|
|
522
|
+
</div>
|
|
523
|
+
<div class="table_cell field_value"><input type="number" id="curviness" value="5" size="4" min="0"
|
|
524
|
+
max="10"></div>
|
|
473
525
|
</div>
|
|
474
526
|
<div class="table_row">
|
|
475
|
-
<div class="table_cell field_label"
|
|
527
|
+
<div class="table_cell field_label">
|
|
528
|
+
<p>Traffic Lights:</p>
|
|
529
|
+
</div>
|
|
476
530
|
<div class="table_cell field_value">
|
|
477
531
|
<select id="trafficLightsEnabled">
|
|
478
|
-
<option value="yes">
|
|
479
|
-
<option value="no" selected>
|
|
532
|
+
<option value="yes">Yes</option>
|
|
533
|
+
<option value="no" selected>No</option>
|
|
480
534
|
</select>
|
|
481
535
|
</div>
|
|
482
536
|
</div>
|
|
483
537
|
<div class="table_row">
|
|
484
|
-
<div class="table_cell field_label"
|
|
538
|
+
<div class="table_cell field_label">
|
|
539
|
+
<p>Scenery:</p>
|
|
540
|
+
</div>
|
|
485
541
|
<div class="table_cell field_value">
|
|
486
542
|
<select id="sceneryEnabled">
|
|
487
|
-
<option value="yes">
|
|
488
|
-
<option value="no" selected>
|
|
543
|
+
<option value="yes">Yes</option>
|
|
544
|
+
<option value="no" selected>No</option>
|
|
489
545
|
</select>
|
|
490
546
|
</div>
|
|
491
547
|
</div>
|
|
492
548
|
</div>
|
|
493
549
|
<button class="navigation_button long_button" id="generate">
|
|
494
550
|
<img src="{% static 'game/image/icons/random.svg' %}">
|
|
495
|
-
<span>
|
|
551
|
+
<span>Generate</span>
|
|
496
552
|
</button>
|
|
497
553
|
</div>
|
|
498
554
|
</div>
|
|
499
555
|
</div>
|
|
500
556
|
|
|
501
557
|
<div id="description_pane" class="tab_pane">
|
|
502
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/description.svg" %}'>
|
|
503
|
-
<p>
|
|
504
|
-
<p>
|
|
558
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/description.svg" %}'>Description</h2>
|
|
559
|
+
<p>Give this level a subtitle and a description of what to do within this level for your students.</p>
|
|
560
|
+
<p>Students will see this subtitle and description when <b>starting this level</b> so make sure they are <b>useful to the student</b>.</p>
|
|
505
561
|
<div class="tab_pane_content_holder">
|
|
506
562
|
<div class="tab_pane_content">
|
|
507
|
-
<p
|
|
563
|
+
<p><b>Subtitle</b><br>What is the subtitle of this level?</p>
|
|
508
564
|
<textarea id="subtitle" rows="4" cols="50"></textarea>
|
|
509
565
|
|
|
510
|
-
<p
|
|
566
|
+
<p><b>Description</b><br>What do players have to do to complete this level?</p>
|
|
511
567
|
<textarea id="description" rows="4" cols="50"></textarea>
|
|
512
568
|
</div>
|
|
513
569
|
</div>
|
|
514
570
|
</div>
|
|
515
571
|
|
|
516
572
|
<div id="hint_pane" class="tab_pane">
|
|
517
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/hint.svg" %}'>
|
|
518
|
-
<p>
|
|
519
|
-
<p>
|
|
573
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/hint.svg" %}'>Hint</h2>
|
|
574
|
+
<p>Help out your players by adding hints! Players will have the option to view a hint when they have made an unsuccessful attempt.</p>
|
|
575
|
+
<p>Players can also access hints by clicking the hint button whilst playing.</p>
|
|
520
576
|
<div class="tab_pane_content_holder">
|
|
521
577
|
<div class="tab_pane_content">
|
|
522
|
-
<p
|
|
578
|
+
<p><b>Hint</b></p>
|
|
523
579
|
<textarea id="hint" rows="4" cols="50"></textarea>
|
|
524
580
|
</div>
|
|
525
581
|
</div>
|
|
526
582
|
</div>
|
|
527
583
|
|
|
528
584
|
<div id="load_pane" class="tab_pane">
|
|
529
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/load.svg" %}'>
|
|
530
|
-
<p>
|
|
585
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/load.svg" %}'>Load</h2>
|
|
586
|
+
<p>Here you can load in levels created by you and your friends! Select a level in the table and press load.</p>
|
|
531
587
|
|
|
532
588
|
<div class="table_control_div">
|
|
533
589
|
|
|
534
590
|
<div id="does_not_exist">
|
|
535
|
-
<p>
|
|
591
|
+
<p>You don't have any levels to load yet. Try saving one!</p>
|
|
536
592
|
</div>
|
|
537
593
|
|
|
538
594
|
<div id="does_exist">
|
|
539
595
|
<p>
|
|
540
|
-
|
|
596
|
+
Load:
|
|
541
597
|
<select id="load_type_select">
|
|
542
|
-
<option value="ownLevels" selected>
|
|
543
|
-
<option value="sharedLevels">
|
|
598
|
+
<option value="ownLevels" selected>your own levels</option>
|
|
599
|
+
<option value="sharedLevels">shared levels</option>
|
|
544
600
|
</select>
|
|
545
601
|
</p>
|
|
546
602
|
|
|
@@ -548,8 +604,8 @@
|
|
|
548
604
|
<table width='100%' id="loadLevelTableHeader">
|
|
549
605
|
<thead>
|
|
550
606
|
<tr>
|
|
551
|
-
<th>
|
|
552
|
-
<th>
|
|
607
|
+
<th>Name</th>
|
|
608
|
+
<th>Owner</th>
|
|
553
609
|
</tr>
|
|
554
610
|
</thead>
|
|
555
611
|
</table>
|
|
@@ -566,29 +622,29 @@
|
|
|
566
622
|
|
|
567
623
|
<div>
|
|
568
624
|
<button class="navigation_button long_button" id="deleteLevel">
|
|
569
|
-
<img src="{% static "game/image/icons/clear.svg" %}">
|
|
570
|
-
<span>
|
|
625
|
+
<img src="{% static " game/image/icons/clear.svg" %}">
|
|
626
|
+
<span>Delete</span>
|
|
571
627
|
</button>
|
|
572
628
|
|
|
573
629
|
<button class="navigation_button long_button" id="loadLevel">
|
|
574
|
-
<img src="{% static "game/image/icons/load.svg" %}">
|
|
575
|
-
<span>
|
|
630
|
+
<img src="{% static " game/image/icons/load.svg" %}">
|
|
631
|
+
<span>Load</span>
|
|
576
632
|
</button>
|
|
577
633
|
</div>
|
|
578
634
|
</div>
|
|
579
635
|
|
|
580
636
|
<div id="save_pane" class="tab_pane">
|
|
581
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/save.svg" %}'>
|
|
582
|
-
<p>
|
|
583
|
-
<p>
|
|
637
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/save.svg" %}'>Save</h2>
|
|
638
|
+
<p>Here you can save your new level. Enter a name below and hit save. Alternatively click on an existing level to update it.</p>
|
|
639
|
+
<p>To play your level and be tracked, first <b>Quit</b> the Level Editor and select your level from the 'Levels created by you' section.</p>
|
|
584
640
|
|
|
585
641
|
<div class="table_control_div">
|
|
586
642
|
<div class="scrolling-table-wrapper">
|
|
587
643
|
<table width='100%' id="saveLevelTableHeader">
|
|
588
644
|
<thead>
|
|
589
645
|
<tr>
|
|
590
|
-
<th>
|
|
591
|
-
<th>
|
|
646
|
+
<th>Name</th>
|
|
647
|
+
<th>Owner</th>
|
|
592
648
|
</tr>
|
|
593
649
|
</thead>
|
|
594
650
|
</table>
|
|
@@ -600,49 +656,49 @@
|
|
|
600
656
|
</div>
|
|
601
657
|
<br style="clear:both">
|
|
602
658
|
<div>
|
|
603
|
-
<label>
|
|
659
|
+
<label>Name:</label>
|
|
604
660
|
<input type="text" id="levelNameInput">
|
|
605
661
|
</div>
|
|
606
662
|
</div>
|
|
607
663
|
<br>
|
|
608
664
|
<br>
|
|
609
665
|
<button class="navigation_button long_button" id="saveLevel">
|
|
610
|
-
<img src="{% static "game/image/icons/save.svg" %}">
|
|
611
|
-
<span>
|
|
666
|
+
<img src="{% static " game/image/icons/save.svg" %}">
|
|
667
|
+
<span>Save</span>
|
|
612
668
|
</button>
|
|
613
669
|
</div>
|
|
614
670
|
|
|
615
671
|
<div id="share_pane" class="tab_pane">
|
|
616
|
-
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/share.svg" %}'>
|
|
672
|
+
<h2 class="title"><img class="modal_image" src='{% static "game/image/icons/share.svg" %}'>Share</h2>
|
|
617
673
|
|
|
618
674
|
{% if user|get_user_status == 'TEACHER' %}
|
|
619
|
-
|
|
620
|
-
|
|
675
|
+
<p>Here you can share your level with your classes or your fellow teachers.</p>
|
|
676
|
+
<p><strong>Admin teachers can already see levels created by you.</strong></p>
|
|
621
677
|
{% elif user|get_user_status == 'SCHOOL_STUDENT' %}
|
|
622
|
-
|
|
678
|
+
<p>Here you can share your level with your classmates. Try clicking in the Shared column!</p>
|
|
623
679
|
{% endif %}
|
|
624
680
|
|
|
625
681
|
<div class="table_control_div">
|
|
626
682
|
{% if user|get_user_status == 'TEACHER' %}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
683
|
+
<p>
|
|
684
|
+
Share with:
|
|
685
|
+
<select id="share_type_select">
|
|
686
|
+
<option value="classes" selected>Classes</option>
|
|
687
|
+
<option value="teachers">Teachers</option>
|
|
688
|
+
</select>
|
|
689
|
+
</p>
|
|
690
|
+
|
|
691
|
+
<p id="class_selection">
|
|
692
|
+
Class: <select id="class_select"></select>
|
|
693
|
+
</p>
|
|
638
694
|
{% endif %}
|
|
639
695
|
|
|
640
696
|
<div id="shared_levels" class="scrolling-table-wrapper">
|
|
641
697
|
<table width='100%' id="shareLevelTableHeader">
|
|
642
698
|
<thead>
|
|
643
699
|
<tr>
|
|
644
|
-
<th>
|
|
645
|
-
<th>
|
|
700
|
+
<th>Name</th>
|
|
701
|
+
<th>Shared</th>
|
|
646
702
|
</tr>
|
|
647
703
|
</thead>
|
|
648
704
|
</table>
|
|
@@ -656,7 +712,7 @@
|
|
|
656
712
|
|
|
657
713
|
<button class="navigation_button long_button" id="shareWithAll">
|
|
658
714
|
<img src="{% static 'game/image/icons/share.svg' %}">
|
|
659
|
-
<span>
|
|
715
|
+
<span>Share with all</span>
|
|
660
716
|
</button>
|
|
661
717
|
</div>
|
|
662
718
|
|
|
@@ -677,4 +733,4 @@
|
|
|
677
733
|
<div id="blockly"></div>
|
|
678
734
|
<xml id="blockly_toolbox"></xml>
|
|
679
735
|
|
|
680
|
-
{% endblock %}
|
|
736
|
+
{% endblock %}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rapid-router
|
|
3
|
-
Version: 7.6.
|
|
3
|
+
Version: 7.6.7
|
|
4
4
|
Classifier: Programming Language :: Python
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Framework :: Django
|
|
@@ -9,7 +9,7 @@ Requires-Dist: asgiref==3.9.2; python_version >= "3.9"
|
|
|
9
9
|
Requires-Dist: asttokens==3.0.0; python_version >= "3.8"
|
|
10
10
|
Requires-Dist: certifi==2025.8.3; python_version >= "3.7"
|
|
11
11
|
Requires-Dist: cffi==1.17.1; platform_python_implementation != "PyPy"
|
|
12
|
-
Requires-Dist: cfl-common==8.9.
|
|
12
|
+
Requires-Dist: cfl-common==8.9.7
|
|
13
13
|
Requires-Dist: charset-normalizer==3.4.3; python_version >= "3.7"
|
|
14
14
|
Requires-Dist: cryptography==44.0.1; python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1"
|
|
15
15
|
Requires-Dist: decorator==5.2.1; python_version >= "3.8"
|
|
@@ -31,7 +31,7 @@ Requires-Dist: ipython==9.6.0; python_version >= "3.11"
|
|
|
31
31
|
Requires-Dist: ipython-pygments-lexers==1.1.1; python_version >= "3.8"
|
|
32
32
|
Requires-Dist: jedi==0.19.2; python_version >= "3.6"
|
|
33
33
|
Requires-Dist: libsass==0.23.0; python_version >= "3.8"
|
|
34
|
-
Requires-Dist: matplotlib-inline==0.1
|
|
34
|
+
Requires-Dist: matplotlib-inline==0.2.1; python_version >= "3.9"
|
|
35
35
|
Requires-Dist: more-itertools==8.7.0; python_version >= "3.5"
|
|
36
36
|
Requires-Dist: numpy==2.3.2; python_version >= "3.11"
|
|
37
37
|
Requires-Dist: pandas==2.3.2; python_version >= "3.9"
|
|
@@ -72,13 +72,13 @@ Requires-Dist: botocore==1.36.26; python_version >= "3.8" and extra == "dev"
|
|
|
72
72
|
Requires-Dist: celery[sqs]==5.4.0; python_version >= "3.8" and extra == "dev"
|
|
73
73
|
Requires-Dist: certifi==2025.8.3; python_version >= "3.7" and extra == "dev"
|
|
74
74
|
Requires-Dist: cffi==1.17.1; platform_python_implementation != "PyPy" and extra == "dev"
|
|
75
|
-
Requires-Dist: cfl-common==8.9.
|
|
75
|
+
Requires-Dist: cfl-common==8.9.7; extra == "dev"
|
|
76
76
|
Requires-Dist: charset-normalizer==3.4.3; python_version >= "3.7" and extra == "dev"
|
|
77
77
|
Requires-Dist: click==8.3.0; python_version >= "3.10" and extra == "dev"
|
|
78
78
|
Requires-Dist: click-didyoumean==0.3.1; python_full_version >= "3.6.2" and extra == "dev"
|
|
79
79
|
Requires-Dist: click-plugins==1.1.1.2; extra == "dev"
|
|
80
80
|
Requires-Dist: click-repl==0.3.0; python_version >= "3.6" and extra == "dev"
|
|
81
|
-
Requires-Dist: codeforlife-portal==8.9.
|
|
81
|
+
Requires-Dist: codeforlife-portal==8.9.7; extra == "dev"
|
|
82
82
|
Requires-Dist: cryptography==44.0.1; (python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1") and extra == "dev"
|
|
83
83
|
Requires-Dist: diff-match-patch==20241021; python_version >= "3.7" and extra == "dev"
|
|
84
84
|
Requires-Dist: django==5.1.13; python_version >= "3.10" and extra == "dev"
|
|
@@ -105,8 +105,8 @@ Requires-Dist: gunicorn==23.0.0; python_version >= "3.7" and extra == "dev"
|
|
|
105
105
|
Requires-Dist: h11==0.16.0; python_version >= "3.8" and extra == "dev"
|
|
106
106
|
Requires-Dist: idna==3.10; python_version >= "3.6" and extra == "dev"
|
|
107
107
|
Requires-Dist: importlib-metadata==4.13.0; python_version >= "3.7" and extra == "dev"
|
|
108
|
-
Requires-Dist: iniconfig==2.
|
|
109
|
-
Requires-Dist: isort==
|
|
108
|
+
Requires-Dist: iniconfig==2.3.0; python_version >= "3.10" and extra == "dev"
|
|
109
|
+
Requires-Dist: isort==7.0.0; python_full_version >= "3.10.0" and extra == "dev"
|
|
110
110
|
Requires-Dist: jmespath==1.0.1; python_version >= "3.7" and extra == "dev"
|
|
111
111
|
Requires-Dist: kombu[sqs]==5.5.4; python_version >= "3.8" and extra == "dev"
|
|
112
112
|
Requires-Dist: libsass==0.23.0; python_version >= "3.8" and extra == "dev"
|
|
@@ -138,7 +138,7 @@ Requires-Dist: pytest-order==1.3.0; python_version >= "3.7" and extra == "dev"
|
|
|
138
138
|
Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9" and extra == "dev"
|
|
139
139
|
Requires-Dist: python-dateutil==2.9.0.post0; (python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3") and extra == "dev"
|
|
140
140
|
Requires-Dist: python-dotenv==1.0.1; python_version >= "3.8" and extra == "dev"
|
|
141
|
-
Requires-Dist: pytokens==0.
|
|
141
|
+
Requires-Dist: pytokens==0.2.0; python_version >= "3.8" and extra == "dev"
|
|
142
142
|
Requires-Dist: pytz==2025.2; extra == "dev"
|
|
143
143
|
Requires-Dist: pyyaml==6.0.2; python_version >= "3.8" and extra == "dev"
|
|
144
144
|
Requires-Dist: qrcode==7.4.2; python_version >= "3.7" and extra == "dev"
|
|
@@ -3,7 +3,7 @@ example_project/rapid_router_test_settings.py,sha256=-8pBDGeDSM0ziu5BLUXVqB9J97A
|
|
|
3
3
|
example_project/settings.py,sha256=I_upxXh1PBbeX0aKttLeqjGbjPCDTfgMVJgBv7vcc0g,4599
|
|
4
4
|
example_project/urls.py,sha256=XHug_cpNy21yOef3E1-wWT5VkTuxpl6ZXIlCj6jDjWA,422
|
|
5
5
|
example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
|
|
6
|
-
game/__init__.py,sha256=
|
|
6
|
+
game/__init__.py,sha256=3atqbhGAZzBMT7RghnLj0p6adoJASd39XJG0rTmSaFU,22
|
|
7
7
|
game/admin.py,sha256=BLwwaqQYuqmMdwqnvhdan19iGxdcoBX4CXFk_ROG5-M,1431
|
|
8
8
|
game/app_settings.py,sha256=mlg-1AiP7AR5JNOHAXXLuCrYWaZMmSihvSYk9c2c8YY,857
|
|
9
9
|
game/cache.py,sha256=dtOiFl6Z4I2Q9-8Hz24ZI-5C0asXYSQhF2Be5q74N8g,2227
|
|
@@ -764,7 +764,7 @@ game/templates/game/basenonav.html,sha256=XG134a66OpQNrPvU76YwpXo9wj1YEl4s5NmBBc
|
|
|
764
764
|
game/templates/game/crowdin.html,sha256=3wgp2vHxD117oy8hNALjyPutHm6iMdY0eNJYCQtqnAI,299
|
|
765
765
|
game/templates/game/error.html,sha256=pu_WX5DtctmhD2enf5rC--Uys_7NOPtndsYKSOF08Mk,167
|
|
766
766
|
game/templates/game/game.html,sha256=3Bdh7SKDTcSP6CXW1Et2q9Igb3Ml6Ld8TDRcOAKc0-U,30479
|
|
767
|
-
game/templates/game/level_editor.html,sha256=
|
|
767
|
+
game/templates/game/level_editor.html,sha256=bUe_2tUEB1Fwjd6rDszyqvLzK2Upy8Nz3MbKiqIfvxM,28974
|
|
768
768
|
game/templates/game/level_moderation.html,sha256=6JOutcJd9ZkkBppF4pKXdH5Q8dZpC2n1SUMHp7vVrEE,7299
|
|
769
769
|
game/templates/game/level_selection.html,sha256=zDh59c8nE_T_tE3bvTwlxn96psYu0rROWdihMtcdNJI,11156
|
|
770
770
|
game/templates/game/logged_students.html,sha256=WBTwdNb5YGopLdog7-vNDc9WO5_u8pqi3ehG12g8VOM,1471
|
|
@@ -804,8 +804,8 @@ game/views/level_solutions.py,sha256=oYwx0p1LuY7609H2lid7lAq3QvcD6_K9cy5U_i6CwWg
|
|
|
804
804
|
game/views/scoreboard.py,sha256=Lxy7XtoG7VwWpTb-c22BGC6eN8uCmmOnQ2qjY-oXA3k,16914
|
|
805
805
|
game/views/scoreboard_csv.py,sha256=yx4tOwx5QsHyU1S1BUPUqRBWIh5idq8QVtBID-NqZto,1768
|
|
806
806
|
game/views/worksheet.py,sha256=R7DgR3OhgITkmPHzkv0WLu_bkHvt3RGkcD7ySx3ippg,705
|
|
807
|
-
rapid_router-7.6.
|
|
808
|
-
rapid_router-7.6.
|
|
809
|
-
rapid_router-7.6.
|
|
810
|
-
rapid_router-7.6.
|
|
811
|
-
rapid_router-7.6.
|
|
807
|
+
rapid_router-7.6.7.dist-info/licenses/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
|
|
808
|
+
rapid_router-7.6.7.dist-info/METADATA,sha256=zU5x6ehJ7yrbXABg4EkalKOwQh1u2IP7XmVTTwVF0g4,11803
|
|
809
|
+
rapid_router-7.6.7.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
|
810
|
+
rapid_router-7.6.7.dist-info/top_level.txt,sha256=rKP4ryr1t8Wcnx8grJHDViM3T5cMYH_0vygDjC04ArA,21
|
|
811
|
+
rapid_router-7.6.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|