mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-24 23:12:24 -05:00
Rename spin speed, make hat blocks work
This commit is contained in:
parent
be35eb1f70
commit
a0e1b5aa5b
1 changed files with 81 additions and 23 deletions
|
@ -1,7 +1,7 @@
|
||||||
const ArgumentType = require('../../extension-support/argument-type');
|
const ArgumentType = require('../../extension-support/argument-type');
|
||||||
const BlockType = require('../../extension-support/block-type');
|
const BlockType = require('../../extension-support/block-type');
|
||||||
const log = require('../../util/log');
|
const log = require('../../util/log');
|
||||||
// const cast = require('../../util/cast');
|
const Cast = require('../../util/cast');
|
||||||
const formatMessage = require('format-message');
|
const formatMessage = require('format-message');
|
||||||
const BLE = require('../../io/ble');
|
const BLE = require('../../io/ble');
|
||||||
const createDevice = require('@vernier/godirect').default.createDevice;
|
const createDevice = require('@vernier/godirect').default.createDevice;
|
||||||
|
@ -193,21 +193,21 @@ class GdxFor {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAngularSpeedX () {
|
getSpinSpeedX () {
|
||||||
if (this.isConnected()) {
|
if (this.isConnected()) {
|
||||||
return this._device.getSensor(5).value;
|
return this._device.getSensor(5).value;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAngularSpeedY () {
|
getSpinSpeedY () {
|
||||||
if (this.isConnected()) {
|
if (this.isConnected()) {
|
||||||
return this._device.getSensor(6).value;
|
return this._device.getSensor(6).value;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAngularSpeedZ () {
|
getSpinSpeedZ () {
|
||||||
if (this.isConnected()) {
|
if (this.isConnected()) {
|
||||||
return this._device.getSensor(7).value;
|
return this._device.getSensor(7).value;
|
||||||
}
|
}
|
||||||
|
@ -327,10 +327,10 @@ class Scratch3GdxForBlocks {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
opcode: 'whenAngularSpeedCompare',
|
opcode: 'whenSpinSpeedCompare',
|
||||||
text: formatMessage({
|
text: formatMessage({
|
||||||
id: 'gdxfor.whenAngularSpeedCompare',
|
id: 'gdxfor.whenSpinSpeedCompare',
|
||||||
default: 'when angular speed [DIRECTION] [COMPARE] [VALUE]',
|
default: 'when spin speed [DIRECTION] [COMPARE] [VALUE]',
|
||||||
description: 'when the degrees/second value measured by the gyroscope sensor is compared to some value'
|
description: 'when the degrees/second value measured by the gyroscope sensor is compared to some value'
|
||||||
}),
|
}),
|
||||||
blockType: BlockType.HAT,
|
blockType: BlockType.HAT,
|
||||||
|
@ -363,7 +363,7 @@ class Scratch3GdxForBlocks {
|
||||||
COMPARE: {
|
COMPARE: {
|
||||||
type: ArgumentType.STRING,
|
type: ArgumentType.STRING,
|
||||||
menu: 'compareOptions',
|
menu: 'compareOptions',
|
||||||
defaultValue: 'x'
|
defaultValue: ComparisonOptions.GREATER_THAN
|
||||||
},
|
},
|
||||||
VALUE: {
|
VALUE: {
|
||||||
type: ArgumentType.NUMBER,
|
type: ArgumentType.NUMBER,
|
||||||
|
@ -388,11 +388,11 @@ class Scratch3GdxForBlocks {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
opcode: 'getAngularSpeed',
|
opcode: 'getSpinSpeed',
|
||||||
text: formatMessage({
|
text: formatMessage({
|
||||||
id: 'gdxfor.getAngularSpeed',
|
id: 'gdxfor.getSpinSpeed',
|
||||||
default: 'angular speed [DIRECTION]',
|
default: 'spin speed [DIRECTION]',
|
||||||
description: 'gets angular speed'
|
description: 'gets spin speed'
|
||||||
}),
|
}),
|
||||||
blockType: BlockType.REPORTER,
|
blockType: BlockType.REPORTER,
|
||||||
arguments: {
|
arguments: {
|
||||||
|
@ -420,14 +420,72 @@ class Scratch3GdxForBlocks {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
whenAccelerationCompare () {
|
whenAccelerationCompare (args) {
|
||||||
return Promise.resolve();
|
let currentVal = 0;
|
||||||
|
|
||||||
|
switch (args.DIRECTION) {
|
||||||
|
case 'x':
|
||||||
|
currentVal = this._peripheral.getAccelerationX();
|
||||||
|
break;
|
||||||
|
case 'y':
|
||||||
|
currentVal = this._peripheral.getAccelerationY();
|
||||||
|
break;
|
||||||
|
case 'z':
|
||||||
|
currentVal = this._peripheral.getAccelerationZ();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
log.warn(`Unknown direction in whenAccelerationCompare: ${args.DIRECTION}`);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
whenAngularSpeedCompare () {
|
|
||||||
return Promise.resolve();
|
switch (args.COMPARE) {
|
||||||
|
case ComparisonOptions.LESS_THAN:
|
||||||
|
return currentVal < Cast.toNumber(args.VALUE);
|
||||||
|
case ComparisonOptions.GREATER_THAN:
|
||||||
|
return currentVal > Cast.toNumber(args.VALUE);
|
||||||
|
default:
|
||||||
|
log.warn(`Unknown comparison operator in whenAccelerationCompare: ${args.COMPARE}`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
whenSpinSpeedCompare (args) {
|
||||||
|
let currentVal = 0;
|
||||||
|
|
||||||
|
switch (args.DIRECTION) {
|
||||||
|
case 'x':
|
||||||
|
currentVal = this._peripheral.getSpinSpeedX();
|
||||||
|
break;
|
||||||
|
case 'y':
|
||||||
|
currentVal = this._peripheral.getSpinSpeedY();
|
||||||
|
break;
|
||||||
|
case 'z':
|
||||||
|
currentVal = this._peripheral.getSpinSpeedZ();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
log.warn(`Unknown direction in whenSpinSpeedCompare: ${args.DIRECTION}`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.COMPARE) {
|
||||||
|
case ComparisonOptions.LESS_THAN:
|
||||||
|
return currentVal < Cast.toNumber(args.VALUE);
|
||||||
|
case ComparisonOptions.GREATER_THAN:
|
||||||
|
return currentVal > Cast.toNumber(args.VALUE);
|
||||||
|
default:
|
||||||
|
log.warn(`Unknown comparison operator in whenSpinSpeedCompare: ${args.COMPARE}`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
whenForceCompare (args) {
|
||||||
|
switch (args.COMPARE) {
|
||||||
|
case ComparisonOptions.LESS_THAN:
|
||||||
|
return this._peripheral.getForce() < Cast.toNumber(args.VALUE);
|
||||||
|
case ComparisonOptions.GREATER_THAN:
|
||||||
|
return this._peripheral.getForce() > Cast.toNumber(args.VALUE);
|
||||||
|
default:
|
||||||
|
log.warn(`Unknown comparison operator in whenForceCompare: ${args.COMPARE}`);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
whenForceCompare () {
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
}
|
||||||
getAcceleration (args) {
|
getAcceleration (args) {
|
||||||
switch (args.DIRECTION) {
|
switch (args.DIRECTION) {
|
||||||
|
@ -441,16 +499,16 @@ class Scratch3GdxForBlocks {
|
||||||
log.warn(`Unknown direction in getAcceleration: ${args.DIRECTION}`);
|
log.warn(`Unknown direction in getAcceleration: ${args.DIRECTION}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAngularSpeed (args) {
|
getSpinSpeed (args) {
|
||||||
switch (args.DIRECTION) {
|
switch (args.DIRECTION) {
|
||||||
case 'x':
|
case 'x':
|
||||||
return this._peripheral.getAngularSpeedX();
|
return this._peripheral.getSpinSpeedX();
|
||||||
case 'y':
|
case 'y':
|
||||||
return this._peripheral.getAngularSpeedY();
|
return this._peripheral.getSpinSpeedY();
|
||||||
case 'z':
|
case 'z':
|
||||||
return this._peripheral.getAngularSpeedZ();
|
return this._peripheral.getSpinSpeedZ();
|
||||||
default:
|
default:
|
||||||
log.warn(`Unknown direction in getAngularSpeed: ${args.DIRECTION}`);
|
log.warn(`Unknown direction in getSpinSpeed: ${args.DIRECTION}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getForce () {
|
getForce () {
|
||||||
|
|
Loading…
Reference in a new issue