From aa4a699a55ccde3bc3f5a2dfce440b0cf777027b Mon Sep 17 00:00:00 2001 From: ReverM Date: Wed, 6 Aug 2025 14:21:32 -0400 Subject: [PATCH 01/11] Added city space --- src-ui/list.html | 1 + src/pzpr/variety.js | 1 + src/res/failcode.en.json | 2 ++ src/variety/kurodoko.js | 60 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src-ui/list.html b/src-ui/list.html index 1ca665008..030da8f71 100644 --- a/src-ui/list.html +++ b/src-ui/list.html @@ -67,6 +67,7 @@

パズルの種類のリスト
  • +
  • diff --git a/src/pzpr/variety.js b/src/pzpr/variety.js index 811efe272..b7120f392 100755 --- a/src/pzpr/variety.js +++ b/src/pzpr/variety.js @@ -130,6 +130,7 @@ cbblock: [0, 0, "コンビブロック", "Combi Block"], chainedb: [0, 0, "チェンブロ", "Chained Block"], chocona: [0, 0, "チョコナ", "Chocona", "shimaguni"], + cityspace: [1, 0, "City Space", "City Space", "kurodoko"], cocktail: [0, 0, "カクテルランプ", "Cocktail Lamp", "shimaguni"], coffeemilk: [0, 0, "コーヒー牛乳", "Coffee Milk", "wblink"], cojun: [0, 0, "コージュン", "Cojun", "ripple"], diff --git a/src/res/failcode.en.json b/src/res/failcode.en.json index 893f89a57..89f895c51 100644 --- a/src/res/failcode.en.json +++ b/src/res/failcode.en.json @@ -415,6 +415,7 @@ "crNoSegment.tajmahal": "A clue is not inside a square.", "crShadeGt.creek": "The number of shaded cells overlapping a number is too high.", "crShadeLt.creek": "The number of shaded cells overlapping a number is too low.", + "cs1x1.cityspace": "A rectangle doesn't have area at least 2.", "cs2x2.bosnianroad": "The loop goes back on itself.", "cs2x2.snake": "The snake loops back on itself.", "cs2x2": "There is a 2x2 block of shaded cells.", @@ -463,6 +464,7 @@ "csSameJunction": "A shaded cell touches multiple T-junctions with the same orientation.", "csUpper.stostone": "Shaded cells remain in the upper half of the board after the blocks have fallen.", "csWidthGt1.nuribou": "There is a mass of shaded cells whose width is more than one.", + "csWidthGt1.cityspace": "There is a mass of shaded cells that is not a 1xN rectangle.", "cu2x2": "There is a 2x2 block of unshaded cells.", "cu3.aqre": "There are 4 or more unshaded cells in a row.", "cuConnOut": "Some unshaded cells are not connected to the outside.", diff --git a/src/variety/kurodoko.js b/src/variety/kurodoko.js index 7731b39a0..251b81f8f 100644 --- a/src/variety/kurodoko.js +++ b/src/variety/kurodoko.js @@ -7,7 +7,7 @@ } else { pzpr.classmgr.makeCustom(pidlist, classbase); } -})(["kurodoko", "nurimisaki", "cave", "teri"], { +})(["kurodoko", "nurimisaki", "cave", "teri", "cityspace"], { //--------------------------------------------------------- // マウス入力系 MouseEvent: { @@ -66,6 +66,12 @@ play: ["shade", "unshade", "peke", "info-ublk"] } }, + "MouseEvent@cityspace": { + inputModes: { + edit: ["number", "clear", "info-ublk"], + play: ["shade", "unshade", "peke", "info-ublk"] + } + }, //--------------------------------------------------------- // キーボード入力系 @@ -225,6 +231,10 @@ "AreaShadeGraph@cave": { enabled: true }, + + "AreaShadeGraph@cityspace": { + enabled: true + }, //--------------------------------------------------------- // 画像表示系 @@ -266,7 +276,7 @@ } }, - "Graphic@cave": { + "Graphic@cave,cityspace": { hideHatena: false, gridcolor_type: "DLIGHT", @@ -313,6 +323,8 @@ } }, + + //--------------------------------------------------------- // URLエンコード/デコード処理 Encode: { @@ -396,11 +408,14 @@ "check2x2ShadeCell@nurimisaki", "checkAdjacentShadeCell@kurodoko,teri", "checkConnectUnshadeRB@kurodoko,teri", - "checkConnectUnshade@nurimisaki,cave", + "checkConnectUnshade@nurimisaki,cave,cityspace", "checkConnectShadeOutside@cave", "checkViewOfNumber", "check2x2UnshadeCell@nurimisaki", "checkCirclePromontory@nurimisaki", + "checkUnshadeLoop@cityspace", + "checkShadeRect@cityspace", + "check1x1ShadeCell@cityspace", "checkNonCircleNotPromontory@nurimisaki", "doneShadingDecided" ], @@ -428,6 +443,45 @@ } }, + "AnsCheck@cityspace": { + checkUnshadeLoop: function() { + var bd = this.board, + ublks = bd.ublkmgr.components; + for (var r = 0; r < ublks.length; r++) { + if (ublks[r].circuits === 0) { + continue; + } + + this.failcode.add("cuLoop"); + if (this.checkOnly) { + return; + } + this.searchloop(ublks[r], bd.ublkmgr).seterr(1); + } + }, + + checkShadeRect: function() { + this.checkAllArea( + this.board.sblkmgr, + function(w, h, a, n) { + return w === 1 || h === 1; + }, + "csWidthGt1" + ); + }, + + check1x1ShadeCell: function() { + this.checkAllArea( + this.board.sblkmgr, + function(w, h, a, n) { + return a >= 2; + }, + "cs1x1" + ); + } + + }, + "AnsCheck@nurimisaki": { check2x2UnshadeCell: function() { this.check2x2Block(function(cell) { From 79de6762bb7815a589c0f8da734b0d370577c344 Mon Sep 17 00:00:00 2001 From: ReverM Date: Wed, 6 Aug 2025 15:29:18 -0400 Subject: [PATCH 02/11] Added tests --- src-ui/res/rules.en.yaml | 1 + test/script/cityspace.js | 94 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 test/script/cityspace.js diff --git a/src-ui/res/rules.en.yaml b/src-ui/res/rules.en.yaml index 838c0cb94..99d9d5a00 100644 --- a/src-ui/res/rules.en.yaml +++ b/src-ui/res/rules.en.yaml @@ -122,6 +122,7 @@ skyscrapers: "Place a number in each cell.\n1. Numbers must be between 1 and N, castle: "Draw lines through orthogonally adjacent cells to form a loop.\n1. Lines cannot go through bold borders.\n2. White cells must be inside the loop, and black cells must be outside the loop.\n3. A number with an arrow indicates the number of line segments in that direction. Vertical arrows only count vertical lines, and horizontal arrows count horizontal lines." cbblock: "Draw lines over the dotted lines to divide the board into blocks.\n1. Each block must contain exactly two outlined regions.\n2. Two adjacent blocks cannot have the same shape, counting rotations and reflections as the same.\n3. Blocks cannot be rectangle- or square-shaped." chocona: "Shade some cells on the board.\n1. A group of orthogonally connected shaded cells is called a block. Each block must be a filled rectangle or square.\n2. Numbered regions must contain the indicated amount of shaded cells." +cityspace: "Shade some cells on the board.\n1. Groups of orthogonally connected shaded cells must be 1xN rectangles, where N is at least 2. \n 2. The unshaded cells must form one orthogonally connected region that doesn't contain any loop, including 2x2 loops. \n 3. Clues represent the total number of unshaded cells that can be seen in a straight line vertically or horizontally, including itself." cojun: "Place a number in each cell. Some numbers are given.\n1. Numbers must be between 1 and N, where N is the size of the region.\n2. Each region contains exactly one of each number.\n3. Two equal numbers cannot be orthogonally adjacent.\n4. Where two numbers within a region are stacked vertically, the number on top must always be larger." compass: "Draw lines over the dotted lines to divide the board into several blocks.\n 1. Each block contains exactly one cell with a compass.\n2. A number in a compass indicates how many cells belong to its region that are further in the indicated direction than the compass itself." country: "Draw lines through orthogonally adjacent cells to form a loop.\n1. The loop cannot branch off or cross itself.\n2. Every country must be visited exactly once.\n3. A number indicates how many cells inside the country are visited by the loop.\n4. Two adjacent cells separated by a border cannot both be unused by the loop." diff --git a/test/script/cityspace.js b/test/script/cityspace.js new file mode 100644 index 000000000..e138b4678 --- /dev/null +++ b/test/script/cityspace.js @@ -0,0 +1,94 @@ +/* cityspace.js */ + +ui.debug.addDebugData("cityspace", { + url: "6/6/8i3t2i3r", + failcheck: [ + [ + "cuDivide", + "pzprv3 / cityspace / 6 / 6 / 8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . / + + + # + # / + # + # + # / + # + + + # / + + # # # + /+ # + + + + / + # + # # + /" + ], + [ + "cuLoop", + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + # # # /" + ], + // 2x2 unshaded being loop + [ + "cuLoop", + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + + # # /" + ], + [ + "csWidthGt1", + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # # + + + /+ + + # # # /" + ], + [ + "cs1x1", + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ + # # # # /" + ], + [ + "nmSumViewNe", + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /# # + + + + /+ + + # # # /" + ], + + [ + null, + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + # # # /" ] + ], + inputs: [ + /* 回答入力はslitherと同じなので省略 */ + { input: ["newboard,5,1", "editmode"] }, + { + input: [ + "cursor,1,1", + "key,-", + "key,right", + "key,0", + "key,right", + "key,1", + "key,right", + "key,2", + "key,right", + "key,1,0" + ], + result: "pzprv3/cityspace/1/5/- . 1 2 1 /. . . . . /" + }, + { + input: [ + "cursor,1,1", + "key,-", + "key,right", + "key,-", + "key,right", + "key,-", + "key,-" + ], + result: "pzprv3/cityspace/1/5/. - . 2 1 /. . . . . /" + }, + { input: ["newboard,5,2", "editmode"] }, + { + input: [ + "cursor,0,0", + "mouse,leftx2, 1,1", + "mouse,leftx3, 3,1", + "mouse,leftx4, 5,1", + "mouse,leftx5, 7,1", + "mouse,leftx6, 9,1", + "mouse,leftx7, 1,3", + "mouse,leftx8, 3,3", + "mouse,rightx2, 5,3", + "mouse,rightx3, 7,3", + "mouse,rightx4, 9,3" + ], + result: "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /. . . . . /. . . . . /" + }, + { + input: [ + "playmode", + "mouse,left,3,3,3,5", + "mouse,right,1,1,1,3", + "mouse,alt+left,8,1,7,2,8,3" + ], + result: + "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /+ . . . . /+ # . . . /0 0 0 -1 /0 0 0 -1 /0 0 0 -1 0 /" + } + ] +}); From ec7271d6d948cc4603722b2fdba13dfb81ed1061 Mon Sep 17 00:00:00 2001 From: ReverM Date: Wed, 6 Aug 2025 16:12:58 -0400 Subject: [PATCH 03/11] Fixed test --- test/script/cityspace.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/test/script/cityspace.js b/test/script/cityspace.js index e138b4678..27302cb13 100644 --- a/test/script/cityspace.js +++ b/test/script/cityspace.js @@ -5,11 +5,11 @@ ui.debug.addDebugData("cityspace", { failcheck: [ [ "cuDivide", - "pzprv3 / cityspace / 6 / 6 / 8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . / + + + # + # / + # + # + # / + # + + + # / + + # # # + /+ # + + + + / + # + # # + /" + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + # /+ + # # # + /+ # + + + + /+ # + # # + /" ], [ "cuLoop", - "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + # # # /" + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ + + # # # /" ], // 2x2 unshaded being loop [ @@ -79,16 +79,6 @@ ui.debug.addDebugData("cityspace", { "mouse,rightx4, 9,3" ], result: "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /. . . . . /. . . . . /" - }, - { - input: [ - "playmode", - "mouse,left,3,3,3,5", - "mouse,right,1,1,1,3", - "mouse,alt+left,8,1,7,2,8,3" - ], - result: - "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /+ . . . . /+ # . . . /0 0 0 -1 /0 0 0 -1 /0 0 0 -1 0 /" } ] }); From ebeef65c8c3d674a2bd9effb787e6959b054f21c Mon Sep 17 00:00:00 2001 From: ReverM Date: Wed, 13 Aug 2025 11:30:03 -0400 Subject: [PATCH 04/11] Final touches --- src/variety/kurodoko.js | 5 +---- test/script/cityspace.js | 6 ++++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/variety/kurodoko.js b/src/variety/kurodoko.js index 251b81f8f..604d6d7c6 100644 --- a/src/variety/kurodoko.js +++ b/src/variety/kurodoko.js @@ -231,7 +231,7 @@ "AreaShadeGraph@cave": { enabled: true }, - + "AreaShadeGraph@cityspace": { enabled: true }, @@ -323,8 +323,6 @@ } }, - - //--------------------------------------------------------- // URLエンコード/デコード処理 Encode: { @@ -479,7 +477,6 @@ "cs1x1" ); } - }, "AnsCheck@nurimisaki": { diff --git a/test/script/cityspace.js b/test/script/cityspace.js index 27302cb13..55bdf7e9c 100644 --- a/test/script/cityspace.js +++ b/test/script/cityspace.js @@ -31,7 +31,8 @@ ui.debug.addDebugData("cityspace", { [ null, - "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + # # # /" ] + "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + # # # /" + ] ], inputs: [ /* 回答入力はslitherと同じなので省略 */ @@ -78,7 +79,8 @@ ui.debug.addDebugData("cityspace", { "mouse,rightx3, 7,3", "mouse,rightx4, 9,3" ], - result: "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /. . . . . /. . . . . /" + result: + "pzprv3/cityspace/2/5/- 2 3 4 5 /6 . 6 5 4 /. . . . . /. . . . . /" } ] }); From a07db1379ecd3e9fd57b39bbe082e2a9c8c1394a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dana=C3=ABl=20V=2E?= <104455676+ReverM@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:42:32 -0400 Subject: [PATCH 05/11] Update test/script/cityspace.js Co-authored-by: Lennard Sprong --- test/script/cityspace.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/script/cityspace.js b/test/script/cityspace.js index 55bdf7e9c..ba9cbebe3 100644 --- a/test/script/cityspace.js +++ b/test/script/cityspace.js @@ -35,7 +35,6 @@ ui.debug.addDebugData("cityspace", { ] ], inputs: [ - /* 回答入力はslitherと同じなので省略 */ { input: ["newboard,5,1", "editmode"] }, { input: [ From 448cd933e16822a3a6825ae88f68704cde7c727a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dana=C3=ABl=20V=2E?= <104455676+ReverM@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:43:05 -0400 Subject: [PATCH 06/11] Update src-ui/res/rules.en.yaml Co-authored-by: Lennard Sprong --- src-ui/res/rules.en.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/res/rules.en.yaml b/src-ui/res/rules.en.yaml index 99d9d5a00..1059f03cc 100644 --- a/src-ui/res/rules.en.yaml +++ b/src-ui/res/rules.en.yaml @@ -122,7 +122,7 @@ skyscrapers: "Place a number in each cell.\n1. Numbers must be between 1 and N, castle: "Draw lines through orthogonally adjacent cells to form a loop.\n1. Lines cannot go through bold borders.\n2. White cells must be inside the loop, and black cells must be outside the loop.\n3. A number with an arrow indicates the number of line segments in that direction. Vertical arrows only count vertical lines, and horizontal arrows count horizontal lines." cbblock: "Draw lines over the dotted lines to divide the board into blocks.\n1. Each block must contain exactly two outlined regions.\n2. Two adjacent blocks cannot have the same shape, counting rotations and reflections as the same.\n3. Blocks cannot be rectangle- or square-shaped." chocona: "Shade some cells on the board.\n1. A group of orthogonally connected shaded cells is called a block. Each block must be a filled rectangle or square.\n2. Numbered regions must contain the indicated amount of shaded cells." -cityspace: "Shade some cells on the board.\n1. Groups of orthogonally connected shaded cells must be 1xN rectangles, where N is at least 2. \n 2. The unshaded cells must form one orthogonally connected region that doesn't contain any loop, including 2x2 loops. \n 3. Clues represent the total number of unshaded cells that can be seen in a straight line vertically or horizontally, including itself." +cityspace: "Shade some cells on the board.\n1. Groups of orthogonally connected shaded cells must be 1xN rectangles, where N is at least 2.\n2. All unshaded cells on the board form an orthogonally connected area.\n3. Unshaded cells cannot form a loop. This includes 2x2 squares.\n4. Numbers cannot be shaded.\n5. Clues represent the total number of unshaded cells that can be seen in a straight line vertically or horizontally, including itself." cojun: "Place a number in each cell. Some numbers are given.\n1. Numbers must be between 1 and N, where N is the size of the region.\n2. Each region contains exactly one of each number.\n3. Two equal numbers cannot be orthogonally adjacent.\n4. Where two numbers within a region are stacked vertically, the number on top must always be larger." compass: "Draw lines over the dotted lines to divide the board into several blocks.\n 1. Each block contains exactly one cell with a compass.\n2. A number in a compass indicates how many cells belong to its region that are further in the indicated direction than the compass itself." country: "Draw lines through orthogonally adjacent cells to form a loop.\n1. The loop cannot branch off or cross itself.\n2. Every country must be visited exactly once.\n3. A number indicates how many cells inside the country are visited by the loop.\n4. Two adjacent cells separated by a border cannot both be unused by the loop." From 323fe471b23fda741e4aac0a3cbedc430264cd2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dana=C3=ABl=20V=2E?= <104455676+ReverM@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:43:11 -0400 Subject: [PATCH 07/11] Update src/res/failcode.en.json Co-authored-by: Lennard Sprong --- src/res/failcode.en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/res/failcode.en.json b/src/res/failcode.en.json index 89f895c51..8317cb387 100644 --- a/src/res/failcode.en.json +++ b/src/res/failcode.en.json @@ -415,7 +415,7 @@ "crNoSegment.tajmahal": "A clue is not inside a square.", "crShadeGt.creek": "The number of shaded cells overlapping a number is too high.", "crShadeLt.creek": "The number of shaded cells overlapping a number is too low.", - "cs1x1.cityspace": "A rectangle doesn't have area at least 2.", + "cs1x1.cityspace": "There is an isolated shaded cell.", "cs2x2.bosnianroad": "The loop goes back on itself.", "cs2x2.snake": "The snake loops back on itself.", "cs2x2": "There is a 2x2 block of shaded cells.", From 81ae6195344a21d982834ef330dda21f39c0532f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dana=C3=ABl=20V=2E?= <104455676+ReverM@users.noreply.github.com> Date: Sun, 17 Aug 2025 12:15:08 -0400 Subject: [PATCH 08/11] Update test/script/cityspace.js Co-authored-by: Lennard Sprong --- test/script/cityspace.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/script/cityspace.js b/test/script/cityspace.js index ba9cbebe3..e6538b0a3 100644 --- a/test/script/cityspace.js +++ b/test/script/cityspace.js @@ -11,7 +11,6 @@ ui.debug.addDebugData("cityspace", { "cuLoop", "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ + + # # # /" ], - // 2x2 unshaded being loop [ "cuLoop", "pzprv3/cityspace/6/6/8 . . . 3 . /. . . . . . /. . . . . . /. 2 . . . 3 /. . . . . . /. . . . . . /+ + + # + # /+ # + # + # /+ # + + + + /+ + # # # + /+ # + + + + /+ # + + # # /" From 87e40fd942a4c75c80f228b13f51246a66f56b7f Mon Sep 17 00:00:00 2001 From: ReverM Date: Sun, 17 Aug 2025 12:17:23 -0400 Subject: [PATCH 09/11] Removed unnecessary code definitions --- src/variety/kurodoko.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/variety/kurodoko.js b/src/variety/kurodoko.js index 604d6d7c6..f72408290 100644 --- a/src/variety/kurodoko.js +++ b/src/variety/kurodoko.js @@ -60,13 +60,7 @@ }, autoplay_func: "cell" }, - "MouseEvent@cave": { - inputModes: { - edit: ["number", "clear", "info-ublk"], - play: ["shade", "unshade", "peke", "info-ublk"] - } - }, - "MouseEvent@cityspace": { + "MouseEvent@cave,cityspace": { inputModes: { edit: ["number", "clear", "info-ublk"], play: ["shade", "unshade", "peke", "info-ublk"] @@ -228,11 +222,7 @@ enabled: true }, - "AreaShadeGraph@cave": { - enabled: true - }, - - "AreaShadeGraph@cityspace": { + "AreaShadeGraph@cave,cityspace": { enabled: true }, From 129f23600cf012f0908c4bb31162a565cea9c730 Mon Sep 17 00:00:00 2001 From: Lennard Sprong Date: Mon, 18 Aug 2025 08:59:19 +0200 Subject: [PATCH 10/11] Add to changelog, add keypopup --- src-ui/changes.html | 2 +- src-ui/js/ui/KeyPopup.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src-ui/changes.html b/src-ui/changes.html index 56f7ebc6b..1c2836c86 100644 --- a/src-ui/changes.html +++ b/src-ui/changes.html @@ -33,13 +33,13 @@
    Latest types (all types)
    diff --git a/src-ui/js/ui/KeyPopup.js b/src-ui/js/ui/KeyPopup.js index e7871de63..389c0d0fd 100644 --- a/src-ui/js/ui/KeyPopup.js +++ b/src-ui/js/ui/KeyPopup.js @@ -234,7 +234,8 @@ ui.keypopup = { isowatari: [10, 0], uturns: [133, 0], distopia: [10, 0], - numcity: [10, 10] + numcity: [10, 10], + cityspace: [10, 0] }, //--------------------------------------------------------------------------- From 1b153f4d0b31dcac4f54ec2e45aee540a440068f Mon Sep 17 00:00:00 2001 From: Lennard Sprong Date: Mon, 18 Aug 2025 09:05:25 +0200 Subject: [PATCH 11/11] Add background --- src-ui/img/cityspace.png | Bin 0 -> 140 bytes src-ui/js/ui/Misc.js | 1 + 2 files changed, 1 insertion(+) create mode 100644 src-ui/img/cityspace.png diff --git a/src-ui/img/cityspace.png b/src-ui/img/cityspace.png new file mode 100644 index 0000000000000000000000000000000000000000..d30b0ea595e5140bed91f235bc7a654daeae0585 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~wg8_H*J*F} z?bv#tOUrRHP{hR3#W6%;YH~sg6C0aA8be?P6Gww0hp5BV2H%DWoF}e55^}iO;@dD$ j&{w#PVUrk-vm+COeFj6}FaA41K>ZA!u6{1-oD!M<;J+mX literal 0 HcmV?d00001 diff --git a/src-ui/js/ui/Misc.js b/src-ui/js/ui/Misc.js index d11277473..4d16c62cb 100755 --- a/src-ui/js/ui/Misc.js +++ b/src-ui/js/ui/Misc.js @@ -123,6 +123,7 @@ function toBGimage(pid) { "cbanana", "chainedb", "circlesquare", + "cityspace", "cocktail", "coffeemilk", "compass",