diff --git a/game/end_to_end_tests/test_cow_crashes.py b/game/end_to_end_tests/test_cow_crashes.py index 7fa723407..d89244a0c 100644 --- a/game/end_to_end_tests/test_cow_crashes.py +++ b/game/end_to_end_tests/test_cow_crashes.py @@ -52,7 +52,6 @@ def setUpClass(cls): cows='[{"minCows":"7","maxCows":"7","potentialCoordinates":[{"x":4,"y":4},{"x":2,"y":4},{"x":3,"y":7},{"x":4,"y":6},{"x":2,"y":6},{"x":3,"y":1},{"x":4,"y":2}],"type":"WHITE"}]', default=False, destinations="[[4,5]]", - direct_drive=True, fuel_gauge=False, max_fuel=50, model_solution="[1]", diff --git a/game/end_to_end_tests/test_python_levels.py b/game/end_to_end_tests/test_python_levels.py index 5fc75416c..a0d5b298f 100644 --- a/game/end_to_end_tests/test_python_levels.py +++ b/game/end_to_end_tests/test_python_levels.py @@ -50,7 +50,6 @@ def test_animal_sound_horn(self): cows='[{"minCows":1,"maxCows":1,"potentialCoordinates":[{"x":3,"y":4}],"type":"WHITE"}]', default=False, destinations="[[4,4]]", - direct_drive=False, fuel_gauge=False, max_fuel=50, model_solution="", diff --git a/game/messages.py b/game/messages.py index 2048e87df..074ce69bd 100644 --- a/game/messages.py +++ b/game/messages.py @@ -16,8 +16,8 @@ def youtube_link(url, border): def play_button_icon_url(): return ( - 'Play button' + 'Play icon' + 'Play' ) @@ -355,7 +355,7 @@ def description_level13(): f"Often there is more than one way to get to the house. The route that needs " f"the fewest directions is usually best.
Help the van find the " f"shortest route to the house.
You can press the {play_button_icon_url()} " - f"or Play buttons to start the van." + f"button to start the van." ) return build_description(title_level13(), message) diff --git a/game/migrations/0104_remove_level_direct_drive.py b/game/migrations/0104_remove_level_direct_drive.py new file mode 100644 index 000000000..18af92c63 --- /dev/null +++ b/game/migrations/0104_remove_level_direct_drive.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.25 on 2024-10-15 07:54 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('game', '0103_level_1015_solution'), + ] + + operations = [ + migrations.RemoveField( + model_name='level', + name='direct_drive', + ), + ] diff --git a/game/models.py b/game/models.py index 0e074badb..189a10cfc 100644 --- a/game/models.py +++ b/game/models.py @@ -160,7 +160,6 @@ class Level(models.Model): ) fuel_gauge = models.BooleanField(default=True) max_fuel = models.IntegerField(default=50) - direct_drive = models.BooleanField(default=False) next_level = models.ForeignKey( "self", null=True, diff --git a/game/static/game/css/game.css b/game/static/game/css/game.css index a3227ce17..78fa38c70 100644 --- a/game/static/game/css/game.css +++ b/game/static/game/css/game.css @@ -321,21 +321,11 @@ div > .navigation_button_kurono { cursor: col-resize; } -/******************/ -/** Direct drive **/ -/******************/ - -#direct_drive { - width: 200px; - height: 95px; - position: absolute; - z-index: 7; - left: 50%; - bottom: 20px; - margin-left: 35px; -} +/**************/ +/** Zoom pan **/ +/**************/ -.direct_drive_button { +.zoom_pan_button { display: inline; cursor: pointer; background-repeat: no-repeat; @@ -349,8 +339,8 @@ div > .navigation_button_kurono { transition: background-size 0.3s; } -.direct_drive_button:hover, -.direct_drive_button:focus +.zoom_pan_button:hover, +.zoom_pan_button:focus { background-color: rgba(240,240,240,0.3); background-size: 50px 50px; @@ -358,30 +348,6 @@ div > .navigation_button_kurono { outline: none; } -#go { - left: 60px; - bottom: 0px; - background-image : url('/static/game/image/actions/go.svg'); -} - -#turnLeft { - left: 10px; - bottom: 0px; - background-image : url('/static/game/image/actions/left.svg'); -} - -#turnRight { - left: 110px; - bottom: 0px; - background-image : url('/static/game/image/actions/right.svg'); -} - -#moveForward { - left: 60px; - bottom: 50px; - background-image : url('/static/game/image/actions/forward.svg'); -} - .blocklyWidgetDiv { line-height: 1; } diff --git a/game/static/game/image/actions/go.svg b/game/static/game/image/actions/go.svg deleted file mode 100644 index 39359cc29..000000000 --- a/game/static/game/image/actions/go.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/game/static/game/js/game.js b/game/static/game/js/game.js index beecd2a9a..aff0caacd 100644 --- a/game/static/game/js/game.js +++ b/game/static/game/js/game.js @@ -73,7 +73,6 @@ ocargo.Game.prototype.setup = function () { this._setupConsoleSliderListeners() this._setupPythonViewSliderListeners() this._setupConsoleLogViewSliderListeners() - this._setupDirectDriveListeners() this._setupFuelGauge(ocargo.model.map.nodes, BLOCKS) this._setupTabs() @@ -330,44 +329,6 @@ ocargo.Game.prototype._setupFuelGauge = function (nodes, blocks) { } } -ocargo.Game.prototype._setupDirectDriveListeners = function () { - var manoeuvreCallback = function () { - this.drawing.scrollToShowCharacter() - this.onStopControls() - }.bind(this) - - $('#moveForward').click( - function () { - if (ocargo.model.reasonForTermination != 'CRASH') { - this.onPlayControls() - ocargo.blocklyControl.addBlockToEndOfProgram('move_forwards') - this.drawing.moveForward(manoeuvreCallback) - } - }.bind(this) - ) - $('#turnLeft').click( - function () { - if (ocargo.model.reasonForTermination != 'CRASH') { - this.onPlayControls() - ocargo.blocklyControl.addBlockToEndOfProgram('turn_left') - this.drawing.turnLeft(manoeuvreCallback) - } - }.bind(this) - ) - $('#turnRight').click( - function () { - if (ocargo.model.reasonForTermination != 'CRASH') { - this.onPlayControls() - ocargo.blocklyControl.addBlockToEndOfProgram('turn_right') - this.drawing.turnRight(manoeuvreCallback) - } - }.bind(this) - ) - $('#go').click(function () { - $('#play_radio').trigger('click') - }) -} - ocargo.Game.prototype._setupConsoleSliderListeners = function () { let tabsWidth = $('#tabs').width() @@ -414,7 +375,6 @@ ocargo.Game.prototype._setupConsoleSliderListeners = function () { $('#consoleSlider').css('left', consoleSliderPosition + '%') $('#paper').css('width', 100 - consoleSliderPosition + '%') $('#tab_panes').css('width', consoleSliderPosition + '%') - $('#direct_drive').css('left', consoleSliderPosition + '%') ocargo.blocklyControl.redrawBlockly() } @@ -569,8 +529,6 @@ const buttonTransit = (buttonElementId, state) => { ocargo.Game.prototype.onPlayControls = function () { this.disallowCodeChanges() - document.getElementById('direct_drive').style.visibility = 'hidden' - this.tabs.play.transitTo('running') buttonTransit("run-code-button", "running") this.tabs.step.disable() @@ -585,8 +543,6 @@ ocargo.Game.prototype.onPlayControls = function () { ocargo.Game.prototype.onStepControls = function () { this.disallowCodeChanges() - document.getElementById('direct_drive').style.visibility = 'hidden' - this.tabs.play.transitTo('paused') buttonTransit("run-code-button", "paused") this.tabs.step.disable() @@ -600,8 +556,6 @@ ocargo.Game.prototype.onStepControls = function () { ocargo.Game.prototype.onFastControls = function () { this.disallowCodeChanges() - document.getElementById('direct_drive').style.visibility = 'hidden' - this.tabs.play.transitTo('running') buttonTransit("run-code-button", "running") this.tabs.fast.transitTo('fast') @@ -616,8 +570,6 @@ ocargo.Game.prototype.onFastControls = function () { ocargo.Game.prototype.onSlowControls = function () { this.disallowCodeChanges() - document.getElementById('direct_drive').style.visibility = 'hidden' - this.tabs.play.transitTo('running') buttonTransit("run-code-button", "running") this.tabs.fast.transitTo('slow') @@ -804,9 +756,6 @@ ocargo.Game.prototype.onPauseControls = function () { ocargo.Game.prototype.onStopControls = function () { this.allowCodeChanges() - // TODO make this hidden unless blocks are clear or something... - document.getElementById('direct_drive').style.visibility = 'visible' - this.tabs.play.transitTo('readyToPlay') buttonTransit("run-code-button", "readyToPlay") this.tabs.fast.transitTo('slow') diff --git a/game/static/game/js/level_editor.js b/game/static/game/js/level_editor.js index 2a79a6c77..65a8bd64a 100644 --- a/game/static/game/js/level_editor.js +++ b/game/static/game/js/level_editor.js @@ -2869,7 +2869,7 @@ ocargo.LevelEditor = function(levelId) { // you can copy and paste into a Django migration file var state = extractState(); - var boolFields = ["pythonEnabled", "blocklyEnabled", 'fuel_gauge', 'direct_drive']; + var boolFields = ["pythonEnabled", "blocklyEnabled", 'fuel_gauge']; var stringFields = ['path', 'traffic_lights', 'cows', 'origin', 'destinations']; var otherFields = ['max_fuel']; diff --git a/game/templates/game/game.html b/game/templates/game/game.html index 5255b0c06..300517f7e 100644 --- a/game/templates/game/game.html +++ b/game/templates/game/game.html @@ -71,7 +71,6 @@ BLOCKLY_XML += '' var MAX_FUEL = {{level.max_fuel}} - var DIRECT_DRIVE = {{level.direct_drive|booltojs}} var NEXT_EPISODE = {% if level.episode.next_episode == None %}null{% else %}"{{level.episode.next_episode.id}}"{% endif %} var WORKSPACE = {% if workspace == None %}null{% else %}"{{workspace}}"{% endif %} var BLOCKLY_ENABLED = {{level.blocklyEnabled|booltojs}} @@ -483,16 +482,9 @@

-
- - - - -
-
- - + +