From 1193e49e0e7797c35a4a82c529f5d875af79d156 Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 14 Feb 2022 13:24:09 +0200 Subject: [PATCH] Yay! Sprite fencing now works just like in Scratch! --- assets/4851f7b71585efa5d42cb3a0b2d5fadf.svg | 1 + assets/4ad7b9275b0693c4d8d22ef1d37f655e.svg | 1 + assets/83a9787d4cb6f3b7632b4ddfebf74367.wav | Bin 560 -> 0 bytes assets/9a4fb3ed82f74f5df24ade1a2aa48920.svg | 1 - assets/cd21514d0531fdffb22204e0ec5ed84a.svg | 3 --- assets/d6075b0ad126b663644c462b8b55ce3e.svg | 1 + assets/project.json | 2 +- config.py | 4 ++-- projects/sprite-fencing2-slow.sb3 | Bin 0 -> 15553 bytes sb3Unpacker.py | 2 +- scratch.py | 2 +- targetSprite.py | 16 ++++++++-------- 12 files changed, 16 insertions(+), 17 deletions(-) create mode 100644 assets/4851f7b71585efa5d42cb3a0b2d5fadf.svg create mode 100644 assets/4ad7b9275b0693c4d8d22ef1d37f655e.svg delete mode 100644 assets/83a9787d4cb6f3b7632b4ddfebf74367.wav delete mode 100644 assets/9a4fb3ed82f74f5df24ade1a2aa48920.svg delete mode 100644 assets/cd21514d0531fdffb22204e0ec5ed84a.svg create mode 100644 assets/d6075b0ad126b663644c462b8b55ce3e.svg create mode 100644 projects/sprite-fencing2-slow.sb3 diff --git a/assets/4851f7b71585efa5d42cb3a0b2d5fadf.svg b/assets/4851f7b71585efa5d42cb3a0b2d5fadf.svg new file mode 100644 index 0000000..aecd366 --- /dev/null +++ b/assets/4851f7b71585efa5d42cb3a0b2d5fadf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/4ad7b9275b0693c4d8d22ef1d37f655e.svg b/assets/4ad7b9275b0693c4d8d22ef1d37f655e.svg new file mode 100644 index 0000000..d3f0edd --- /dev/null +++ b/assets/4ad7b9275b0693c4d8d22ef1d37f655e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/83a9787d4cb6f3b7632b4ddfebf74367.wav b/assets/83a9787d4cb6f3b7632b4ddfebf74367.wav deleted file mode 100644 index fc3b2724a9c7cfef378eeb65499d44236ad2add8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmV-00?++YNk&E}0ssJ4K~_a(ZFC?I000010096ID*yl@RsaA301yCVVRT^x0ssKj z00RTP2XYPX6;mBNBby}RAgdO0237H2+F-ZWdO|~4V=TEqdmIH}tkx#Dm*<1_&JWyZnZx?A+P6{M(@>#`aqqdWH znfS73+M@}MHfvWYW};ubM)e=a@&n5CtcAAMIVe%_Ry0XYD+2^9+rGN& zs1B*oyo}wv20Si+OB7irQe8Q$6CCPs#jUL=r@FHn(6IKU9(q5>QOZ$kKYbtP`P0^c zz8|(#zO2=}^(q*GGxb4)KrAl|6Ib$|)w9F(zjVu-<9Y&mAc;1HKhiilB*O-h=Nrz3 zzX-q;&r#`X2!16XItW3vIF=(*1~2GV&nm*|!dlS<>PZKbBG)z0JnS_}BU%YZ?i<*5 z%MHtB)^F;u0+JasDtIueD?AstBS;^s6R!hO^Kj<6 z-`n6b>CE;d2HO+z97-RA8p#iQ0p#*E=MCY8;dXzq(>EQ4A_|yUj3rY}@5!ntm2^j);``5*s|1eXXG3W^9-1Y!OTiU1S< diff --git a/assets/9a4fb3ed82f74f5df24ade1a2aa48920.svg b/assets/9a4fb3ed82f74f5df24ade1a2aa48920.svg deleted file mode 100644 index 35f40c4..0000000 --- a/assets/9a4fb3ed82f74f5df24ade1a2aa48920.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/cd21514d0531fdffb22204e0ec5ed84a.svg b/assets/cd21514d0531fdffb22204e0ec5ed84a.svg deleted file mode 100644 index 15f7311..0000000 --- a/assets/cd21514d0531fdffb22204e0ec5ed84a.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/d6075b0ad126b663644c462b8b55ce3e.svg b/assets/d6075b0ad126b663644c462b8b55ce3e.svg new file mode 100644 index 0000000..5f92588 --- /dev/null +++ b/assets/d6075b0ad126b663644c462b8b55ce3e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/project.json b/assets/project.json index fcc3072..1ec3fec 100644 --- a/assets/project.json +++ b/assets/project.json @@ -1 +1 @@ -{"targets":[{"isStage":true,"name":"Stage","variables":{"`jEk@4|i[#Fk?(8x)AV.-my variable":["variabila mea",0]},"lists":{},"broadcasts":{},"blocks":{},"comments":{},"currentCostume":0,"costumes":[{"assetId":"cd21514d0531fdffb22204e0ec5ed84a","name":"decor1","md5ext":"cd21514d0531fdffb22204e0ec5ed84a.svg","dataFormat":"svg","rotationCenterX":240,"rotationCenterY":180}],"sounds":[{"assetId":"83a9787d4cb6f3b7632b4ddfebf74367","name":"pop","dataFormat":"wav","format":"","rate":44100,"sampleCount":1032,"md5ext":"83a9787d4cb6f3b7632b4ddfebf74367.wav"}],"volume":100,"layerOrder":0,"tempo":60,"videoTransparency":50,"videoState":"on","textToSpeechLanguage":"ro"},{"isStage":false,"name":"Cosmicat","variables":{},"lists":{},"broadcasts":{},"blocks":{"!9~L/Ga.|^g)gSvQM;+$":{"opcode":"event_whenflagclicked","next":"~3R$9k/sN,qYmzk}}w$%","parent":null,"inputs":{},"fields":{},"shadow":false,"topLevel":true,"x":360,"y":264},"~3R$9k/sN,qYmzk}}w$%":{"opcode":"procedures_call","next":"vS#O_*:E~FzxQ[H.`?D1","parent":"!9~L/Ga.|^g)gSvQM;+$","inputs":{"arg0":[1,[10,"Message"]]},"fields":{},"shadow":false,"topLevel":false,"mutation":{"tagName":"mutation","children":[],"proccode":"​​log​​ %s","argumentids":"[\"arg0\"]","warp":"false"}},"vS#O_*:E~FzxQ[H.`?D1":{"opcode":"procedures_call","next":"*[]/86-Bc=S`:*9^4Qqk","parent":"~3R$9k/sN,qYmzk}}w$%","inputs":{"arg0":[1,[10,"Warning"]]},"fields":{},"shadow":false,"topLevel":false,"mutation":{"tagName":"mutation","children":[],"proccode":"​​warn​​ %s","argumentids":"[\"arg0\"]","warp":"false"}},"*[]/86-Bc=S`:*9^4Qqk":{"opcode":"procedures_call","next":null,"parent":"vS#O_*:E~FzxQ[H.`?D1","inputs":{"arg0":[1,[10,"Error!"]]},"fields":{},"shadow":false,"topLevel":false,"mutation":{"tagName":"mutation","children":[],"proccode":"​​error​​ %s","argumentids":"[\"arg0\"]","warp":"false"}}},"comments":{},"currentCostume":0,"costumes":[{"assetId":"9a4fb3ed82f74f5df24ade1a2aa48920","name":"Cosmicat","bitmapResolution":1,"md5ext":"9a4fb3ed82f74f5df24ade1a2aa48920.svg","dataFormat":"svg","rotationCenterX":47.2514000162754,"rotationCenterY":57.860045289335886}],"sounds":[],"volume":100,"layerOrder":1,"visible":true,"x":0,"y":0,"size":100,"direction":90,"draggable":false,"rotationStyle":"all around"}],"monitors":[],"extensions":[],"meta":{"semver":"3.0.0","vm":"0.2.0-prerelease.20220208083128","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"}} \ No newline at end of file +{"targets":[{"isStage":true,"name":"Stage","variables":{},"lists":{},"broadcasts":{},"blocks":{},"comments":{},"currentCostume":0,"costumes":[{"assetId":"4851f7b71585efa5d42cb3a0b2d5fadf","name":"xy-grid","bitmapResolution":1,"md5ext":"4851f7b71585efa5d42cb3a0b2d5fadf.svg","dataFormat":"svg","rotationCenterX":239.99997000000002,"rotationCenterY":180.00002999999998}],"sounds":[],"volume":100,"layerOrder":0,"tempo":60,"videoTransparency":50,"videoState":"on","textToSpeechLanguage":"ro"},{"isStage":false,"name":"test4","variables":{},"lists":{},"broadcasts":{},"blocks":{"2*2cr|ML_HC_GyWVj^(v":{"opcode":"event_whenflagclicked","next":"L*/]pE8:_D+Dd~IYaw|A","parent":null,"inputs":{},"fields":{},"shadow":false,"topLevel":true,"x":44,"y":44},"L*/]pE8:_D+Dd~IYaw|A":{"opcode":"motion_gotoxy","next":"~[.-N+y|%~1/ppm13nfG","parent":"2*2cr|ML_HC_GyWVj^(v","inputs":{"X":[1,[4,"0"]],"Y":[1,[4,"0"]]},"fields":{},"shadow":false,"topLevel":false},"!!*LiE%JmR)yTT8t*IEw":{"opcode":"control_forever","next":null,"parent":"~[.-N+y|%~1/ppm13nfG","inputs":{"SUBSTACK":[3,"8mH24?BwR!oVHt[sC~k6",null]},"fields":{},"shadow":false,"topLevel":false},"~[.-N+y|%~1/ppm13nfG":{"opcode":"control_wait","next":"!!*LiE%JmR)yTT8t*IEw","parent":"L*/]pE8:_D+Dd~IYaw|A","inputs":{"DURATION":[1,[5,"2"]]},"fields":{},"shadow":false,"topLevel":false},"|DafiWiy1M,Flv:1[OR5":{"opcode":"motion_changexby","next":null,"parent":"8mH24?BwR!oVHt[sC~k6","inputs":{"DX":[1,[4,"4"]]},"fields":{},"shadow":false,"topLevel":false},"8mH24?BwR!oVHt[sC~k6":{"opcode":"control_wait","next":"|DafiWiy1M,Flv:1[OR5","parent":"!!*LiE%JmR)yTT8t*IEw","inputs":{"DURATION":[1,[5,"0.1"]]},"fields":{},"shadow":false,"topLevel":false}},"comments":{},"currentCostume":0,"costumes":[{"assetId":"4ad7b9275b0693c4d8d22ef1d37f655e","name":"test5","bitmapResolution":1,"md5ext":"4ad7b9275b0693c4d8d22ef1d37f655e.svg","dataFormat":"svg","rotationCenterX":12.799997999999988,"rotationCenterY":12.79999799999996}],"sounds":[],"volume":100,"layerOrder":1,"visible":true,"x":240,"y":0,"size":100,"direction":0,"draggable":false,"rotationStyle":"all around"},{"isStage":false,"name":"test3","variables":{},"lists":{},"broadcasts":{},"blocks":{",X2+Ba;j.{5=M,W#sqNq":{"opcode":"event_whenflagclicked","next":"eoD|.{boV!3KJ*wa?2Tl","parent":null,"inputs":{},"fields":{},"shadow":false,"topLevel":true,"x":71,"y":167},"eoD|.{boV!3KJ*wa?2Tl":{"opcode":"motion_gotoxy","next":"1Pg.FL7Xxn;dj#]8?o8,","parent":",X2+Ba;j.{5=M,W#sqNq","inputs":{"X":[1,[4,"0"]],"Y":[1,[4,"0"]]},"fields":{},"shadow":false,"topLevel":false},"_X?nnf=yDYoRGtKkk~yn":{"opcode":"control_forever","next":null,"parent":"1Pg.FL7Xxn;dj#]8?o8,","inputs":{"SUBSTACK":[2,"!O@Z6z[3_~LlIfmxkS8F"]},"fields":{},"shadow":false,"topLevel":false},"ap#n-(zet,2tZTR!dO%v":{"opcode":"motion_changeyby","next":null,"parent":"!O@Z6z[3_~LlIfmxkS8F","inputs":{"DY":[1,[4,"4"]]},"fields":{},"shadow":false,"topLevel":false},"1Pg.FL7Xxn;dj#]8?o8,":{"opcode":"control_wait","next":"_X?nnf=yDYoRGtKkk~yn","parent":"eoD|.{boV!3KJ*wa?2Tl","inputs":{"DURATION":[1,[5,"1"]]},"fields":{},"shadow":false,"topLevel":false},"!O@Z6z[3_~LlIfmxkS8F":{"opcode":"control_wait","next":"ap#n-(zet,2tZTR!dO%v","parent":"_X?nnf=yDYoRGtKkk~yn","inputs":{"DURATION":[1,[5,"0.1"]]},"fields":{},"shadow":false,"topLevel":false}},"comments":{},"currentCostume":0,"costumes":[{"assetId":"d6075b0ad126b663644c462b8b55ce3e","name":"test","bitmapResolution":1,"md5ext":"d6075b0ad126b663644c462b8b55ce3e.svg","dataFormat":"svg","rotationCenterX":31.99998500000001,"rotationCenterY":31.999995000000013}],"sounds":[],"volume":100,"layerOrder":2,"visible":true,"x":0,"y":196,"size":100,"direction":0,"draggable":false,"rotationStyle":"all around"}],"monitors":[],"extensions":[],"meta":{"semver":"3.0.0","vm":"0.2.0-prerelease.20220208083128","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"}} \ No newline at end of file diff --git a/config.py b/config.py index 7f56175..06a9374 100644 --- a/config.py +++ b/config.py @@ -16,7 +16,7 @@ # Project file name # If the "manual" mode is chosen, set the Scratch project file to load. -projectFileName: str = "projects/sa-logs.sb3" +projectFileName: str = "projects/sprite-fencing2-slow.sb3" # Extract on project run # Set whether to extract the project assets on run. @@ -46,7 +46,7 @@ # Allow off-screen sprites # Again, most projects will break. # Vanilla is false. -allowOffScreenSprites: bool = True +allowOffScreenSprites: bool = False # "For this project" values diff --git a/projects/sprite-fencing2-slow.sb3 b/projects/sprite-fencing2-slow.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..785ef7a7030328f42980da5d89a070c48a7a6aa3 GIT binary patch literal 15553 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 32: - if x > scratch.WIDTH - scratch.WIDTH / 2 + self.rect.width - 16: - x = scratch.WIDTH - scratch.WIDTH / 2 + self.rect.width - 16 - if x < scratch.WIDTH / 2 - scratch.WIDTH - self.rect.width + 16: - x = scratch.WIDTH / 2 - scratch.WIDTH - self.rect.width + 16 - if y > scratch.HEIGHT - scratch.HEIGHT / 2 + self.rect.height - 16: - y = scratch.HEIGHT - scratch.HEIGHT / 2 + self.rect.height - 16 - if y < scratch.HEIGHT / 2 - scratch.HEIGHT - self.rect.height + 16: - y = scratch.HEIGHT / 2 - scratch.HEIGHT - self.rect.height + 16 + if x > scratch.WIDTH - scratch.WIDTH / 2 + (self.rect.width / 2 - 16): + x = scratch.WIDTH - scratch.WIDTH / 2 + (self.rect.width / 2 - 16) + if x < scratch.WIDTH / 2 - scratch.WIDTH - (self.rect.width / 2 + 16): + x = scratch.WIDTH / 2 - scratch.WIDTH - (self.rect.width / 2 + 16) + if y > scratch.HEIGHT - scratch.HEIGHT / 2 + (self.rect.height / 2 - 16): + y = scratch.HEIGHT - scratch.HEIGHT / 2 + (self.rect.height / 2 - 16) + if y < scratch.HEIGHT / 2 - scratch.HEIGHT - (self.rect.height / 2 + 16): + y = scratch.HEIGHT / 2 - scratch.HEIGHT - (self.rect.height / 2 + 16) else: if x > scratch.WIDTH - scratch.WIDTH / 2: x = scratch.WIDTH - scratch.WIDTH / 2