Commit graph

793 commits

Author SHA1 Message Date
Christopher Willis-Ford
dd20e09774 Extensions: escape HTML entities in default values
This prevents generation of invalid XML due to characters like '<' or
'>' in fields' default values. Unfortunately the value comes back in its
escaped form, so there's still more work to be done.
2017-10-04 13:00:45 -07:00
Christopher Willis-Ford
e9aed49a05 Make loadExtensionURL handle built-in extensions
WeDo2 and Pen blocks have been converted to internal extensions, and can
now be loaded by giving `loadExtensionURL` the string 'pen' or 'wedo2'
instead of an actual URL.
2017-10-04 13:00:39 -07:00
Christopher Willis-Ford
6757fb6de9 Convert pen blocks into an "internal" extension 2017-10-04 12:54:30 -07:00
Paul Kaplan
e4830dfe51 Merge pull request #686 from paulkaplan/fix-extension-labels
Remove label generation for extensions
2017-10-04 15:37:06 -04:00
Paul Kaplan
0358d6c0c3 Remove label generation for extensions 2017-10-04 15:02:09 -04:00
Christopher Willis-Ford
99b868c0f0 Explain when it's OK to omit <field> element
Also, alphabetize the `ArgumentType` and `BlockType` enums.
2017-10-02 15:29:32 -07:00
Christopher Willis-Ford
772da24d9e Add integration test for a non-worker extension 2017-10-02 12:02:44 -07:00
Christopher Willis-Ford
06252e020b Extensions: add support for color-picker arguments 2017-09-27 00:02:53 -04:00
Christopher Willis-Ford
7a21d619bf Add a way to load an extension without a Worker
The new `_registerInternalExtension` method on the extension manager
will register an extension object (an object with a `getInfo()` method)
with the extension system without sandboxing the object in a Worker.
2017-09-27 00:01:47 -04:00
Chris Willis-Ford
6087b5346c Merge pull request #675 from cwillisf/feature/extensions
Feature/extensions
2017-09-14 13:34:18 -07:00
Paul Kaplan
0f04c99e67 Merge pull request #676 from paulkaplan/duplicate
Add sprite duplication method
2017-09-13 11:57:13 -04:00
Paul Kaplan
a885e7d619 Refactor error throwing 2017-09-12 10:16:26 -04:00
Paul Kaplan
4a7ba534c1 Fix linter 2017-09-11 15:15:30 -04:00
Eric Rosenbaum
b8bd77e394 Merge pull request #674 from ericrosenbaum/feature/pen-transparency
Add pen transparency blocks
2017-09-11 12:41:28 -04:00
Paul Kaplan
81370f7625 Refactor method exports to fix linting and CWF comment 2017-09-11 10:11:48 -04:00
Paul Kaplan
b68b874067 Add sprite duplication method 2017-09-07 11:51:21 -04:00
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