rapid-router 5.18.0__py2.py3-none-any.whl → 7.6.8__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.
- example_project/rapid_router_test_settings.py +19 -7
- example_project/settings.py +21 -8
- example_project/urls.py +5 -6
- game/__init__.py +1 -1
- game/admin.py +7 -2
- game/character.py +8 -0
- game/decor.py +40 -0
- game/end_to_end_tests/base_game_test.py +34 -27
- game/end_to_end_tests/editor_page.py +15 -0
- game/end_to_end_tests/game_page.py +88 -20
- game/end_to_end_tests/selenium_test_case.py +1 -20
- game/end_to_end_tests/test_cow_crashes.py +3 -5
- game/end_to_end_tests/test_level_editor.py +273 -10
- game/end_to_end_tests/test_level_selection.py +25 -3
- game/end_to_end_tests/test_play_through.py +222 -127
- game/end_to_end_tests/test_python_levels.py +41 -7
- game/end_to_end_tests/test_saving_workspace.py +2 -1
- game/forms.py +7 -1
- game/level_management.py +26 -11
- game/messages.py +899 -337
- game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
- game/migrations/0026_levels_pt2.py +13 -2
- game/migrations/0032_cannot_turn_left_level.py +13 -2
- game/migrations/0033_recursion_level.py +13 -2
- game/migrations/0034_joes_level.py +13 -2
- game/migrations/0035_disable_route_score_level_70.py +0 -2
- game/migrations/0036_level_score_73.py +0 -2
- game/migrations/0037_level_score_79.py +0 -2
- game/migrations/0038_level_score_40.py +0 -1
- game/migrations/0042_level_score_73.py +0 -2
- game/migrations/0048_add_cow_field_and_blocks.py +0 -2
- game/migrations/0049_level_score_34.py +0 -2
- game/migrations/0050_level_score_40.py +0 -2
- game/migrations/0051_level_score_49.py +0 -1
- game/migrations/0086_loop_levels.py +13 -2
- game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
- game/migrations/0093_alter_level_character_name.py +18 -0
- game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
- game/migrations/0095_level_commands.py +18 -0
- game/migrations/0096_alter_level_commands.py +18 -0
- game/migrations/0097_add_python_den_levels.py +1515 -0
- game/migrations/0098_add_episode_link_fields.py +44 -0
- game/migrations/0099_python_episodes_links.py +103 -0
- game/migrations/0100_reorder_python_levels.py +179 -0
- game/migrations/0101_rename_episodes.py +45 -0
- game/migrations/0102_reoder_episodes_13_14.py +136 -0
- game/migrations/0103_level_1015_solution.py +26 -0
- game/migrations/0104_remove_level_direct_drive.py +17 -0
- game/migrations/0105_delete_invalid_attempts.py +18 -0
- game/migrations/0106_fields_to_snake_case.py +48 -0
- game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
- game/migrations/0108_episode_indy_worksheet_link.py +18 -0
- game/migrations/0109_create_episodes_23_and_24.py +99 -0
- game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
- game/migrations/0111_create_worksheets.py +149 -0
- game/migrations/0112_worksheet_locked_classes.py +21 -0
- game/migrations/0113_level_needs_approval.py +18 -0
- game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
- game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
- game/migrations/0116_update_worksheet_video_links.py +68 -0
- game/migrations/0117_update_solutions_to_if_else.py +61 -0
- game/models.py +127 -17
- game/permissions.py +51 -19
- game/python_den_urls.py +26 -0
- game/random_road.py +9 -9
- game/serializers.py +12 -17
- game/static/django_reverse_js/js/reverse.js +171 -0
- game/static/game/css/LilitaOne-Regular.ttf +0 -0
- game/static/game/css/backgrounds.css +8 -12
- game/static/game/css/dataTables.custom.css +3 -2
- game/static/game/css/editor.css +47 -0
- game/static/game/css/game.css +37 -43
- game/static/game/css/game_screen.css +16 -0
- game/static/game/css/level_editor.css +5 -0
- game/static/game/css/level_selection.css +17 -2
- game/static/game/image/Python_Den_hero_student.png +0 -0
- game/static/game/image/Python_levels_page.svg +1954 -0
- game/static/game/image/characters/front_view/Electric_van.svg +448 -0
- game/static/game/image/characters/top_view/Electric_van.svg +448 -0
- game/static/game/image/decor/city/solar_panel.svg +1200 -0
- game/static/game/image/decor/farm/solar_panel.svg +86 -0
- game/static/game/image/decor/grass/solar_panel.svg +86 -0
- game/static/game/image/decor/snow/solar_panel.svg +173 -0
- game/static/game/image/electric_van.svg +448 -0
- game/static/game/image/icons/description.svg +1 -0
- game/static/game/image/icons/hint.svg +1 -0
- game/static/game/image/icons/python.svg +1 -1
- game/static/game/image/pigeon.svg +684 -0
- game/static/game/image/python_den_header.svg +19 -0
- game/static/game/js/animation.js +65 -24
- game/static/game/js/blockly/msg/js/bg.js +52 -1
- game/static/game/js/blockly/msg/js/ca.js +52 -1
- game/static/game/js/blockly/msg/js/en-gb.js +2 -0
- game/static/game/js/blockly/msg/js/en.js +2 -0
- game/static/game/js/blockly/msg/js/es.js +52 -1
- game/static/game/js/blockly/msg/js/fr.js +2 -0
- game/static/game/js/blockly/msg/js/hi.js +2 -0
- game/static/game/js/blockly/msg/js/it.js +52 -1
- game/static/game/js/blockly/msg/js/pl.js +52 -1
- game/static/game/js/blockly/msg/js/pt-br.js +52 -1
- game/static/game/js/blockly/msg/js/ru.js +52 -1
- game/static/game/js/blockly/msg/js/ur.js +52 -1
- game/static/game/js/blocklyCustomBlocks.js +93 -52
- game/static/game/js/button.js +12 -0
- game/static/game/js/cow.js +11 -7
- game/static/game/js/drawing.js +68 -29
- game/static/game/js/editor.js +23 -0
- game/static/game/js/game.js +74 -110
- game/static/game/js/level_editor.js +646 -274
- game/static/game/js/level_moderation.js +33 -2
- game/static/game/js/level_selection.js +1 -1
- game/static/game/js/loadLanguages.js +2 -2
- game/static/game/js/model.js +32 -2
- game/static/game/js/pythonControl.js +14 -1
- game/static/game/js/scoreboard.js +0 -37
- game/static/game/js/scoreboardSharedLevels.js +48 -0
- game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
- game/static/game/js/sound.js +52 -5
- game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
- game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
- game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
- game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
- game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
- game/static/game/raphael_image/pigeon.svg +685 -0
- game/static/game/sass/game.scss +2 -2
- game/static/game/sound/clown_horn.mp3 +0 -0
- game/static/game/sound/clown_horn.ogg +0 -0
- game/static/game/sound/electric_van_starting.mp3 +0 -0
- game/static/game/sound/electric_van_starting.ogg +0 -0
- game/static/game/sound/pigeon.mp3 +0 -0
- game/static/game/sound/pigeon.ogg +0 -0
- game/static/game/sound/sleigh_bells.mp3 +0 -0
- game/static/game/sound/sleigh_bells.ogg +0 -0
- game/static/game/sound/sleigh_crash.mp3 +0 -0
- game/static/game/sound/sleigh_crash.ogg +0 -0
- game/templates/game/base.html +34 -14
- game/templates/game/basenonav.html +11 -5
- game/templates/game/game.html +142 -38
- game/templates/game/level_editor.html +340 -236
- game/templates/game/level_moderation.html +19 -6
- game/templates/game/level_selection.html +18 -110
- game/templates/game/python_den_level_selection.html +291 -0
- game/templates/game/python_den_worksheet.html +101 -0
- game/templates/game/scoreboard.html +83 -64
- game/tests/test_level_editor.py +94 -26
- game/tests/test_level_selection.py +149 -46
- game/tests/test_python_den_worksheet.py +85 -0
- game/tests/test_scoreboard.py +34 -7
- game/tests/utils/level.py +32 -26
- game/theme.py +5 -5
- game/urls.py +199 -61
- game/views/language_code_conversions.py +86 -86
- game/views/level.py +155 -63
- game/views/level_editor.py +88 -55
- game/views/level_moderation.py +23 -0
- game/views/level_selection.py +116 -47
- game/views/level_solutions.py +491 -106
- game/views/scoreboard.py +76 -51
- game/views/worksheet.py +25 -0
- rapid_router-7.6.8.dist-info/METADATA +174 -0
- {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/RECORD +164 -104
- {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
- example_project/manage.py +0 -10
- game/static/game/image/actions/go.svg +0 -18
- game/static/game/js/js-reverse.js +0 -14
- game/static/game/js/pqselect.min.js +0 -9
- game/static/game/js/widget-scroller.js +0 -906
- rapid_router-5.18.0.dist-info/METADATA +0 -17
- {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info/licenses}/LICENSE.md +0 -0
- {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
this.Urls = (function () {
|
|
2
|
+
var data = {"urls": [["about", [["about", []]]], ["admin:app_list", [["administration/%(app_label)s/", ["app_label"]]]], ["admin:auth_group_add", [["administration/auth/group/add/", []]]], ["admin:auth_group_change", [["administration/auth/group/%(object_id)s/change/", ["object_id"]]]], ["admin:auth_group_changelist", [["administration/auth/group/", []]]], ["admin:auth_group_delete", [["administration/auth/group/%(object_id)s/delete/", ["object_id"]]]], ["admin:auth_group_history", [["administration/auth/group/%(object_id)s/history/", ["object_id"]]]], ["admin:auth_user_add", [["administration/auth/user/add/", []]]], ["admin:auth_user_change", [["administration/auth/user/%(object_id)s/change/", ["object_id"]]]], ["admin:auth_user_changelist", [["administration/auth/user/", []]]], ["admin:auth_user_delete", [["administration/auth/user/%(object_id)s/delete/", ["object_id"]]]], ["admin:auth_user_history", [["administration/auth/user/%(object_id)s/history/", ["object_id"]]]], ["admin:auth_user_password_change", [["administration/auth/user/%(id)s/password/", ["id"]]]], ["admin:autocomplete", [["administration/autocomplete/", []]]], ["admin:common_class_add", [["administration/common/class/add/", []]]], ["admin:common_class_change", [["administration/common/class/%(object_id)s/change/", ["object_id"]]]], ["admin:common_class_changelist", [["administration/common/class/", []]]], ["admin:common_class_delete", [["administration/common/class/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_class_history", [["administration/common/class/%(object_id)s/history/", ["object_id"]]]], ["admin:common_dailyactivity_add", [["administration/common/dailyactivity/add/", []]]], ["admin:common_dailyactivity_change", [["administration/common/dailyactivity/%(object_id)s/change/", ["object_id"]]]], ["admin:common_dailyactivity_changelist", [["administration/common/dailyactivity/", []]]], ["admin:common_dailyactivity_delete", [["administration/common/dailyactivity/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_dailyactivity_history", [["administration/common/dailyactivity/%(object_id)s/history/", ["object_id"]]]], ["admin:common_dynamicelement_add", [["administration/common/dynamicelement/add/", []]]], ["admin:common_dynamicelement_change", [["administration/common/dynamicelement/%(object_id)s/change/", ["object_id"]]]], ["admin:common_dynamicelement_changelist", [["administration/common/dynamicelement/", []]]], ["admin:common_dynamicelement_delete", [["administration/common/dynamicelement/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_dynamicelement_history", [["administration/common/dynamicelement/%(object_id)s/history/", ["object_id"]]]], ["admin:common_school_add", [["administration/common/school/add/", []]]], ["admin:common_school_change", [["administration/common/school/%(object_id)s/change/", ["object_id"]]]], ["admin:common_school_changelist", [["administration/common/school/", []]]], ["admin:common_school_delete", [["administration/common/school/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_school_history", [["administration/common/school/%(object_id)s/history/", ["object_id"]]]], ["admin:common_schoolteacherinvitation_add", [["administration/common/schoolteacherinvitation/add/", []]]], ["admin:common_schoolteacherinvitation_change", [["administration/common/schoolteacherinvitation/%(object_id)s/change/", ["object_id"]]]], ["admin:common_schoolteacherinvitation_changelist", [["administration/common/schoolteacherinvitation/", []]]], ["admin:common_schoolteacherinvitation_delete", [["administration/common/schoolteacherinvitation/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_schoolteacherinvitation_history", [["administration/common/schoolteacherinvitation/%(object_id)s/history/", ["object_id"]]]], ["admin:common_student_add", [["administration/common/student/add/", []]]], ["admin:common_student_change", [["administration/common/student/%(object_id)s/change/", ["object_id"]]]], ["admin:common_student_changelist", [["administration/common/student/", []]]], ["admin:common_student_delete", [["administration/common/student/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_student_history", [["administration/common/student/%(object_id)s/history/", ["object_id"]]]], ["admin:common_teacher_add", [["administration/common/teacher/add/", []]]], ["admin:common_teacher_change", [["administration/common/teacher/%(object_id)s/change/", ["object_id"]]]], ["admin:common_teacher_changelist", [["administration/common/teacher/", []]]], ["admin:common_teacher_delete", [["administration/common/teacher/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_teacher_history", [["administration/common/teacher/%(object_id)s/history/", ["object_id"]]]], ["admin:common_totalactivity_add", [["administration/common/totalactivity/add/", []]]], ["admin:common_totalactivity_change", [["administration/common/totalactivity/%(object_id)s/change/", ["object_id"]]]], ["admin:common_totalactivity_changelist", [["administration/common/totalactivity/", []]]], ["admin:common_totalactivity_delete", [["administration/common/totalactivity/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_totalactivity_history", [["administration/common/totalactivity/%(object_id)s/history/", ["object_id"]]]], ["admin:common_userprofile_add", [["administration/common/userprofile/add/", []]]], ["admin:common_userprofile_change", [["administration/common/userprofile/%(object_id)s/change/", ["object_id"]]]], ["admin:common_userprofile_changelist", [["administration/common/userprofile/", []]]], ["admin:common_userprofile_delete", [["administration/common/userprofile/%(object_id)s/delete/", ["object_id"]]]], ["admin:common_userprofile_history", [["administration/common/userprofile/%(object_id)s/history/", ["object_id"]]]], ["admin:game_attempt_add", [["administration/game/attempt/add/", []]]], ["admin:game_attempt_change", [["administration/game/attempt/%(object_id)s/change/", ["object_id"]]]], ["admin:game_attempt_changelist", [["administration/game/attempt/", []]]], ["admin:game_attempt_delete", [["administration/game/attempt/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_attempt_history", [["administration/game/attempt/%(object_id)s/history/", ["object_id"]]]], ["admin:game_block_add", [["administration/game/block/add/", []]]], ["admin:game_block_change", [["administration/game/block/%(object_id)s/change/", ["object_id"]]]], ["admin:game_block_changelist", [["administration/game/block/", []]]], ["admin:game_block_delete", [["administration/game/block/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_block_history", [["administration/game/block/%(object_id)s/history/", ["object_id"]]]], ["admin:game_episode_add", [["administration/game/episode/add/", []]]], ["admin:game_episode_change", [["administration/game/episode/%(object_id)s/change/", ["object_id"]]]], ["admin:game_episode_changelist", [["administration/game/episode/", []]]], ["admin:game_episode_delete", [["administration/game/episode/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_episode_history", [["administration/game/episode/%(object_id)s/history/", ["object_id"]]]], ["admin:game_level_add", [["administration/game/level/add/", []]]], ["admin:game_level_change", [["administration/game/level/%(object_id)s/change/", ["object_id"]]]], ["admin:game_level_changelist", [["administration/game/level/", []]]], ["admin:game_level_delete", [["administration/game/level/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_level_history", [["administration/game/level/%(object_id)s/history/", ["object_id"]]]], ["admin:game_leveldecor_add", [["administration/game/leveldecor/add/", []]]], ["admin:game_leveldecor_change", [["administration/game/leveldecor/%(object_id)s/change/", ["object_id"]]]], ["admin:game_leveldecor_changelist", [["administration/game/leveldecor/", []]]], ["admin:game_leveldecor_delete", [["administration/game/leveldecor/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_leveldecor_history", [["administration/game/leveldecor/%(object_id)s/history/", ["object_id"]]]], ["admin:game_workspace_add", [["administration/game/workspace/add/", []]]], ["admin:game_workspace_change", [["administration/game/workspace/%(object_id)s/change/", ["object_id"]]]], ["admin:game_workspace_changelist", [["administration/game/workspace/", []]]], ["admin:game_workspace_delete", [["administration/game/workspace/%(object_id)s/delete/", ["object_id"]]]], ["admin:game_workspace_history", [["administration/game/workspace/%(object_id)s/history/", ["object_id"]]]], ["admin:index", [["administration/", []]]], ["admin:jsi18n", [["administration/jsi18n/", []]]], ["admin:login", [["administration/login/", []]]], ["admin:logout", [["administration/logout/", []]]], ["admin:otp_static_staticdevice_add", [["administration/otp_static/staticdevice/add/", []]]], ["admin:otp_static_staticdevice_change", [["administration/otp_static/staticdevice/%(object_id)s/change/", ["object_id"]]]], ["admin:otp_static_staticdevice_changelist", [["administration/otp_static/staticdevice/", []]]], ["admin:otp_static_staticdevice_delete", [["administration/otp_static/staticdevice/%(object_id)s/delete/", ["object_id"]]]], ["admin:otp_static_staticdevice_history", [["administration/otp_static/staticdevice/%(object_id)s/history/", ["object_id"]]]], ["admin:otp_totp_totpdevice_add", [["administration/otp_totp/totpdevice/add/", []]]], ["admin:otp_totp_totpdevice_change", [["administration/otp_totp/totpdevice/%(object_id)s/change/", ["object_id"]]]], ["admin:otp_totp_totpdevice_changelist", [["administration/otp_totp/totpdevice/", []]]], ["admin:otp_totp_totpdevice_config", [["administration/otp_totp/totpdevice/%(pk)s/config/", ["pk"]]]], ["admin:otp_totp_totpdevice_delete", [["administration/otp_totp/totpdevice/%(object_id)s/delete/", ["object_id"]]]], ["admin:otp_totp_totpdevice_history", [["administration/otp_totp/totpdevice/%(object_id)s/history/", ["object_id"]]]], ["admin:otp_totp_totpdevice_qrcode", [["administration/otp_totp/totpdevice/%(pk)s/qrcode/", ["pk"]]]], ["admin:password_change", [["administration/password_change/", []]]], ["admin:password_change_done", [["administration/password_change/done/", []]]], ["admin:view_on_site", [["administration/r/%(content_type_id)s/%(object_id)s/", ["content_type_id", "object_id"]]]], ["administration_password_change", [["administration/password_change/", []]]], ["administration_password_change_done", [["administration/password_change_done/", []]]], ["anonymise-unverified-accounts", [["cron/user/unverified/delete/", []]]], ["anonymise_orphan_schools", [["schools/anonymise/%(start_id)s/", ["start_id"]]]], ["approve_level", [["rapidrouter/level_moderation/approve/%(levelID)s/", ["levelID"]]]], ["block-detail", [["rapidrouter/api/blocks/%(pk)s/", ["pk"]]]], ["block-list", [["rapidrouter/api/blocks/", []]]], ["celebrate", [["celebrate/", []]]], ["character-detail", [["rapidrouter/api/characters/%(pk)s/", ["pk"]]]], ["character-list", [["rapidrouter/api/characters/", []]]], ["codingClub", [["codingClub/", []]]], ["consent_form", [["consent_form/", []]]], ["contribute", [["contribute", []]]], ["dashboard", [["teach/dashboard/", []]]], ["decor-detail", [["rapidrouter/api/decors/%(pk)s/", ["pk"]]]], ["decor-list", [["rapidrouter/api/decors/", []]]], ["delete_account", [["delete/account/", []]]], ["delete_level", [["rapidrouter/level_moderation/delete/%(levelID)s/", ["levelID"]]]], ["delete_level_for_editor", [["rapidrouter/level_editor/delete/%(levelId)s/", ["levelId"]]]], ["delete_teacher_invite", [["teach/dashboard/delete_teacher_invite/%(token)s", ["token"]]]], ["delete_workspace", [["rapidrouter/workspace/delete/%(workspaceID)s/", ["workspaceID"]]]], ["email_verification", [["verify_email/", []]]], ["episode-detail", [["rapidrouter/api/episodes/%(pk)s/", ["pk"]]]], ["episode-list", [["rapidrouter/api/episodes/", []]]], ["final-inactivity-reminder", [["cron/user/inactive/send-final-reminder/", []]]], ["first-inactivity-reminder", [["cron/user/inactive/send-first-reminder/", []]]], ["first-verify-email-reminder", [["cron/user/unverified/send-first-reminder/", []]]], ["generate_random_map_for_editor", [["rapidrouter/level_editor/random/", []]]], ["get_sharing_information_for_editor", [["rapidrouter/level_editor/get_sharing_information/%(levelID)s/", ["levelID"]]]], ["getinvolved", [["getinvolved", []]]], ["home", [["", []]]], ["home-learning", [["home-learning", []]]], ["inactive_users", [["users/inactive/", []]]], ["independent_edit_account", [["play/account/independent/", []]]], ["independent_student_details", [["play/details/independent", []]]], ["independent_student_login", [["login/independent/", []]]], ["invite_toggle_admin", [["teach/dashboard/toggle_admin_invite/%(invite_id)s/", ["invite_id"]]]], ["invited_teacher", [["invited_teacher/%(token)s/", ["token"]]]], ["js-reverse", [["rapidrouter/reverse.js", []]]], ["last-connected-since", [["api/lastconnectedsince/%(year)s/%(month)s/%(day)s/", ["year", "month", "day"]]]], ["level-detail", [["rapidrouter/api/levels/%(pk)s/", ["pk"]]]], ["level-for-episode", [["rapidrouter/api/episodes/%(pk)s/levels/", ["pk"]]]], ["level-list", [["rapidrouter/api/levels/", []]]], ["level_editor", [["rapidrouter/level_editor/", []]]], ["level_editor_chosen_level", [["rapidrouter/level_editor/%(levelId)s/", ["levelId"]]]], ["level_moderation", [["rapidrouter/level_moderation/", []]]], ["levelblock-detail", [["rapidrouter/api/levelblocks/%(pk)s/", ["pk"]]]], ["levelblock-for-level", [["rapidrouter/api/levels/%(pk)s/blocks/", ["pk"]]]], ["leveldecor-detail", [["rapidrouter/api/leveldecors/%(pk)s/", ["pk"]]]], ["leveldecor-for-level", [["rapidrouter/api/levels/%(pk)s/decors/", ["pk"]]]], ["levels", [["rapidrouter/", []]]], ["load_level_for_editor", [["rapidrouter/level_editor/get/%(levelID)s/", ["levelID"]]]], ["load_list_of_workspaces", [["rapidrouter/workspace/load_list/", []]]], ["load_workspace", [["rapidrouter/workspace/load/%(workspaceID)s/", ["workspaceID"]]]], ["load_workspace_solution", [["rapidrouter/workspace/solution/%(level_name)s/", ["level_name"]]]], ["locked_out", [["locked_out/", []]]], ["logout_view", [["logout/", []]]], ["maintenance", [["maintenance/", []]]], ["map-for-level", [["rapidrouter/api/levels/%(pk)s/map/", ["pk"]]]], ["map-list", [["rapidrouter/api/maps/", []]]], ["mode-for-level", [["rapidrouter/api/levels/%(pk)s/mode/", ["pk"]]]], ["number_users_per_country", [["api/userspercountry/%(country)s/", ["country"]]]], ["old_login_form", [["login_form", []]]], ["onboarding-class", [["teach/onboarding-class/%(access_code)s", ["access_code"]]]], ["onboarding-classes", [["teach/onboarding-classes", []]]], ["onboarding-organisation", [["teach/onboarding-organisation/", []]]], ["organisation_kick", [["teach/dashboard/kick/%(pk)s/", ["pk"]]]], ["organisation_leave", [["teach/dashboard/school/leave/", []]]], ["organisation_toggle_admin", [["teach/dashboard/toggle_admin/%(pk)s/", ["pk"]]]], ["owned_levels", [["rapidrouter/level_editor/levels/owned/", []]]], ["password_reset_check_and_confirm", [["user/password/reset/%(uidb64)s-%(token)s/", ["uidb64", "token"]]]], ["password_reset_complete", [["teacher/password/reset/complete/", []]]], ["play", [["play/", []]]], ["play_anonymous_level", [["rapidrouter/level_editor/play_anonymous/%(levelId)s/", ["levelId"]]]], ["play_custom_level", [["rapidrouter/custom/%(levelId)s/", ["levelId"]]]], ["play_custom_level_from_editor", [["rapidrouter/level_editor/play_custom/%(levelId)s/", ["levelId"]]]], ["play_default_level", [["rapidrouter/%(level_name)s/", ["level_name"]], ["%(level_name)s/", ["level_name"]]]], ["play_python_default_level", [["pythonden/%(level_name)s/", ["level_name"]]]], ["privacy_notice", [["privacy-notice/", []]]], ["privacy_policy", [["privacy-policy/", []]]], ["process_newsletter_form", [["news_signup/", []]]], ["python_levels", [["pythonden/", []]]], ["python_scoreboard", [["pythonden/scoreboard/", []]]], ["random_level_for_episode", [["rapidrouter/levels/random/%(_0)s/", ["_0"]]]], ["rapid-router/javascript-catalog", [["rapidrouter/js-i18n/", []]]], ["register", [["register_form", []]]], ["registered-users", [["api/registered/%(year)s/%(month)s/%(day)s/", ["year", "month", "day"]]]], ["remove_fake_accounts", [["removeFakeAccounts/", []]]], ["resend_invite_teacher", [["teach/dashboard/resend_invite/%(token)s/", ["token"]]]], ["reset_password_email_sent", [["user/password/reset/done/", []]]], ["reset_screentime_warning", [["user/reset_screentime_warning/", []]]], ["reset_session_time", [["user/reset_session_time/", []]]], ["rest_framework:login", [["rapidrouter/api-auth/login/", []]]], ["rest_framework:logout", [["rapidrouter/api-auth/logout/", []]]], ["save_level_for_editor", [["rapidrouter/level_editor/save/%(levelId)s/", ["levelId"]], ["rapidrouter/level_editor/save/", []]]], ["save_workspace", [["rapidrouter/workspace/save/%(workspaceID)s/", ["workspaceID"]], ["rapidrouter/workspace/save/", []]]], ["school_student_edit_account", [["play/account/school_student/", []]]], ["scoreboard", [["rapidrouter/scoreboard/", []]]], ["second-inactivity-reminder", [["cron/user/inactive/send-second-reminder/", []]]], ["second-verify-email-reminder", [["cron/user/unverified/send-second-reminder/", []]]], ["set_language", [["i18n/setlang/", []]]], ["share_level_for_editor", [["rapidrouter/level_editor/share/%(levelID)s/", ["levelID"]]]], ["shared_levels", [["rapidrouter/level_editor/levels/shared/", []]]], ["start_episode", [["rapidrouter/episode/%(episodeId)s/", ["episodeId"]]]], ["start_python_episode", [["pythonden/episode/%(episodeId)s/", ["episodeId"]]]], ["student_details", [["play/details/", []]]], ["student_direct_login", [["u/%(user_id)s/%(login_id)s/", ["user_id", "login_id"]]]], ["student_edit_account", [["play/account/", []]]], ["student_join_organisation", [["play/join/", []]]], ["student_login", [["login/student/%(access_code)s/", ["access_code"]], ["login/student/%(access_code)s/%(login_type)s/", ["access_code", "login_type"]]]], ["student_login_access_code", [["login/student/", []]]], ["student_password_reset", [["user/password/reset/student/", []]]], ["submit_attempt", [["rapidrouter/submit/", []]]], ["teach", [["teach/", []]]], ["teacher_accept_student_request", [["teach/dashboard/student/accept/%(pk)s/", ["pk"]]]], ["teacher_class_password_reset", [["teach/class/%(access_code)s/password_reset/", ["access_code"]]]], ["teacher_delete_class", [["teach/class/delete/%(access_code)s", ["access_code"]]]], ["teacher_delete_students", [["teach/class/%(access_code)s/students/delete/", ["access_code"]]]], ["teacher_disable_2FA", [["teach/dashboard/disable_2FA/%(pk)s/", ["pk"]]]], ["teacher_dismiss_students", [["teach/class/%(access_code)s/students/dismiss/", ["access_code"]]]], ["teacher_download_csv", [["teach/onboarding-class/%(access_code)s/download_csv/", ["access_code"]]]], ["teacher_edit_class", [["teach/class/edit/%(access_code)s", ["access_code"]]]], ["teacher_edit_student", [["teach/class/student/edit/%(pk)s/", ["pk"]]]], ["teacher_login", [["login/teacher/", []]]], ["teacher_move_students", [["teach/class/%(access_code)s/students/move/", ["access_code"]]]], ["teacher_move_students_to_class", [["teach/class/%(access_code)s/students/move/disambiguate/", ["access_code"]]]], ["teacher_password_reset", [["user/password/reset/teacher/", []]]], ["teacher_print_reminder_cards", [["teach/onboarding-class/%(access_code)s/print_reminder_cards/", ["access_code"]]]], ["teacher_reject_student_request", [["teach/dashboard/student/reject/%(pk)s/", ["pk"]]]], ["terms", [["terms", []]]], ["theme-detail", [["rapidrouter/api/themes/%(pk)s/", ["pk"]]]], ["theme-list", [["rapidrouter/api/themes/", []]]], ["two_factor:backup_tokens", [["account/two_factor/backup/tokens/", []]]], ["two_factor:disable", [["account/two_factor/disable/", []]]], ["two_factor:profile", [["account/two_factor/", []]]], ["two_factor:qr", [["account/two_factor/qrcode/", []]]], ["two_factor:setup", [["account/two_factor/setup/", []]]], ["two_factor:setup_complete", [["account/two_factor/setup/complete/", []]]], ["verify_email", [["verify_email/%(token)s/", ["token"]]]], ["view_class", [["teach/class/%(access_code)s", ["access_code"]]]]], "prefix": "/"};
|
|
3
|
+
var resolverFactory;
|
|
4
|
+
/******/ (() => { // webpackBootstrap
|
|
5
|
+
/******/ "use strict";
|
|
6
|
+
/******/ // The require scope
|
|
7
|
+
/******/ var __webpack_require__ = {};
|
|
8
|
+
/******/
|
|
9
|
+
/************************************************************************/
|
|
10
|
+
/******/ /* webpack/runtime/define property getters */
|
|
11
|
+
/******/ (() => {
|
|
12
|
+
/******/ // define getter functions for harmony exports
|
|
13
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
14
|
+
/******/ for(var key in definition) {
|
|
15
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
16
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
17
|
+
/******/ }
|
|
18
|
+
/******/ }
|
|
19
|
+
/******/ };
|
|
20
|
+
/******/ })();
|
|
21
|
+
/******/
|
|
22
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
23
|
+
/******/ (() => {
|
|
24
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
25
|
+
/******/ })();
|
|
26
|
+
/******/
|
|
27
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
28
|
+
/******/ (() => {
|
|
29
|
+
/******/ // define __esModule on exports
|
|
30
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
31
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
32
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
33
|
+
/******/ }
|
|
34
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
35
|
+
/******/ };
|
|
36
|
+
/******/ })();
|
|
37
|
+
/******/
|
|
38
|
+
/************************************************************************/
|
|
39
|
+
var __webpack_exports__ = {};
|
|
40
|
+
__webpack_require__.r(__webpack_exports__);
|
|
41
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
42
|
+
/* harmony export */ "UrlResolver": () => (/* binding */ UrlResolver),
|
|
43
|
+
/* harmony export */ "factory": () => (/* binding */ factory)
|
|
44
|
+
/* harmony export */ });
|
|
45
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
46
|
+
|
|
47
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
48
|
+
|
|
49
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
50
|
+
|
|
51
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
52
|
+
|
|
53
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
54
|
+
|
|
55
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
56
|
+
|
|
57
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
58
|
+
|
|
59
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
60
|
+
|
|
61
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
62
|
+
|
|
63
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
64
|
+
|
|
65
|
+
var UrlResolver = /*#__PURE__*/function () {
|
|
66
|
+
function UrlResolver(prefix, patterns) {
|
|
67
|
+
_classCallCheck(this, UrlResolver);
|
|
68
|
+
|
|
69
|
+
this.prefix = prefix;
|
|
70
|
+
this.patterns = patterns;
|
|
71
|
+
this.reverse = this.reverse.bind(this);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
_createClass(UrlResolver, [{
|
|
75
|
+
key: "reverse",
|
|
76
|
+
value: function reverse() {
|
|
77
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
78
|
+
args[_key] = arguments[_key];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var validateArgs, buildKwargs;
|
|
82
|
+
|
|
83
|
+
if (args.length === 1 && _typeof(args[0]) === 'object') {
|
|
84
|
+
// kwargs mode
|
|
85
|
+
var providedKeys = Object.keys(args[0]);
|
|
86
|
+
|
|
87
|
+
validateArgs = function validateArgs(_ref) {
|
|
88
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
89
|
+
_urlTemplate = _ref2[0],
|
|
90
|
+
urlParams = _ref2[1];
|
|
91
|
+
|
|
92
|
+
// check every needed param was provided (without extra elements)
|
|
93
|
+
return urlParams.length === providedKeys.length && urlParams.every(function (p) {
|
|
94
|
+
return providedKeys.includes(p);
|
|
95
|
+
});
|
|
96
|
+
}; // return first element
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
buildKwargs = function buildKwargs() {
|
|
100
|
+
return args[0];
|
|
101
|
+
};
|
|
102
|
+
} else {
|
|
103
|
+
// args mode
|
|
104
|
+
// check every required param
|
|
105
|
+
validateArgs = function validateArgs(_ref3) {
|
|
106
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
107
|
+
_urlTemplate = _ref4[0],
|
|
108
|
+
urlParams = _ref4[1];
|
|
109
|
+
|
|
110
|
+
return urlParams.length === args.length;
|
|
111
|
+
}; // build keyword-arguments from arguments
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
buildKwargs = function buildKwargs(keys) {
|
|
115
|
+
return Object.fromEntries(keys.map(function (key, i) {
|
|
116
|
+
return [key, args[i]];
|
|
117
|
+
}));
|
|
118
|
+
};
|
|
119
|
+
} // search between patterns if one matches provided args
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
var urlPattern = this.patterns.find(validateArgs);
|
|
123
|
+
|
|
124
|
+
if (!urlPattern) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
var _urlPattern = _slicedToArray(urlPattern, 2),
|
|
129
|
+
urlTemplate = _urlPattern[0],
|
|
130
|
+
urlKwargNames = _urlPattern[1];
|
|
131
|
+
|
|
132
|
+
var urlKwargs = buildKwargs(urlKwargNames);
|
|
133
|
+
var url = Object.entries(urlKwargs).reduce(function (partialUrl, _ref5) {
|
|
134
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
135
|
+
pName = _ref6[0],
|
|
136
|
+
pValue = _ref6[1];
|
|
137
|
+
|
|
138
|
+
if (pValue == null) pValue = ''; // replace variable with param
|
|
139
|
+
|
|
140
|
+
return partialUrl.replace("%(".concat(pName, ")s"), pValue);
|
|
141
|
+
}, urlTemplate);
|
|
142
|
+
return "".concat(this.prefix).concat(url);
|
|
143
|
+
}
|
|
144
|
+
}]);
|
|
145
|
+
|
|
146
|
+
return UrlResolver;
|
|
147
|
+
}();
|
|
148
|
+
function factory(config) {
|
|
149
|
+
var urlPatterns = config.urls,
|
|
150
|
+
urlPrefix = config.prefix;
|
|
151
|
+
return urlPatterns.reduce(function (resolver, _ref7) {
|
|
152
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
153
|
+
name = _ref8[0],
|
|
154
|
+
pattern = _ref8[1];
|
|
155
|
+
|
|
156
|
+
var urlResolver = new UrlResolver(urlPrefix, pattern);
|
|
157
|
+
resolver[name] = urlResolver.reverse; // turn snake-case into camel-case
|
|
158
|
+
|
|
159
|
+
resolver[name.replace(/[-_]+(.)/g, function (_m, p1) {
|
|
160
|
+
return p1.toUpperCase();
|
|
161
|
+
})] = urlResolver.reverse; // turn snake-case into dash-case
|
|
162
|
+
|
|
163
|
+
resolver[name.replace(/-/g, '_')] = urlResolver.reverse;
|
|
164
|
+
return resolver;
|
|
165
|
+
}, {});
|
|
166
|
+
}
|
|
167
|
+
resolverFactory = __webpack_exports__;
|
|
168
|
+
/******/ })()
|
|
169
|
+
;
|
|
170
|
+
return data ? resolverFactory.factory(data) : resolverFactory.factory;
|
|
171
|
+
})();
|
|
Binary file
|
|
@@ -16,22 +16,18 @@
|
|
|
16
16
|
background-color: #c90548;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
.bg--hard {
|
|
20
|
-
background-color: #8967d3;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.bg--advanced {
|
|
24
|
-
background-color: #754fc8;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
19
|
.bg--shared-levels {
|
|
28
20
|
background-color: #f6be00;
|
|
29
21
|
}
|
|
30
22
|
|
|
31
|
-
.bg--
|
|
32
|
-
background-color: #
|
|
23
|
+
.bg--early-python {
|
|
24
|
+
background-color: #213CE7;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.bg--late-python {
|
|
28
|
+
background-color: #152584;
|
|
33
29
|
}
|
|
34
30
|
|
|
35
|
-
.
|
|
36
|
-
|
|
31
|
+
.banner--python-den--image {
|
|
32
|
+
width: 100%;
|
|
37
33
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
editor-wc {
|
|
2
|
+
display: block;
|
|
3
|
+
width: 66%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
video,
|
|
7
|
+
iframe {
|
|
8
|
+
border: 1px solid black;
|
|
9
|
+
border-radius: 5px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.tab-pane video,
|
|
13
|
+
.tab-pane iframe {
|
|
14
|
+
border-radius: 0 0 5px 5px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.nav-tabs {
|
|
18
|
+
border-bottom: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.nav-tabs > li > a {
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.nav-tabs > li > a,
|
|
26
|
+
.nav-tabs > li > a:hover,
|
|
27
|
+
.nav-tabs > li > a:focus {
|
|
28
|
+
border: 1px solid grey;
|
|
29
|
+
border-bottom-color: transparent;
|
|
30
|
+
font-weight: normal;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.nav-tabs > li.active > a,
|
|
34
|
+
.nav-tabs > li.active > a:hover,
|
|
35
|
+
.nav-tabs > li.active > a:focus {
|
|
36
|
+
border: 1px solid black;
|
|
37
|
+
border-bottom-color: transparent;
|
|
38
|
+
font-weight: bold;
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media (max-width: 1000px) {
|
|
43
|
+
editor-wc {
|
|
44
|
+
height: 600px;
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
}
|
game/static/game/css/game.css
CHANGED
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: LilitaOne;
|
|
23
|
+
src: url(LilitaOne-Regular.ttf);
|
|
24
|
+
}
|
|
25
|
+
|
|
21
26
|
/*****************/
|
|
22
27
|
/* Tab structure */
|
|
23
28
|
/*****************/
|
|
@@ -37,13 +42,25 @@
|
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
#tabs #blockly_tab span,
|
|
40
|
-
#tabs #python_tab span
|
|
45
|
+
#tabs #python_tab span,
|
|
46
|
+
#tabs #language_tab select {
|
|
47
|
+
color: white;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#language_dropdown {
|
|
51
|
+
-webkit-appearance: none;
|
|
52
|
+
-moz-appearance: none;
|
|
53
|
+
appearance: none;
|
|
54
|
+
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='white'><polygon points='0,0 7,0 3.5,5'/></svg>") 96% 60% no-repeat;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
option {
|
|
41
58
|
color: black;
|
|
42
59
|
}
|
|
43
60
|
|
|
44
61
|
#tabs #blockly_tab img,
|
|
45
62
|
#tabs #python_tab img {
|
|
46
|
-
filter:
|
|
63
|
+
filter: invert(1);
|
|
47
64
|
}
|
|
48
65
|
|
|
49
66
|
#right {
|
|
@@ -164,6 +181,9 @@ div > .navigation_button_kurono {
|
|
|
164
181
|
margin:0;
|
|
165
182
|
border: none;
|
|
166
183
|
resize: none;
|
|
184
|
+
height: 100vh;
|
|
185
|
+
min-height: 100vh;
|
|
186
|
+
max-height: 100vh;
|
|
167
187
|
}
|
|
168
188
|
|
|
169
189
|
#editor {
|
|
@@ -250,7 +270,7 @@ div > .navigation_button_kurono {
|
|
|
250
270
|
/* Fuel gauge */
|
|
251
271
|
/**************/
|
|
252
272
|
|
|
253
|
-
#fuelGauge {
|
|
273
|
+
#fuelGauge, #electricFuelGauge {
|
|
254
274
|
position: fixed;
|
|
255
275
|
z-index: 7;
|
|
256
276
|
width: 100px;
|
|
@@ -304,21 +324,11 @@ div > .navigation_button_kurono {
|
|
|
304
324
|
cursor: col-resize;
|
|
305
325
|
}
|
|
306
326
|
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
#direct_drive {
|
|
312
|
-
width: 200px;
|
|
313
|
-
height: 95px;
|
|
314
|
-
position: absolute;
|
|
315
|
-
z-index: 7;
|
|
316
|
-
left: 50%;
|
|
317
|
-
bottom: 20px;
|
|
318
|
-
margin-left: 35px;
|
|
319
|
-
}
|
|
327
|
+
/**************/
|
|
328
|
+
/** Zoom pan **/
|
|
329
|
+
/**************/
|
|
320
330
|
|
|
321
|
-
.
|
|
331
|
+
.zoom_pan_button {
|
|
322
332
|
display: inline;
|
|
323
333
|
cursor: pointer;
|
|
324
334
|
background-repeat: no-repeat;
|
|
@@ -332,8 +342,8 @@ div > .navigation_button_kurono {
|
|
|
332
342
|
transition: background-size 0.3s;
|
|
333
343
|
}
|
|
334
344
|
|
|
335
|
-
.
|
|
336
|
-
.
|
|
345
|
+
.zoom_pan_button:hover,
|
|
346
|
+
.zoom_pan_button:focus
|
|
337
347
|
{
|
|
338
348
|
background-color: rgba(240,240,240,0.3);
|
|
339
349
|
background-size: 50px 50px;
|
|
@@ -341,30 +351,6 @@ div > .navigation_button_kurono {
|
|
|
341
351
|
outline: none;
|
|
342
352
|
}
|
|
343
353
|
|
|
344
|
-
#go {
|
|
345
|
-
left: 60px;
|
|
346
|
-
bottom: 0px;
|
|
347
|
-
background-image : url('/static/game/image/actions/go.svg');
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
#turnLeft {
|
|
351
|
-
left: 10px;
|
|
352
|
-
bottom: 0px;
|
|
353
|
-
background-image : url('/static/game/image/actions/left.svg');
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
#turnRight {
|
|
357
|
-
left: 110px;
|
|
358
|
-
bottom: 0px;
|
|
359
|
-
background-image : url('/static/game/image/actions/right.svg');
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
#moveForward {
|
|
363
|
-
left: 60px;
|
|
364
|
-
bottom: 50px;
|
|
365
|
-
background-image : url('/static/game/image/actions/forward.svg');
|
|
366
|
-
}
|
|
367
|
-
|
|
368
354
|
.blocklyWidgetDiv {
|
|
369
355
|
line-height: 1;
|
|
370
356
|
}
|
|
@@ -388,3 +374,11 @@ div > .navigation_button_kurono {
|
|
|
388
374
|
bottom: 0px;
|
|
389
375
|
background-image : url('/static/game/image/actions/btn_zoom_in.svg');
|
|
390
376
|
}
|
|
377
|
+
|
|
378
|
+
/**************/
|
|
379
|
+
/* Python den */
|
|
380
|
+
/**************/
|
|
381
|
+
|
|
382
|
+
.game-header {
|
|
383
|
+
width: 100%;
|
|
384
|
+
}
|
|
@@ -87,6 +87,15 @@
|
|
|
87
87
|
margin-right: 20px;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
video {
|
|
91
|
+
aspect-ratio: 16 / 9;
|
|
92
|
+
border: none;
|
|
93
|
+
height: 100%;
|
|
94
|
+
overflow: hidden;
|
|
95
|
+
position: relative;
|
|
96
|
+
width: 100%;
|
|
97
|
+
}
|
|
98
|
+
|
|
90
99
|
/************/
|
|
91
100
|
/** Tables **/
|
|
92
101
|
/************/
|
|
@@ -494,6 +503,13 @@ div.no-print div.tab label {
|
|
|
494
503
|
|
|
495
504
|
#tab_panes_wrapper .tab_pane {
|
|
496
505
|
padding: 20px 20px 0 30px;
|
|
506
|
+
overflow: scroll;
|
|
507
|
+
position: absolute;
|
|
508
|
+
width: 380px;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
#scenery_pane {
|
|
512
|
+
overflow: visible !important;
|
|
497
513
|
}
|
|
498
514
|
|
|
499
515
|
.tab_break {
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
margin-left: 15px;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
#episodes .panel-header
|
|
76
|
+
#episodes .panel-header .collapsed.episode_range_text::after {
|
|
77
77
|
content: "\e250";
|
|
78
78
|
font-family: "Glyphicons Halflings";
|
|
79
79
|
margin-left: 10px;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
#episodes .panel-header
|
|
82
|
+
#episodes .panel-header .episode_range_text::after {
|
|
83
83
|
content: "\e252";
|
|
84
84
|
font-family: "Glyphicons Halflings";
|
|
85
85
|
margin-left: 10px;
|
|
@@ -94,3 +94,18 @@
|
|
|
94
94
|
font-weight: 300;
|
|
95
95
|
text-decoration: none;
|
|
96
96
|
}
|
|
97
|
+
|
|
98
|
+
.button--level {
|
|
99
|
+
background-color: #f6be00;
|
|
100
|
+
padding: 5px 12px;
|
|
101
|
+
margin: -10px 0px 0px 0px;
|
|
102
|
+
font-size: 14px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.python-den-level {
|
|
106
|
+
padding: 1rem 0rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.text--warning {
|
|
110
|
+
color: #d60026;
|
|
111
|
+
}
|
|
Binary file
|