From 5c7029b965a124faa7d593d0f9997729de98b192 Mon Sep 17 00:00:00 2001 From: evemartin Date: Wed, 4 Sep 2024 11:28:59 +0100 Subject: [PATCH] feat: add pigeon (#1712) * add pigeon sounds * add pigeon sound and image * switch between animals on theme switch, rotate pigeon * update pigeon sound and cow group type * write pigeon test, address pigeon edge case * change descriptions to be more general * modify test slightly * add line to test that I forgot * add line to test to wait for element * use xpath instead of css_selector * get rid of unnecessary check * fix typo * test out adding delay to test * check that cow is there * fix typo * test the test * test if xpath works at all in this case * switch back to using css_selector * test out a small change to the test * undo small change, run black * Install latest portal * address PR comments - dynamically change cows block * continue work on dynamic pigeon block * make pigeon block dynamic * tidy up, add pigeon translations --------- Co-authored-by: Florian Aucomte --- game/end_to_end_tests/test_level_editor.py | 27 + game/static/game/image/pigeon.svg | 684 +++++++++++++++++++ game/static/game/js/blockly/msg/js/ca.js | 1 + game/static/game/js/blockly/msg/js/en-gb.js | 1 + game/static/game/js/blockly/msg/js/en.js | 1 + game/static/game/js/blockly/msg/js/es.js | 1 + game/static/game/js/blockly/msg/js/fr.js | 1 + game/static/game/js/blockly/msg/js/hi.js | 1 + game/static/game/js/blocklyCustomBlocks.js | 17 +- game/static/game/js/cow.js | 7 +- game/static/game/js/drawing.js | 6 + game/static/game/js/level_editor.js | 120 +++- game/static/game/js/sound.js | 8 + game/static/game/raphael_image/pigeon.svg | 685 ++++++++++++++++++++ game/static/game/sound/pigeon.mp3 | Bin 0 -> 33165 bytes game/static/game/sound/pigeon.ogg | Bin 0 -> 14768 bytes game/templates/game/level_editor.html | 2 +- 17 files changed, 1525 insertions(+), 37 deletions(-) create mode 100644 game/static/game/image/pigeon.svg create mode 100644 game/static/game/raphael_image/pigeon.svg create mode 100644 game/static/game/sound/pigeon.mp3 create mode 100644 game/static/game/sound/pigeon.ogg diff --git a/game/end_to_end_tests/test_level_editor.py b/game/end_to_end_tests/test_level_editor.py index c7da90a7f..fda0bb0c4 100644 --- a/game/end_to_end_tests/test_level_editor.py +++ b/game/end_to_end_tests/test_level_editor.py @@ -289,3 +289,30 @@ def test_electric_fuel_gauge(self): ) electric_fuel_gauge = self.selenium.find_element(By.ID, "electricFuelGauge") assert "visibility: visible" in electric_fuel_gauge.get_attribute("style") + + def test_pigeon(self): + """Test that cows on the map automatically become pigeons when the theme is changed to "city" """ + page = self.go_to_level_editor() + page.go_to_scenery_tab() + + source_cow = self.selenium.find_element(By.ID, "cow") + end_space = self.selenium.find_element( + By.CSS_SELECTOR, "rect[x='130'][y='530']" + ) + ActionChains(self.selenium).drag_and_drop(source_cow, end_space).perform() + + scenery_cow = self.selenium.find_elements( + By.CSS_SELECTOR, "image[x='0'][y='0']" + ) + cow_link = scenery_cow[0].get_attribute("href") + assert cow_link == "/static/game/raphael_image/Clarice.svg" + + Select(self.selenium.find_element(By.ID, "theme_select")).select_by_value( + "city" + ) + + scenery_pigeon = self.selenium.find_elements( + By.CSS_SELECTOR, "image[x='0'][y='0']" + ) + pigeon_link = scenery_pigeon[0].get_attribute("href") + assert pigeon_link == "/static/game/raphael_image/pigeon.svg" diff --git a/game/static/game/image/pigeon.svg b/game/static/game/image/pigeon.svg new file mode 100644 index 000000000..9afd7eb16 --- /dev/null +++ b/game/static/game/image/pigeon.svg @@ -0,0 +1,684 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game/static/game/js/blockly/msg/js/ca.js b/game/static/game/js/blockly/msg/js/ca.js index 8c21ea6b6..26f030b54 100755 --- a/game/static/game/js/blockly/msg/js/ca.js +++ b/game/static/game/js/blockly/msg/js/ca.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semàfor verd"; Blockly.Msg["DEAD_END_TITLE"] = "és carrer sense sortida"; Blockly.Msg["AT_DESTINATION_TITLE"] = "a destí"; Blockly.Msg["COW_CROSSING_TITLE"] = "vaques"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "coloms"; Blockly.Msg["CALL_PROC_TITLE"] = "Crida"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "Crida un procediment"; diff --git a/game/static/game/js/blockly/msg/js/en-gb.js b/game/static/game/js/blockly/msg/js/en-gb.js index fb9e42f7f..86fa64048 100755 --- a/game/static/game/js/blockly/msg/js/en-gb.js +++ b/game/static/game/js/blockly/msg/js/en-gb.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green"; Blockly.Msg["DEAD_END_TITLE"] = "is dead end"; Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination"; Blockly.Msg["COW_CROSSING_TITLE"] = "cows"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons"; Blockly.Msg["CALL_PROC_TITLE"] = "Call"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure"; diff --git a/game/static/game/js/blockly/msg/js/en.js b/game/static/game/js/blockly/msg/js/en.js index 584b42dd6..108f16c82 100755 --- a/game/static/game/js/blockly/msg/js/en.js +++ b/game/static/game/js/blockly/msg/js/en.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green"; Blockly.Msg["DEAD_END_TITLE"] = "is dead end"; Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination"; Blockly.Msg["COW_CROSSING_TITLE"] = "cows"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons"; Blockly.Msg["CALL_PROC_TITLE"] = "Call"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure"; diff --git a/game/static/game/js/blockly/msg/js/es.js b/game/static/game/js/blockly/msg/js/es.js index 08bf8fc25..a40936c00 100755 --- a/game/static/game/js/blockly/msg/js/es.js +++ b/game/static/game/js/blockly/msg/js/es.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semáforo en verde"; Blockly.Msg["DEAD_END_TITLE"] = "es un callejón sin salida"; Blockly.Msg["AT_DESTINATION_TITLE"] = "en destino"; Blockly.Msg["COW_CROSSING_TITLE"] = "vacas"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "palomas"; Blockly.Msg["CALL_PROC_TITLE"] = "Llamar"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "Llamar a una función"; diff --git a/game/static/game/js/blockly/msg/js/fr.js b/game/static/game/js/blockly/msg/js/fr.js index decee21fb..e8991aa0f 100755 --- a/game/static/game/js/blockly/msg/js/fr.js +++ b/game/static/game/js/blockly/msg/js/fr.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "feu vert"; Blockly.Msg["DEAD_END_TITLE"] = "cul-de-sac"; Blockly.Msg["AT_DESTINATION_TITLE"] = "arrivé à destination"; Blockly.Msg["COW_CROSSING_TITLE"] = "vaches"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons"; Blockly.Msg["CALL_PROC_TITLE"] = "Appeler"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "Appeler une fonction"; diff --git a/game/static/game/js/blockly/msg/js/hi.js b/game/static/game/js/blockly/msg/js/hi.js index 5555386a3..9d998dc39 100755 --- a/game/static/game/js/blockly/msg/js/hi.js +++ b/game/static/game/js/blockly/msg/js/hi.js @@ -461,6 +461,7 @@ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "ट्रैफिक लाइट Blockly.Msg["DEAD_END_TITLE"] = "आगे का रास्ता बंद है"; Blockly.Msg["AT_DESTINATION_TITLE"] = "मंजिल /गंतव्य पर"; Blockly.Msg["COW_CROSSING_TITLE"] = "गायों"; +Blockly.Msg["PIGEON_CROSSING_TITLE"] = "कबूतरों"; Blockly.Msg["CALL_PROC_TITLE"] = "पुकारना"; Blockly.Msg["CALL_PROC_TOOLTIP"] = "एक प्रक्रिया बुलाना"; diff --git a/game/static/game/js/blocklyCustomBlocks.js b/game/static/game/js/blocklyCustomBlocks.js index 12ffec32a..2ca5c950f 100644 --- a/game/static/game/js/blocklyCustomBlocks.js +++ b/game/static/game/js/blocklyCustomBlocks.js @@ -281,13 +281,26 @@ function initCustomBlocksDescription() { init: function() { this.setColour(210); this.setOutput(true, 'Boolean'); + let imageUrl = ocargo.Drawing.animalType == ocargo.Cow.PIGEON ? ocargo.Drawing.pigeonUrl : ocargo.Drawing.whiteCowUrl this.appendDummyInput() - .appendField(Blockly.Msg.COW_CROSSING_TITLE) - .appendField(new Blockly.FieldImage(ocargo.Drawing.imageDir + ocargo.Drawing.whiteCowUrl, + .appendField(ocargo.Drawing.animalType == ocargo.Cow.PIGEON ? Blockly.Msg.PIGEON_CROSSING_TITLE: Blockly.Msg.COW_CROSSING_TITLE) + .appendField(new Blockly.FieldImage(ocargo.Drawing.imageDir + imageUrl, ocargo.BlocklyControl.COW_WIDTH, ocargo.BlocklyControl.BLOCK_HEIGHT), 'IMAGE'); } }; + + Blockly.Blocks['pigeon_crossing_IMAGE_ONLY'] = { + init: function() { + this.setColour(210); + this.setOutput(true, 'Boolean'); + this.appendDummyInput() + .appendField("pigeons") + .appendField(new Blockly.FieldImage(ocargo.Drawing.imageDir + ocargo.Drawing.pigeonUrl, + ocargo.BlocklyControl.COW_WIDTH, + ocargo.BlocklyControl.BLOCK_HEIGHT), 'IMAGE'); + } + } /****************/ /* Procedures */ /****************/ diff --git a/game/static/game/js/cow.js b/game/static/game/js/cow.js index 1f0b1e2f0..03eedb410 100644 --- a/game/static/game/js/cow.js +++ b/game/static/game/js/cow.js @@ -26,14 +26,14 @@ ocargo.Cow.prototype.reset = function() { ocargo.Cow.prototype.queueLeaveAnimation = function(model, node) { ocargo.animation.appendAnimation({ type: 'callable', - functionCall: ocargo.sound.cow, - description: 'cow sound' + functionCall: this.type == ocargo.Cow.PIGEON ? ocargo.sound.pigeon : ocargo.sound.cow, + description: 'animal sound' }); ocargo.animation.appendAnimation({ type: 'cow_leave', id: this.id, coordinate: node.coordinate, - description: 'Cow leaving' + description: 'animal leaving' }); }; @@ -49,3 +49,4 @@ ocargo.Cow.ACTIVE = 'ACTIVE'; ocargo.Cow.INACTIVE = 'INACTIVE'; ocargo.Cow.WHITE = 'WHITE'; ocargo.Cow.BROWN = 'BROWN'; +ocargo.Cow.PIGEON = 'PIGEON'; diff --git a/game/static/game/js/drawing.js b/game/static/game/js/drawing.js index ecd965d2c..c7b4ddcd6 100644 --- a/game/static/game/js/drawing.js +++ b/game/static/game/js/drawing.js @@ -1236,11 +1236,14 @@ ocargo.Drawing.renderCoins = function (coins) { } ocargo.Drawing.cowUrl = function (type) { + ocargo.Drawing.animalType = type; switch (type) { case ocargo.Cow.WHITE: return ocargo.Drawing.whiteCowUrl case ocargo.Cow.BROWN: return ocargo.Drawing.brownCowUrl + case ocargo.Cow.PIGEON: + return ocargo.Drawing.pigeonUrl default: return ocargo.Drawing.whiteCowUrl } @@ -1284,6 +1287,9 @@ ocargo.Drawing.TOP_VIEW = 'top_view' ocargo.Drawing.whiteCowUrl = 'Clarice.svg' ocargo.Drawing.brownCowUrl = 'Clarice_Jersey.svg' +ocargo.Drawing.pigeonUrl = 'pigeon.svg' ocargo.Drawing.imageDir = '/static/game/image/' ocargo.Drawing.raphaelImageDir = '/static/game/raphael_image/' + +ocargo.Drawing.animalType = 'WHITE' \ No newline at end of file diff --git a/game/static/game/js/level_editor.js b/game/static/game/js/level_editor.js index 83e7d9327..05f022af6 100644 --- a/game/static/game/js/level_editor.js +++ b/game/static/game/js/level_editor.js @@ -415,7 +415,8 @@ ocargo.LevelEditor = function(levelId) { for (var i = 0; i < BLOCKS.length; i++) { var type = BLOCKS[i]; - var block = Blockly.mainWorkspace.newBlock(type); + let usePigeons = type === "cow_crossing" && currentTheme == THEMES.city + var block = usePigeons ? Blockly.mainWorkspace.newBlock("pigeon_crossing_IMAGE_ONLY") : Blockly.mainWorkspace.newBlock(type); block.initSvg(); block.render(); @@ -909,7 +910,7 @@ ocargo.LevelEditor = function(levelId) { var color = COW_GROUP_COLOR_PALETTE[(currentCowGroupId - 1) % COW_GROUP_COLOR_PALETTE.length]; var style = 'background-color: ' + color; var value = 'group' + currentCowGroupId++; - var type = ocargo.Cow.WHITE; + var type = currentTheme == THEMES.city ? ocargo.Cow.PIGEON : ocargo.Cow.WHITE; cowGroups[value] = { id: value, @@ -2374,6 +2375,7 @@ ocargo.LevelEditor = function(levelId) { function setTheme(theme) { currentTheme = theme; + let newType = currentTheme == THEMES.city ? ocargo.Cow.PIGEON : ocargo.Cow.WHITE; for (var x = 0; x < GRID_WIDTH; x++) { for (var y = 0; y < GRID_HEIGHT; y++) { @@ -2397,6 +2399,36 @@ ocargo.LevelEditor = function(levelId) { }); $('#paper').css({'background-color': theme.background}); + + const animalSource = theme == THEMES.city ? "/static/game/image/pigeon.svg" : "/static/game/image/Clarice.svg"; + + $('#cow').each(function(index, element) { + element.src = animalSource; + }) + + $('#animals_label').each(function(index, element) { + element.innerHTML = theme == THEMES.city ? "Pigeons" : "Cows"; + }) + + for (let [key, value] of Object.entries(cowGroups)) { + value["type"] = theme == THEMES.city ? ocargo.Cow.PIGEON : ocargo.Cow.WHITE; + } + + for (let i = 0; i < cows.length; i++) { + cows[i].updateTheme(); + } + + const pigeonHTML = `pigeons`; + + const cowHTML = `cows`; + + $("#cow_crossing_image").html(newType == ocargo.Cow.PIGEON ? pigeonHTML : cowHTML); } function sortNodes(nodes) { @@ -2554,35 +2586,6 @@ ocargo.LevelEditor = function(levelId) { new InternalTrafficLight(trafficLightData[i]); } - if(COW_LEVELS_ENABLED) { - var cowGroupData = JSON.parse(state.cows); - for (var i = 0; i < cowGroupData.length; i++) { - // Add new group to group select element - if (i >= Object.keys(cowGroups).length) { - addCowGroup(); - } - var cowGroupId = Object.keys(cowGroups)[i]; - cowGroups[cowGroupId].minCows = cowGroupData[i].minCows; - cowGroups[cowGroupId].maxCows = cowGroupData[i].maxCows; - cowGroups[cowGroupId].type = cowGroupData[i].type; - - if (cowGroupData[i].potentialCoordinates != null) { - for (var j = 0; j < cowGroupData[i].potentialCoordinates.length; j++) { - var cowData = { - coordinates: [cowGroupData[i].potentialCoordinates[j]], - group: cowGroups[cowGroupId] - }; - new InternalCow(cowData); - } - } - } - - // Trigger change listener on cow group select box to set initial min/max values - $('#cow_group_select').change(); - - markCowNodes(); - } - // Load in destination and origin nodes if (state.destinations) { var houses = JSON.parse(state.destinations); @@ -2630,6 +2633,36 @@ ocargo.LevelEditor = function(levelId) { PAPER_HEIGHT - currentTheme.decor[decor[i].decorName].height - decor[i].y + PAPER_PADDING); } + //Load in cow data + if(COW_LEVELS_ENABLED) { + var cowGroupData = JSON.parse(state.cows); + for (var i = 0; i < cowGroupData.length; i++) { + // Add new group to group select element + if (i >= Object.keys(cowGroups).length) { + addCowGroup(); + } + var cowGroupId = Object.keys(cowGroups)[i]; + cowGroups[cowGroupId].minCows = cowGroupData[i].minCows; + cowGroups[cowGroupId].maxCows = cowGroupData[i].maxCows; + cowGroups[cowGroupId].type = cowGroupData[i].type; + + if (cowGroupData[i].potentialCoordinates != null) { + for (var j = 0; j < cowGroupData[i].potentialCoordinates.length; j++) { + var cowData = { + coordinates: [cowGroupData[i].potentialCoordinates[j]], + group: cowGroups[cowGroupId] + }; + new InternalCow(cowData); + } + } + } + + // Trigger change listener on cow group select box to set initial min/max values + $('#cow_group_select').change(); + + markCowNodes(); + } + // Load in block data if(state.blocks) { for(var i = 0; i < BLOCKS.length; i++) { @@ -2918,6 +2951,31 @@ ocargo.LevelEditor = function(levelId) { }; + this.updateTheme = function() { + let newType = currentTheme == THEMES.city ? ocargo.Cow.PIGEON : ocargo.Cow.WHITE; + let transformDimensions = this["image"]["_"]["transform"][0] + let rotateDimensions = this["image"]["_"]["transform"][1] + let x = transformDimensions[1] + let y = transformDimensions[2] + let r = 0; + if (rotateDimensions) { + r = rotateDimensions[1]; + } + + this.image.remove(); + + this.image = drawing.createCowImage(newType); + if (this.controlledNode !== null) { + let controlledNode = this.controlledNode; + let coordinates = controlledNode.coordinate; + drawing.setCowImagePosition(coordinates, this.image, controlledNode); + } else { + this.image.transform("t" + x + "," + y + " r" + r); + } + + setupCowListeners(this); + } + this.image = drawing.createCowImage(data.group.type); this.valid = false; diff --git a/game/static/game/js/sound.js b/game/static/game/js/sound.js index e9f57fe18..afad8fb40 100644 --- a/game/static/game/js/sound.js +++ b/game/static/game/js/sound.js @@ -43,6 +43,10 @@ ocargo.sound.cowSound = new Howl({ urls: ['/static/game/sound/cow.mp3', '/static/game/sound/cow.ogg'] }); +ocargo.sound.pigeonSound = new Howl({ + urls: ['/static/game/sound/pigeon.mp3', '/static/game/sound/pigeon.ogg'] +}); + function safePlay(sound) { try { sound.play(); @@ -96,6 +100,10 @@ ocargo.sound.cow = function() { safePlay(ocargo.sound.cowSound); }; +ocargo.sound.pigeon = function() { + safePlay(ocargo.sound.pigeonSound); +} + ocargo.sound.sound_horn = function() { safePlay(ocargo.sound.hornSound); }; diff --git a/game/static/game/raphael_image/pigeon.svg b/game/static/game/raphael_image/pigeon.svg new file mode 100644 index 000000000..9988526b6 --- /dev/null +++ b/game/static/game/raphael_image/pigeon.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game/static/game/sound/pigeon.mp3 b/game/static/game/sound/pigeon.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b968e4475da2aeda0035c806a89206976d40abe9 GIT binary patch literal 33165 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