Commit graph

977 commits

Author SHA1 Message Date
Christopher Willis-Ford
635c7966eb Fix tests: don't require('scratch-blocks') 2017-09-06 01:24:24 -06:00
Christopher Willis-Ford
799d61ac98 Cleanup 2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
d99c11ef91 Fix extension conditional blocks' appearance
The JSON generated for conditional blocks had slightly incorrect
structure for its `argsN` items and was missing some necessary
`messageN` items.
2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
e7c727977a Adjust for LLK/scratch-gui#655 & code review
- Move extension from this repository into LLK/scratch-gui
- Rename `EXTENSION_WAS_ADDED` event to `EXTENSION_ADDED`
2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
d43749d675 WIP for demo 2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
aaa7784d39 Add methods to fetch scratch-blocks XML and JSON 2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
64bde25d22 Offer a promise for extension worker init 2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
403adb743c Track extension blocks in the Runtime 2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
42255bbcfa Collect extension info, prep scratch-blocks data
The Extension Manager now calls an extension's `getInfo` method, then
creates `scratch-blocks`-compatible XML and JSON block data from the
results.
2017-09-06 00:57:03 -06:00
Christopher Willis-Ford
7fb7f0dc7b WIP Extension Manager
When asked to load an extension, the Extension Manager starts up a new
Worker. That worker runs the message dispatch system as well as an
instance of the new `ExtensionWorker` class, which will load the desired
extension and register it with the extension system.

Extensions, placed in `./src/extensions/*.js`, are now processed by
Webpack as separate entry points and packed into an `extensions`
subdirectory in the output.

Still to do: query an extension's information, including the blocks it
provides, and register that information with the VM, GUI, etc.
2017-09-06 00:57:03 -06:00
Eric Rosenbaum
58eaeaaf6a Add pen transparency, clamped 0-100 2017-09-05 18:00:34 -04:00
DD
caf98cb185 change order 2017-09-05 17:53:27 -04:00
DD
48fec12391 add jsdoc 2017-09-05 17:49:30 -04:00
DD
29540e705e Add updating the rotation center to updateSvg 2017-09-05 16:51:03 -04:00
Eric Rosenbaum
2b89063827 Merge branch 'patch-1' of https://github.com/Kenny2github/scratch-vm into Kenny2github-patch-1 2017-09-05 11:38:27 -04:00
Ken
3185eb27e1 Rewrote transparency block
Wrapping of the value is now handled by a new function, _wrapTransparency;
_updatePenColor now handles the transparency value;
DEFAULT_PEN_STATE now includes a transparency value (100).
2017-09-01 14:11:09 +08:00
DD
5606b067e5 More comment fixes 2017-08-31 13:41:47 -04:00
DD
7d3b9a866c Fix comment 2017-08-31 11:55:17 -04:00
DD
e5208445ac Add updateSVG to tell the renderer about the updated drawing 2017-08-31 11:43:41 -04:00
Ken
f61366643d Clamp transparency value (at least for set) 2017-08-31 09:24:41 +08:00
DD
5f5f7b1684 add get svg function 2017-08-30 14:23:03 -04:00
Ken
fc4f073526 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
2017-08-28 15:44:34 -04:00
Ray Schamp
f367f2d358 Merge pull request #670 from rschamp/eslint-config-scratch-4
Update eslint and eslint-config-scratch
2017-08-26 13:26:05 -04:00
Ray Schamp
32bc087bba Fix remaining lint issues 2017-08-26 13:24:10 -04:00
Ray Schamp
5113876588 Pass with --fix 2017-08-26 13:24:10 -04:00
Ken
8a77329c79 Fix lint issue and update maximums
Inferring from the issue, the maximum seems to be 100, not 255 (default for set is 50 and change is 10). Changed that.
A comment line was too long (thanks lint) so it has now been reworded.
2017-08-25 15:24:56 +08:00
Ken
e30e5809d1 Add new blocks
change pen transparency by (num)
set pen transparency to (num)
2017-08-25 15:07:38 +08:00
Ray Schamp
f6189903f8 Merge pull request #668 from SillyInventor/develop
Switch from parseInt to Math.floor
2017-08-24 12:24:13 -04:00
Andrew Sliwinski
d1af3ef808 Merge pull request #562 from bigeyex/feature/fix-deleted-clone-sequence-order
Fix the next thread is skipped after clone deleted
2017-08-23 09:51:38 -04:00
SillyInventor
525b601253 Switch from parseInt to Math.floor 2017-08-22 10:30:41 -04:00
Chris Willis-Ford
2665ef2b2b Merge pull request #640 from cwillisf/feature/message-dispatch
Implement message dispatch system
2017-08-17 10:57:23 -07:00
Ken
884e24f782 *facepalm* 2017-08-11 02:23:43 +12:00
Ken
28e61dbf48 Cleaned up 2017-08-11 01:58:59 +12:00
Ken
328514ae63 This kinda doesn’t make sense, but ok 2017-08-11 01:46:26 +12:00
Ken
5af99566fa Wait includes is case sensitive
Made it convert to lowercase before comparing
2017-08-11 01:27:31 +12:00
Ken
3b601e8595 Add string contains string 2017-08-11 00:52:41 +12:00
Christopher Willis-Ford
b4c0cfe940 Refactor common code in {central,worker}-dispatch
Central dispatch and worker dispatch share most of their code now by
inheriting from a new shared dispatch class.

Also, the format of passed messages has been altered to make it easier
to understand in a debugger.
2017-08-09 17:30:00 -04:00
neurosie
86e2b2338e Fix variable deserializing 2017-08-08 16:00:31 -04:00
DD Liu
a48efe681e tests 2017-07-31 17:57:51 -04:00
DD Liu
cc1678fa9e Also run monitor blocks every frame 2017-07-28 14:38:26 -04:00
DD Liu
2aef75bc11 Merge branch 'develop' into timerBlock 2017-07-28 11:35:47 -04:00
TheBrokenRail
936ff04b0f Fix setting Infinity to direction (#612)
* Create rendered-target.js

* Update math-util.js

* Update rendered-target.js

* Update math-util.js

* Update rendered-target.js
2017-07-26 17:44:02 -04:00
Paul Kaplan
f2bd32a81a Merge pull request #653 from paulkaplan/sound-ids
Use sound ID instead of md5 for playing sounds
2017-07-26 09:00:00 -04:00
Paul Kaplan
25a0e2ffaf Use new audio engine api to retreive and set sound buffers 2017-07-25 17:03:26 -04:00
Paul Kaplan
44298fd71b Use soundId instead of md5 for playing sounds 2017-07-25 12:20:32 -04:00
Paul Kaplan
0cf05647d2 Merge branch 'develop' into fix-asset-naming 2017-07-25 10:48:25 -04:00
Paul Kaplan
f96a92b4d1 Move renaming and adding into rendered-target with tests 2017-07-25 10:32:25 -04:00
Christopher Willis-Ford
97d67d75f4 Allow 'then' on service registration
This allows a service to postpone communication with other services
until it can be sure that it's registered with central dispatch. Service
registration on the main thread always happens immediately, but that
version of `setService` still returns a Promise for consistency.
2017-07-21 13:23:52 -07:00
Christopher Willis-Ford
0fcc248ac1 Add tests for message dispatch system; fix bugs
The tests run using TinyWorker, which emulates web workers on Node.
There are quite a few quirks in that situation due to the differences
between Node and Webpack as well as the differences between TinyWorker
and real Web Workers.

The tests also exposed a few bugs in the dispatch system, which have now
been fixed. Most notably, if a method called through the dispatch system
throws an exception that exception will now be passed back to the
caller. Previously the exception would escape the dispatch system and
the caller would never hear any response at all.
2017-07-21 13:23:52 -07:00
Christopher Willis-Ford
09d3fe330f Implement message dispatch system
This message dispatch system allows a "service" to register itself under
a particular name, and then anyone can call any method on that service
from any context (the main "window" thread or any worker). Return values
are passed back through promise resolution.
2017-07-21 13:22:14 -07:00
Paul Kaplan
bd3a29650b Fix variable import scoping 2017-07-17 12:28:44 -04:00
DD Liu
912e7daa81 Merge pull request #636 from fsih/deleteMonitors
Update monitors when deleting or renaming variables
2017-07-17 11:06:29 -04:00
Paul Kaplan
0e33d061fe Merge pull request #633 from paulkaplan/fix-sound-indexing
Fix sound indexing and add tests
2017-07-13 15:08:05 -04:00
Paul Kaplan
eb04fcab57 Merge pull request #634 from paulkaplan/sound-costume-renaming
Add public API for costume and sound renaming
2017-07-13 09:00:19 -04:00
DD Liu
3722aefb17 fix greater than hat block click activation, and also event activation which was only on half the time 2017-07-12 15:46:23 -04:00
DD Liu
01db5da8ce fix value 2017-07-11 13:08:18 -04:00
DD Liu
4b1307bb11 fix test 2017-07-11 11:51:47 -04:00
DD Liu
7f1f9079e3 support rename variable 2017-07-10 18:29:25 -04:00
Paul Kaplan
a83c0808a0 Add public API for costume and sound renaming with tests 2017-07-07 08:19:32 -04:00
Paul Kaplan
2ddb6215fd Add tests and fixes for set instrument and play drum 2017-07-06 14:56:46 -04:00
Paul Kaplan
1b6baf8114 Make playSound use one indexing 2017-07-06 14:28:11 -04:00
Paul Kaplan
6fa49b1e7a Merge pull request #629 from marisaleung/develop
ChangeBlock uses id's of variable instead of name.
2017-06-30 08:10:55 -04:00
Chris Willis-Ford
47fc38fd9a Merge pull request #619 from cwillisf/clone-custom-state
Clone custom state
2017-06-27 22:37:30 -07:00
marisaleung
22f87e32f8 ChangeBlock uses id's of variable instead of name. 2017-06-27 16:28:37 -07:00
Paul Kaplan
b0fb4f0b55 Merge pull request #614 from marisaleung/develop_cherry-picks
Updated variables and var_fire event listener.
2017-06-23 13:05:03 -04:00
marisaleung
875ccf5b88 Updated variables and var_fire event listener. 2017-06-23 09:57:01 -07:00
Eric Rosenbaum
01f801a2a2 Remove all audio effects except pitch and pan 2017-06-19 14:56:29 -04:00
Christopher Willis-Ford
06d5994a32 Use targetWasCreated event to clone pen state
Remove explicit cloning of `_customState` in favor of smarter,
state-specific cloning.
2017-06-16 14:22:51 -07:00
Christopher Willis-Ford
04871e24d6 Move RenderedTarget.runtime into Target
Some code in `Target` was already assuming a `runtime` property was
available, so this change just makes it official.
2017-06-16 13:16:13 -07:00
DD Liu
2fb502fb70 add ability to refresh workspace for current editing target 2017-06-15 11:53:30 -04:00
Paul Kaplan
93bac9ad85 Merge pull request #608 from paulkaplan/unshadow-variable-dropdown
Use variable field instead of input shadow
2017-06-15 10:02:08 -04:00
Paul Kaplan
5df4456c4a Use variable field directly 2017-06-14 16:31:29 -04:00
Christopher Willis-Ford
884ba19aab Add support for older SB3 JSON
If the `dataFormat` field is absent, fall back on the older `assetType`
field. That can at least help us tell if something is a vector or bitmap
image, though it doesn't tell us which kind of bitmap.
2017-06-13 14:56:06 -07:00
Christopher Willis-Ford
88e44c65eb Remember the data format when an asset is imported 2017-06-12 12:31:49 -07:00
Ray Schamp
d9704b23c3 Merge pull request #598 from cwillisf/improve-clone-cleanup
Improve cleanup on clone disposal
2017-06-12 09:45:07 -04:00
Paul Kaplan
f968edec54 Merge pull request #594 from paulkaplan/select-other-sprites-after-delete
Select the last target instead of the first after deleting
2017-06-12 08:41:20 -04:00
Paul Kaplan
9c5d43e9d3 Enhance sprite delete behavior 2017-06-12 08:35:27 -04:00
DD Liu
fb986effe6 Merge pull request #593 from fsih/fixWaitCalledEveryFrame
Change wait to use a promise instead of being called every frame
2017-06-08 15:35:48 -04:00
Christopher Willis-Ford
454082b569 Improve cleanup on clone disposal
The `dispose()` method on `RenderedTarget` now:
- informs the runtime that it should end any threads corresponding the
  target being disposed, and
- removes the clone from its sprite.
2017-06-07 17:05:24 -07:00
Chris Willis-Ford
d41997b58b Merge pull request #556 from cwillisf/wedo2-blocks
Add WeDo 2.0 blocks
2017-06-07 09:57:36 -07:00
Paul Kaplan
40345384aa Select the last target instead of the first 2017-06-07 09:06:46 -04:00
DD Liu
e237d24846 fix lint 2017-06-06 10:21:27 -04:00
DD Liu
ab0cef52eb Change wait to use a promise instead of being called every frame 2017-06-05 16:55:15 -04:00
Ray Schamp
ecf535f4c3 Merge pull request #579 from cwillisf/load-jpeg-backdrops
Specify dataFormat when loading asset for import
2017-06-02 09:06:37 -04:00
Ray Schamp
adcd225598 Merge pull request #584 from rschamp/nit/no-useless-call
Fix no-useless-call todo
2017-06-01 09:48:58 -04:00
DD Liu
d3d82bae69 Merge pull request #574 from fsih/immutableState
Only send update monitor events when changes happen
2017-05-30 12:38:09 -04:00
Ray Schamp
b810b7be0a Merge pull request #583 from rschamp/bugfix/save-clones-bad
Don't serialize clones when saving
2017-05-30 10:24:52 -04:00
DD Liu
55f677702a add missing file 2017-05-30 10:05:13 -04:00
Paul Kaplan
51928bac65 Merge pull request #581 from paulkaplan/feature/variable-persistence
Add variable creation and variable serialization
2017-05-30 09:26:37 -04:00
DD Liu
809760b954 Merge branch 'develop' into immutableState 2017-05-26 13:50:50 -04:00
Paul Kaplan
3e9dfde43f Merge pull request #576 from paulkaplan/feature/monitor-labels
Send monitor opcode and block params instead of fixed label/categories
2017-05-26 11:07:58 -04:00
Paul Kaplan
77cc01a38a Add variable creation and variable serialization 2017-05-25 11:44:49 -04:00
Christopher Willis-Ford
cbfbc5d600 Convert motor duration: seconds -> milliseconds
The block takes seconds, whereas the device takes milliseconds. Turning
on a motor for 1 millisecond isn't very dramatic.
2017-05-24 16:40:55 -07:00
Christopher Willis-Ford
06fe701624 Implement WeDo 2.0 blocks 2017-05-24 16:40:55 -07:00
Christopher Willis-Ford
2625529ebe Create WeDo 2.0 device communication classes 2017-05-24 16:40:55 -07:00
Christopher Willis-Ford
eb931fd99b Specify dataFormat when loading asset for import
When importing a project we know the file extension for each asset to be
loaded. This change provides that information to the storage system so
that we can load assets which don't use the default. For example, this
allows loading JPG-format backdrops.

In support of this change, there's a new function on `StringUtil` called
`splitFirst`, which splits a string on the first instance of a separator
character. This change includes unit tests for this new function.
2017-05-24 15:35:10 -07:00
Chris Willis-Ford
3970883e45 Merge pull request #549 from cwillisf/device-manager-client
Device manager client
2017-05-24 14:43:28 -07:00
DD Liu
18282fc1d0 remove get for records 2017-05-24 16:33:22 -04:00
DD Liu
2867b5c331 add record file 2017-05-24 15:43:12 -04:00
DD Liu
5df3d4ab68 Merge branch 'develop' into immutableState 2017-05-24 15:42:54 -04:00
DD Liu
1902848ea4 Switch to ordered maps of monitor records for monitor state 2017-05-24 15:42:29 -04:00
Paul Kaplan
df9230a0ff Make helper private 2017-05-23 09:55:42 -04:00
DD Liu
acdc783f27 emit immutable 2017-05-22 17:31:53 -04:00
Andrew Sliwinski
b39de6722f Merge pull request #575 from TheBrokenRail/patch-32
Fix SB2 Imports
2017-05-22 13:47:37 -07:00
Paul Kaplan
5973e2d305 Add reporting for block params 2017-05-22 15:18:48 -04:00
Paul Kaplan
817ea47e32 Remove XY from monitor reporting 2017-05-22 14:40:07 -04:00
Paul Kaplan
144a0b349d Change monitor reporting from category and label to opcode 2017-05-22 13:38:29 -04:00
Paul Kaplan
3eaec99e51 Always activate the current costume after deleting 2017-05-22 08:17:28 -04:00
Paul Kaplan
423da12c3c Handle more cases of deleting costumes 2017-05-22 08:17:28 -04:00
Paul Kaplan
30a0c0d251 Allow deleting the last sound 2017-05-22 08:17:28 -04:00
Paul Kaplan
a608ca4fed Make rendered targets in charge of deleting their own sounds and costumes 2017-05-22 08:17:28 -04:00
Paul Kaplan
73cb823199 Add delete costume and sound functions to the vm public api 2017-05-22 08:17:28 -04:00
TheBrokenRail
5b81c8b087 Update sb2_specmap.js 2017-05-21 12:26:16 -04:00
DD Liu
48c51ab2ec switch to nested immutables state 2017-05-19 17:28:00 -04:00
DD Liu
9645a513b1 Only send monitor update on change 2017-05-19 12:28:05 -04:00
DD Liu
adc60001ee Merge branch 'develop' into updateMonitorsAction 2017-05-18 16:50:34 -04:00
Paul Kaplan
745a81ef96 Merge pull request #573 from paulkaplan/fix-sprite-renames
Fix sprite rename incrementing when renamed to itself
2017-05-18 15:40:11 -04:00
Paul Kaplan
beaef901a7 Add failing test for gui issues 370
Fix rename increment when renamed to itself
2017-05-18 09:13:31 -04:00
Ray Schamp
cf188bc5e4 Don't serialize clones when saving 2017-05-18 02:07:35 +09:00
Paul Kaplan
2c4361b830 Fix refreshTargets race condition 2017-05-16 09:20:52 -04:00
Ray Schamp
548aa6dd70 Fix no-useless-call todo
The linter is correct that `devObject[func].call(devObject, args)` is unnecessary because it's equivalent to `devObject[func](args)`.

@tmickel probably either meant to allow passing an array of arguments to be applied, or to call the function with the provided argument. Since we probably want to be able to use multi-argument functions, use `apply` and fix the one place that uses `ioQuery` with an argument.
2017-05-15 21:11:38 -07:00
DD Liu
f1208720f6 restore things lost in bad merge 2017-05-15 16:25:34 -04:00
DD Liu
65d998f473 attach issue to todo 2017-05-15 10:47:36 -04:00
DD Liu
dcdb806b57 fix merge more 2017-05-15 10:45:20 -04:00
DD Liu
4cfedc8d9d fix merge conflicts 2017-05-15 10:18:48 -04:00
DD Liu
9060a35350 Merge branch 'develop' into updateMonitorsAction 2017-05-15 10:16:12 -04:00
DD Liu
6ee1e6614c Remove leftover instances of MONITORS_ADDED and MONITORS_REMOVED, change updateMonitor to requestUpdateMonitor, update some todos with tracking numbers. 2017-05-15 10:12:25 -04:00
Ray Schamp
20337b53f2 Stop emitting SPRITE_INFO_REPORT
Instead, set the `_refreshTargets` flag, and emit a full target list at the end of the step.
2017-05-12 11:42:22 -04:00
Wang Yu
6ec231db9d Fix the next thread is skipped after clone deleted
Problem:
When a clone is deleted, its thread is removed from the thread
list; but the index "i" in the execution for-loop will still +1,
making the next thread skipped.

Changes:
Added a flag "isKilled" on a thread;
Set the flag when a thread is removed from the thread list;
reduce the "i" counter if the thread of the current loop is removed.
2017-05-12 14:01:37 +08:00
DD Liu
7a1b3eccd0 fix Object.values is not a function test 2017-05-11 17:28:48 -04:00
DD Liu
2a7f3edda6 Fix some issues: 1. Monitors not running anymore if you change categories 2. Visual reports not showing 3. threads acquiring properties of old thread when restarting thread 2017-05-11 17:12:19 -04:00
DD Liu
6b774c58f5 Update some comments 2017-05-11 15:23:11 -04:00
Christopher Willis-Ford
9d306962bd Fix socket.io-client dependency problems re: build
The Socket.io client library pulls in some extra dependencies in a way
that isn't fully compatible with Webpack. Switching to their build
output file, instead of the file specified in their `package.json`,
makes those errors go away.
2017-05-11 12:07:46 -07:00
Ray Schamp
6c9701f4b2 Merge branch 'develop' into feature/serialization 2017-05-11 13:04:27 -04:00
DD Liu
7841d44ccf Move the block.isMonitored below the block is undefined check 2017-05-11 10:33:46 -04:00
DD Liu
1ea69dd504 Rename functions to be less wordy 2017-05-11 10:20:33 -04:00
Ray Schamp
33fc797868 Select the stage if the project has no sprites 2017-05-11 02:24:10 -04:00
Ray Schamp
635b40ec2b Log parsing errors 2017-05-11 02:22:12 -04:00
DD Liu
b2e0a632e3 add add monitor action 2017-05-10 17:00:08 -04:00
DD Liu
b1355c6b0b Fire remove monitors VM event 2017-05-10 15:47:06 -04:00
DD Liu
138b4631e1 Merge branch 'develop' into updateMonitorsAction 2017-05-10 14:21:31 -04:00
DD Liu
4687fe41fe don't show green flag when monitor running 2017-05-10 14:06:02 -04:00
DD Liu
777d1f3824 add comment to monitor block listener filtering of events 2017-05-10 11:27:55 -04:00
DD Liu
4045ae7338 Merge pull request #558 from fsih/monitors
Will run blocks with boxes checked next to them once per frame in the playground, once the code to emit checkbox events is in scratch-blocks
2017-05-10 11:27:17 -04:00
DD Liu
97bfc90351 add comment to monitor block listener filtering of events 2017-05-10 11:22:03 -04:00
DD Liu
4ae1321252 indicate show visual report or update monitor on the thread 2017-05-09 17:34:13 -04:00
DD Liu
35a208d1d3 make it possible for VM to emit update monitors action 2017-05-09 12:10:11 -04:00
DD Liu
26a5098347 don't show visual report when monitor is running 2017-05-08 16:51:45 -04:00
DD Liu
706e112082 Add a block container for monitors that will run in the sequencer 2017-05-08 15:45:55 -04:00
Rasmus Haglund
d0f1b77209 Copy _customState for now until blocks have init functions 2017-05-05 21:58:18 +02:00
Christopher Willis-Ford
35d0544ce0 Respond to review comments
- Pin `got` and `socket-io.client`
- Finish removing `removeSocket`-related code
2017-05-05 10:37:29 -07:00
Ray Schamp
baee9a2793 Don't clean costume and sound lists
They are already clean, since we don't store the data on them any more.
2017-05-04 13:03:42 -04:00
Ray Schamp
efe31f4825 Fix costume deserialization 2017-05-04 12:41:54 -04:00
Ray Schamp
2181e51c38 Don't store costume data uris on costumes 2017-05-04 12:29:28 -04:00
Ray Schamp
c5cf6d9b40 Use asset id reference on sounds 2017-05-04 12:29:10 -04:00
Christopher Willis-Ford
e096f43487 DeviceManager: add more jsdoc, remove _sockets
It turns out we don't need the Device Manager to centrally track each
socket, so this change removes the Device Manager's `_sockets` property
and related code.
2017-05-03 16:28:06 -07:00
Christopher Willis-Ford
9a9c509e76 Implement a few tests for io/deviceManager 2017-04-28 14:50:57 -07:00
Christopher Willis-Ford
f3c6be2881 Add an I/O device to represent the Device Manager 2017-04-28 13:40:13 -07:00
Ray Schamp
4f59e98bc8 Merge branch 'develop' of https://github.com/LLK/scratch-vm into feature/serialization
# Conflicts:
#	src/virtual-machine.js
2017-04-27 17:53:30 -04:00
Ray Schamp
f785117e1d Lint and fix failing tests 2017-04-27 17:49:57 -04:00
Ray Schamp
c9ce6776aa Get SB3 imports working
For now, store the md5 + extension on costumes in the VM. This way we can load them the same way as we load SB2 assets.
2017-04-27 17:08:06 -04:00
Paul Kaplan
9fce03b16f Merge pull request #547 from paulkaplan/fix-add-sprite-refresh
Fix sprite not drawing after being added
2017-04-27 12:39:59 -04:00
Paul Kaplan
c891268672 Fix sprite not drawing after being added 2017-04-27 11:10:22 -04:00
Ray Schamp
b2ea201707 Don't include asset data in exported JSON 2017-04-26 17:45:36 -04:00
Ray Schamp
2a4af8a9ca Fix up most linting/merge errors 2017-04-26 16:50:53 -04:00
Ray Schamp
a4cdb027ab Merge branch 'develop' of github.com:morantsur/scratch-vm into feature/serialization
# Conflicts:
#	src/playground/index.html
#	src/serialization/sb2.js
#	src/sprites/rendered-target.js
#	src/virtual-machine.js
#	test/unit/serialization_sb2.js
2017-04-26 11:44:53 -04:00
Ray Schamp
83ae96b51b Merge pull request #542 from a49594a/patch-1
Fix missing right quote marks in `blockToXML`
2017-04-24 12:23:55 -04:00
john
e91865fc21 the right quots is mission in blockToXML
the right quote is mission in blockToXML, and it will result in the following code execution errors

        vm.on('workspaceUpdate', function (data) {
            workspace.clear();
            var dom = Blockly.Xml.textToDom(data.xml);
            Blockly.Xml.domToWorkspace(dom, workspace);
        });
2017-04-21 16:36:33 +08:00
Christopher Willis-Ford
c750f53c81 Get Asset and AssetType from storage instance 2017-04-20 16:12:17 -07:00
Ray Schamp
9c34b692c0 Fix ES6 lint after merge 2017-04-19 17:54:52 -04:00
Ray Schamp
e96807b399 Merge branch 'develop' of https://github.com/LLK/scratch-vm into es6
# Conflicts:
#	src/import/sb2import.js
#	src/virtual-machine.js
#	webpack.config.js
2017-04-19 17:54:31 -04:00
Ray Schamp
d2343e3601 Fix up some auto-converted weirdness 2017-04-19 17:36:33 -04:00
Paul Kaplan
8a4c3af18a Merge pull request #535 from paulkaplan/isolate-import
Separate downloading from installation of sprite info
2017-04-19 11:40:30 -04:00
Paul Kaplan
4b5e7a57a5 Fix binding issues 2017-04-19 08:53:07 -04:00
Paul Kaplan
f161640876 Update tests 2017-04-18 11:55:38 -04:00
Paul Kaplan
d86fe6a075 Do not add targets to runtime until they are fully loaded 2017-04-18 09:27:58 -04:00
Ray Schamp
a4f095db5e Use ES6 style classes 2017-04-17 19:42:48 -04:00
Ray Schamp
4455b0694f Fix remaining no-var and no-use-before-define's 2017-04-17 17:15:19 -04:00
Ray Schamp
e01c4ae108 Pass with --fix 2017-04-17 15:10:04 -04:00
Ray Schamp
f646a61c5b Use es6 lint rules 2017-04-17 15:09:57 -04:00
Rasmus Haglund
b693d4f4ef Fix rounded get size reporting 2017-04-08 19:35:29 +02:00
Eric Rosenbaum
092084cc6b Merge pull request #513 from ericrosenbaum/feature/loudness
Add loudness block
2017-04-07 14:06:18 -04:00
Chris Willis-Ford
44623db5e3 Merge pull request #522 from presight/develop
Fix so that size is set in float to ensure backward compatibility with Scratch 2.0
2017-04-06 14:55:08 -07:00
Paul Kaplan
aa2e255add Merge pull request #526 from paulkaplan/report-sound-costume-data
Report sound costume data
2017-04-06 11:45:50 -04:00
Paul Kaplan
8e84b2757e Report costume and sound data in sprite json 2017-04-06 09:37:39 -04:00
spenen
41082a76cd Fixed xml import/export in Playground 2017-04-05 20:23:16 +02:00
spenen
0f0292320b Added size to playground render info 2017-04-05 18:51:16 +02:00
spenen
8c7097f724 Fix #521 so that size is set in float to ensure backward compatibility with Scratch 2.0 2017-04-05 13:46:42 +02:00
Paul Kaplan
771f18e23b Merge pull request #516 from paulkaplan/add-sound-public-api
Expose VM#addSound publicly
2017-04-04 09:05:45 -04:00
Paul Kaplan
2d6eaae01e Update jsdoc 2017-04-03 16:00:58 -04:00
Paul Kaplan
33f436811c return sound in promise 2017-04-03 16:00:31 -04:00
Ray Schamp
57e73a68a6 Add costume dataURI to costumes from storage (#517)
* Add costume dataURI to costumes from storage

Towards #515, LLK/scratch-gui#279

* Fix tests

* Load costumes incrementally

Some of our tests assume that at least some of our costume data is available before the costume data is loaded. So, provide as much costume data as is available.

* Remove unnecessary filter for null costumes

Resolved when we updated to load costumes incrementally.

/ht @cwillisf
2017-04-03 15:58:13 -04:00
Chris Willis-Ford
a4aa3810ae Merge pull request #462 from griffpatch/optimise/reduceGetBlockCalls
Optimise reducegetblockcalls
2017-04-03 13:00:05 -04:00
Paul Kaplan
251244ce9c Expose VM#addSound publicly 2017-04-03 09:33:23 -04:00
Paul Kaplan
828f7bfd1c Merge pull request #514 from paulkaplan/fix-costume-backdrop-loading
Use costume loading from importer in public costume and backdrop loader
2017-03-31 12:52:06 -04:00
Paul Kaplan
70530dbeb3 Do not need to emit targets update, done in setCostume 2017-03-31 12:35:20 -04:00
Paul Kaplan
2559f9557f Resolve to null on error 2017-03-31 11:26:20 -04:00
Eric Rosenbaum
5d14315199 Use log.error 2017-03-29 12:28:20 -04:00
Paul Kaplan
6531dbc2fe Add logger (thanks linter) 2017-03-27 15:12:25 -04:00
Paul Kaplan
df44134e1c Use costume loading from importer in public costume and backdrop loader 2017-03-27 15:04:44 -04:00
Eric Rosenbaum
b74c03dbbd Loudness returns -1 if no audio engine exists
To match Scratch 2.0 behavior
2017-03-27 13:20:44 -04:00
Eric Rosenbaum
1ec1165905 Audio engine decodes sounds 2017-03-27 11:56:28 -04:00
Eric Rosenbaum
2303a1abc5 Remove call to loadSounds from rendered-target initDrawable 2017-03-27 11:56:28 -04:00
Chris Willis-Ford
c8b4871b19 Merge pull request #498 from cwillisf/use-scratch-storage
Load projects & costumes through scratch-storage
2017-03-23 22:10:25 -07:00
Christopher Willis-Ford
10cb97c52e Report missing storage module as an error 2017-03-23 16:03:32 -07:00
Silly Inventor
77775cdadb Switch to using number directly, instead of toNumber for costume switch (#499) 2017-03-23 18:34:04 -04:00
griffpatch
c754cc7cf8 Remove line break 2017-03-22 09:11:53 +00:00
griffpatch
220d854f28 Merge remote-tracking branch 'refs/remotes/LLK/develop' into optimise/reduceGetBlockCalls
# Conflicts:
#	src/engine/execute.js
2017-03-22 08:58:01 +00:00
griffpatch
25429b1192 Tidy up commit and revert direct member access 2017-03-22 08:48:30 +00:00
griffpatch
a5ce0f60cf Merge remote-tracking branch 'refs/remotes/LLK/develop' into optimise/reduceGetBlockCalls 2017-03-22 07:56:04 +00:00
Eric Rosenbaum
144c587e78 Merge pull request #507 from ericrosenbaum/bugfix/clamp-audio-inputs
Clamp audio inputs
2017-03-21 17:48:10 -04:00
Eric Rosenbaum
b4a94c266f Add loudness block 2017-03-20 17:01:44 -04:00
Eric Rosenbaum
106db6a024 Clamp range for each audio effect 2017-03-20 14:53:04 -04:00
Paul Kaplan
8bbb395b35 Add sprite name incrementing and reserved naming 2017-03-20 12:52:57 -04:00
Paul Kaplan
052ecef91c Add string utils with tests 2017-03-20 12:12:38 -04:00
Paul Kaplan
5d2352e471 Add test for skipping rename on blank input 2017-03-20 11:14:25 -04:00
Eric Rosenbaum
c9338f37ed Clamp tempo range
The function in AudioEngine for change tempo can now be removed
2017-03-17 18:13:33 -04:00
Eric Rosenbaum
f2ac365859 Clamp beat durations for play note, play drum and rest 2017-03-17 17:29:23 -04:00
Eric Rosenbaum
1ba7ad0218 Clamp range for “play note” input
Clamp to 36-96, which is C2-C7.

This is a temporary fix to prevent errors, until we have a new instrument player implementation, which may have a different range.
2017-03-17 17:23:53 -04:00
Chris Willis-Ford
3d7f1187e5 Merge branch 'develop' into use-scratch-storage 2017-03-13 15:48:21 -07:00
Christopher Willis-Ford
c945b37288 Fix lint, missing require 2017-03-13 15:44:13 -07:00
Moran
94d2a39cc1 Merge branch 'develop' of https://github.com/LLK/scratch-vm into develop 2017-03-13 18:07:17 -04:00
Christopher Willis-Ford
6ad0f3351b Check if storage module is present before using it 2017-03-13 15:06:28 -07:00
Christopher Willis-Ford
e4fd9d57a2 Fix tests involving scratch-storage
- Attach the storage module to the VM for tests which load projects or
  other assets.
- Move `import_sb2.js` from `test/unit/ into `test/integration` since it
  now depends heavily on `scratch-storage`.
- Skip loading costumes when there is no renderer.
2017-03-09 15:50:43 -08:00
Ray Schamp
b03768cad6 Remove filter toolbox utility (#496)
* Revert "Merge pull request #486 from rschamp/fix-filter-tests"

This reverts commit ba00db897f, reversing
changes made to 739c5deb63.

* Revert "Show Categories that use custom code to load (variables, procedures) (#483)"

This reverts commit 739c5deb63.

* Revert "Merge pull request #461 from rschamp/filter-toolbox"

This reverts commit 343b5bfe8e, reversing
changes made to 370f2c6a47.
2017-03-09 16:41:06 -05:00
Christopher Willis-Ford
c23e9c6bf8 Load projects & costumes through scratch-storage
This also sets up the framework to load sounds through scratch-storage,
to be finished in a later change.
2017-03-09 11:25:55 -08:00
Paul Kaplan
2ebb112d30 Merge pull request #495 from paulkaplan/fix-target-id
Add check to make sure `target` exists
2017-03-08 12:13:10 -05:00
Paul Kaplan
8aaadf2fab Add check to make sure target exists 2017-03-08 11:40:02 -05:00
Paul Kaplan
5b82096670 Clear gfx on stop all 2017-03-06 15:54:52 -05:00
Moran
d8e1d42bf2 Merge branch 'develop' of https://github.com/LLK/scratch-vm into develop 2017-03-03 15:23:43 -05:00
Ray Schamp
bf2303f6de Merge pull request #490 from rschamp/dnd
Add methods for dragging and dropping sprites
2017-03-03 09:50:34 -05:00
Ray Schamp
d0cd9cd897 Add methods for dragging and dropping sprites
* Add `getTargetIdForDrawableId` to translate between renderer picks and VM targets
* Add `startDrag` to stop sprite motion while dragging
* Add `stopDrag` to return sprite motion after dragging
2017-03-03 09:43:31 -05:00
Ray Schamp
319f27a060 Merge pull request #487 from rschamp/draggability
Add draggable property to sprites
2017-03-02 15:56:12 -05:00
Ray Schamp
11e28111c5 Activate click hats on mouse up to match 2.0 2017-03-02 11:32:10 -05:00
Andrew Sliwinski
a4578ba086 Default bitmapResolution to 1 if not provided in costume metadata (#485)
* Default bitmapResolution to 1 if not provided in costume metadata. Resolves GH-484
2017-03-02 11:21:01 -05:00
Ray Schamp
8dadc42857 Add draggable property to sprites
This property should be managed by the VM so that it can be displayed in the sprite info panel in the GUI.
2017-03-01 18:49:17 -05:00
Andrew Sliwinski
7042bdb45c Merge pull request #472 from griffpatch/bug/escapeFromConditionalBranches
Bug - escapeFromConditionalBranches
2017-03-01 16:42:30 -05:00
TheBrokenRail
739c5deb63 Show Categories that use custom code to load (variables, procedures) (#483) 2017-03-01 09:25:11 -05:00
Ray Schamp
390b2373e9 Refactor filter methods into util 2017-02-27 12:57:38 -05:00
Ray Schamp
a9b495fced Filter the playground toolbox 2017-02-27 12:57:38 -05:00
Ray Schamp
99e1b24285 Add rudimentary toolbox filtering method 2017-02-27 12:57:38 -05:00
Ray Schamp
370f2c6a47 Merge pull request #459 from griffpatch/feature/FencingAgain
Feature fencing again
2017-02-24 11:27:10 -05:00
Chris Willis-Ford
a56db95aba Merge pull request #446 from magmaboat/hasownproperty
Perform hasOwnProperty validation
2017-02-22 13:55:54 -08:00
griffpatch
c5eb8ece16 Handle actual looping cases
And it starts to get a little less elegant :/
Wondering if this should not be handled better in another part of the
codebase?
We don't want to be duplicating existing code stepping functionality
locally at the end of the promise script really... What do you think?
2017-02-20 09:40:32 +00:00
griffpatch
362a231279 bug - escape from conditional branches
Execution bug: can't escape from conditional branches that end with a
Promise-resolution-terminating command block (see #464)
2017-02-20 08:20:21 +00:00
griffpatch
a141bfb1b9 Fix lint issues 2017-02-16 10:54:17 +00:00
griffpatch
7bc141e76e Feature Fencing
This is a re-comit after the previous pull was reverted.
2017-02-15 15:59:54 +00:00
Ray Schamp
39158c9d48 Revert "Feature fencing" 2017-02-15 09:40:10 -05:00
griffpatch
75e3f6002b Fencing - Take 3
Dependant on scratch-render pull request.
2017-02-14 09:12:35 +00:00
Christopher Willis-Ford
18107cde7b Reverse target iteration in allScriptsDo
The `allStacksAndOwnersDo` function in Scratch 2.0 runtime iterates
targets in reverse and projects sometimes rely on that for correct
initialization. If, for example, each sprite runs a "go back 999 layers"
or "go to front" block as its first action, the order of execution will
determine the ordering of the layers.

This change makes Scratch 3.0 match the Scratch 2.0 execution order.
2017-02-13 14:45:29 -08:00
Christopher Willis-Ford
bd76395676 Minor cleanup around cloning methods 2017-02-13 14:44:51 -08:00
griffpatch
75a1542fc3 Merge remote-tracking branch 'refs/remotes/origin/develop' into optimise/reduceGetBlockCalls 2017-02-11 15:39:33 +00:00
griffpatch
9aa81d6776 Merge remote-tracking branch 'refs/remotes/LLK/develop' into feature/fencing 2017-02-11 14:30:59 +00:00
griffpatch
4d63dcac3b Rename fencing method 2017-02-11 14:30:18 +00:00
griffpatch
ea59f8cd66 Reduce calls to getBlock 2017-02-11 14:26:23 +00:00
Christopher Willis-Ford
243d68f88b Use Webpack to generate the whole playground
The previous configuration mixed Webpack output with static content in
order to create the playground. This change moves that static content
from `/playground/` into `/src/playground/` and adds a Webpack rule to
copy it into the playground as part of the build.

On the surface this might seem unnecessary, but it provides at least two
benefits:
- It's no longer possible to accidentally load stale build output
  through `webpack-dev-server` in the event of a misconfiguration. This
  was very easy in the previous configuration, and might in fact be the
  only way that `webpack-dev-server` ever worked for this repository.
- It's simpler to ensure that various rules apply to the hand-authored
  content and not build outputs. This includes lint rules, `.gitignore`,
  IDE symbol search paths, etc.
2017-02-10 14:21:37 -08:00
Eric Rosenbaum
99be466aa7 Merge pull request #444 from ericrosenbaum/bugfix/playnote-volume
Pass volume to audioengine playnote
2017-02-10 14:09:55 -05:00
Ray Schamp
fb181d5ce3 Merge pull request #447 from CSnap/fix_keyPressToUpperCase
Switch From Return Null to Return Empty String in keyCodeToScratchKey
2017-02-10 14:00:50 -05:00
griffpatch
246ff28363 Merge remote-tracking branch 'refs/remotes/LLK/develop' into bug/WhiteSpaceEqualsZero 2017-02-10 08:02:43 +00:00
griffpatch
ad5bc1afbd Pull white space checks into function
Clean up code by pulling white space checks into a seperate helper
function
2017-02-10 08:02:11 +00:00
griffpatch
338b2f3458 Merge remote-tracking branch 'refs/remotes/LLK/develop' into bug/WhiteSpaceEqualsZero 2017-02-10 07:43:44 +00:00
Magmaboat
85eee4f18e Perform hasOwnProperty validation 2017-02-09 21:12:47 -05:00
Eric Rosenbaum
cd750b5dda pass volume to audioengine playnote 2017-02-09 14:52:15 -05:00
SillyInventor
8354774fcf Switch from return null to return empty string in keyCodeToScratchKey 2017-02-09 14:09:01 -05:00
Chris Willis-Ford
cde9ebd6bf Merge pull request #442 from griffpatch/bug/PenColorOpacity
Bug pen opacity reset
2017-02-09 07:53:15 -08:00
morant
19275799df Load md5 information from sounds 2017-02-09 10:44:28 -05:00
Andrew Sliwinski
4bb5f30bd8 Merge pull request #410 from griffpatch/optimisation/only-check-for-compatability-once
Optimisation - Only check browser compatability once
2017-02-09 08:17:51 -05:00
Andrew Sliwinski
d650e5393e Merge pull request #439 from griffpatch/bug/StopThisScript
Implement "Stop this script" function
2017-02-09 08:10:00 -05:00
griffpatch
464722f7bd Feature - Fencing of sprites
This change requires that the pull request for scratch-render (Feature
fencing #82) be taken first
2017-02-09 10:02:45 +00:00
griffpatch
a6c56a6e20 Merge remote-tracking branch 'refs/remotes/LLK/develop' into bug/PenColorOpacity 2017-02-09 08:51:10 +00:00
griffpatch
2ba177aa0f Bug - Return pen opacity to opaque
When setting the pen color using pen blocks, the opacity should be reset
to fully opaque if no alpha is supplied.
2017-02-09 08:50:37 +00:00
griffpatch
276ae82769 Fixes Case Insensitive Broadcast Bug
Broadcasts are case sensitive #433
2017-02-08 10:05:48 +00:00
griffpatch
9cb595312e Implement "Stop this script" function
Existing implementation incorrectly terminates the entire thread.
See: http://llk.github.io/scratch-vm/#144142535
2017-02-08 09:44:10 +00:00
griffpatch
cf215bf0bc Fix for the "Empty or white space strings equal 0" bug
See: Empty or white space strings equal 0 #435
2017-02-08 08:38:50 +00:00
griffpatch
7d69ecc005 Optimisation - Only check browser compatability once
Disable use of more accurate timer temporarilly due to performance.
However, with the rearrange and introduction of the 'nowObj' it turns
out most of the delay is in resolving 'self.performance'... so keeping
this cached in nowObj actually mitigates most of the delay.
2017-02-08 08:11:10 +00:00
griffpatch
57c222e94f Merge remote-tracking branch 'refs/remotes/LLK/develop' into optimisation/only-check-for-compatability-once 2017-02-08 08:04:47 +00:00
morant
ed978e3062 Read sprite costume names from JSON, and write currentCostume to JSON 2017-02-07 20:12:55 -05:00
morant
6b545ea16d Update isStage for each sprite when loading JSON, removing things copied from SB2 which are not relevant. 2017-02-07 18:38:44 -05:00
morant
0dc1883e9f Write costumes and sounds to JSON on save 2017-02-07 18:15:11 -05:00
morant
e16f2924a3 Merge branch 'develop' of https://github.com/LLK/scratch-vm into develop 2017-02-07 09:53:17 -05:00
Andrew Sliwinski
92ff57de7d Add basic test coverage for the sound blocks 2017-02-03 17:39:36 -05:00
Eric Rosenbaum
9741dc2e35 Merge branch 'develop' of https://github.com/LLK/scratch-vm into sound 2017-02-02 16:37:07 -05:00
Ray Schamp
727fcc7875 Lint for eslint-config-scratch@3 2017-02-01 16:27:55 -05:00
Eric Rosenbaum
0947775a31 Merge branch 'develop' of https://github.com/LLK/scratch-vm into sound 2017-02-01 10:18:01 -05:00
SillyInventor
1ac89f5aa4 Added new util function that sends tan function infinities correctly
Changed mathop to call new math util
Changed sin & cos to round correctly (to get 0)
Added testing for the new math util function
Added testing for the new mathop functions
2017-01-31 19:05:54 -05:00
Eric Rosenbaum
53127f6320 use customstate for sound volume, instrument, effects 2017-01-31 18:33:32 -05:00
Eric Rosenbaum
95e29ed66a move sound-related code out of rendered target 2017-01-31 18:32:46 -05:00
Andrew Sliwinski
fff63e3af2 Merge pull request #414 from thisandagain/bugfix/413
Bugfix - Continue import if opcode is not found during SB2 import
2017-01-30 15:36:24 -05:00
Andrew Sliwinski
c2a488a197 Merge pull request #408 from griffpatch/optimisation/avoid-negative-index-lookups
Optimisation - Avoid negative index lookups #407
2017-01-30 15:06:02 -05:00
Andrew Sliwinski
249c0d6dca Merge pull request #409 from griffpatch/optimisation/remove-redundant-lookups
Optimisation - Remove redunant lookups
2017-01-30 15:04:42 -05:00
Andrew Sliwinski
7c18b33f99 Continue import if opcode is not found during SB2 import. Resolves GH-413 2017-01-30 14:32:32 -05:00
Eric Rosenbaum
2d8491123e Merge branch 'develop' of https://github.com/LLK/scratch-vm into sound 2017-01-30 11:28:52 -05:00
Eric Rosenbaum
dd30e07052 comments on getSoundIndex 2017-01-30 10:56:50 -05:00
Eric Rosenbaum
9d8819ddc7 audio engine handles rest block 2017-01-30 10:56:31 -05:00
Eric Rosenbaum
cb4209b27a target handles playnote via audio engine 2017-01-30 10:56:06 -05:00
Eric Rosenbaum
5966a46bbd target manages instrument setting 2017-01-30 10:54:24 -05:00
Eric Rosenbaum
4e4b0b86e1 target manages audio effect values 2017-01-30 10:53:12 -05:00
Eric Rosenbaum
01e237a2d5 audio engine loads all sounds 2017-01-30 10:50:28 -05:00
Eric Rosenbaum
4e57ab561d move playsound function to target 2017-01-30 10:45:15 -05:00
Eric Rosenbaum
d5e0d433aa include md5 in sprite sound object 2017-01-30 10:43:28 -05:00