mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-24 23:12:24 -05:00
Add glide (number) secs to [dropdown] block (#662)
* Add glide to dropdown block
* Use helper functions instead of copy-paste
* Wrong syntax for array 😒
* Aha
* Fix some Travis issues
* Aha!! This should work
* Wow, Travis is strict about spacing!
* Make requested changes
Rename function getTarget to getTargetXY
Rename parameter TO to targetName
This commit is contained in:
parent
f367f2d358
commit
fc4f073526
1 changed files with 20 additions and 5 deletions
|
@ -25,6 +25,7 @@ class Scratch3MotionBlocks {
|
||||||
motion_pointindirection: this.pointInDirection,
|
motion_pointindirection: this.pointInDirection,
|
||||||
motion_pointtowards: this.pointTowards,
|
motion_pointtowards: this.pointTowards,
|
||||||
motion_glidesecstoxy: this.glide,
|
motion_glidesecstoxy: this.glide,
|
||||||
|
motion_glideto: this.glideTo,
|
||||||
motion_ifonedgebounce: this.ifOnEdgeBounce,
|
motion_ifonedgebounce: this.ifOnEdgeBounce,
|
||||||
motion_setrotationstyle: this.setRotationStyle,
|
motion_setrotationstyle: this.setRotationStyle,
|
||||||
motion_changexby: this.changeX,
|
motion_changexby: this.changeX,
|
||||||
|
@ -51,24 +52,31 @@ class Scratch3MotionBlocks {
|
||||||
util.target.setXY(x, y);
|
util.target.setXY(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
goTo (args, util) {
|
getTargetXY (targetName, util) {
|
||||||
let targetX = 0;
|
let targetX = 0;
|
||||||
let targetY = 0;
|
let targetY = 0;
|
||||||
if (args.TO === '_mouse_') {
|
if (targetName === '_mouse_') {
|
||||||
targetX = util.ioQuery('mouse', 'getX');
|
targetX = util.ioQuery('mouse', 'getX');
|
||||||
targetY = util.ioQuery('mouse', 'getY');
|
targetY = util.ioQuery('mouse', 'getY');
|
||||||
} else if (args.TO === '_random_') {
|
} else if (targetName === '_random_') {
|
||||||
const stageWidth = this.runtime.constructor.STAGE_WIDTH;
|
const stageWidth = this.runtime.constructor.STAGE_WIDTH;
|
||||||
const stageHeight = this.runtime.constructor.STAGE_HEIGHT;
|
const stageHeight = this.runtime.constructor.STAGE_HEIGHT;
|
||||||
targetX = Math.round(stageWidth * (Math.random() - 0.5));
|
targetX = Math.round(stageWidth * (Math.random() - 0.5));
|
||||||
targetY = Math.round(stageHeight * (Math.random() - 0.5));
|
targetY = Math.round(stageHeight * (Math.random() - 0.5));
|
||||||
} else {
|
} else {
|
||||||
const goToTarget = this.runtime.getSpriteTargetByName(args.TO);
|
const goToTarget = this.runtime.getSpriteTargetByName(targetName);
|
||||||
if (!goToTarget) return;
|
if (!goToTarget) return;
|
||||||
targetX = goToTarget.x;
|
targetX = goToTarget.x;
|
||||||
targetY = goToTarget.y;
|
targetY = goToTarget.y;
|
||||||
}
|
}
|
||||||
util.target.setXY(targetX, targetY);
|
return [targetX, targetY];
|
||||||
|
}
|
||||||
|
|
||||||
|
goTo (args, util) {
|
||||||
|
const targetXY = this.getTargetXY(args.TO, util);
|
||||||
|
if (targetXY) {
|
||||||
|
util.target.setXY(targetXY[0], targetXY[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
turnRight (args, util) {
|
turnRight (args, util) {
|
||||||
|
@ -140,6 +148,13 @@ class Scratch3MotionBlocks {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glideTo (args, util) {
|
||||||
|
const targetXY = this.getTargetXY(args.TO, util);
|
||||||
|
if (targetXY) {
|
||||||
|
this.glide({SECS: args.SECS, X: targetXY[0], Y: targetXY[1]}, util);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ifOnEdgeBounce (args, util) {
|
ifOnEdgeBounce (args, util) {
|
||||||
const bounds = util.target.getBounds();
|
const bounds = util.target.getBounds();
|
||||||
if (!bounds) {
|
if (!bounds) {
|
||||||
|
|
Loading…
Reference in a new issue