Commit graph

668 commits

Author SHA1 Message Date
Michael "Z" Goddard
50b55a489b
fix stopThisScript inside procedures 2019-07-17 15:02:44 -04:00
Michael "Z" Goddard
e1254bd8c7
elevate stack block id and frame info into thread
- Add pointer member to thread. This is the current executing block.
- Add stackFrame member to thread. This is the current frame
  information like procedure parameters.

This is a step potentially towards stack-less threads. With further
modifications we could have stack and stackFrames be null if a script
does not call a procedure.
2019-06-03 18:13:01 -04:00
Michael "Z" Goddard
ffcd0e6518
remove empty procedure_definetion block
The engine supports blocks that do not have defined functions.
2019-06-03 15:49:11 -04:00
Karishma Chadha
14d2820460
Merge pull request #1648 from mzgoddard/stop-all-next-tick
Stop all next tick
2019-05-15 11:25:15 -04:00
Michael "Z" Goddard
ebdf3865d4
retire new threads if they have no block after the hat 2019-04-19 16:48:09 -04:00
Michael "Z" Goddard
548e28480a
add BlocksRuntimeCache; rewrite startHats 2019-04-19 13:22:22 -04:00
Michael "Z" Goddard
c3f9e0945b
determine _pushThread defaults without Object.assign 2019-04-19 13:22:20 -04:00
Christopher Willis-Ford
a308b1e02f use xmlEscape instead of escape-html for extensions 2019-04-17 16:48:58 -07:00
Karishma Chadha
23136ad9c3
Revert "Cache hat block information for the runtime" 2019-04-17 16:05:24 -04:00
Karishma Chadha
a984d1ae9d
Merge pull request #1930 from mzgoddard/runtime-script-cache
Cache hat block information for the runtime
2019-04-17 15:55:47 -04:00
Michael "Z" Goddard
39b18fedde
stop all removes threads from future execution
Stop all does not **stop** all threads. It stops the active thread and
removes all other threads from executing in the future.
2019-04-11 14:42:10 -04:00
Christopher Willis-Ford
9eef05a7c5 Use new Scratch-specific callback keys for extension buttons 2019-04-02 22:47:26 -07:00
Christopher Willis-Ford
d59c6a0b73 Fix missing arg for extension block separators 2019-04-02 15:23:48 -07:00
Christopher Willis-Ford
bed54bae1f Allow extensions to make buttons 2019-04-01 18:09:09 -07:00
Katie Broida
445ee46984
Merge pull request #1943 from ktbee/clock-timer-compat-fix
Start executing hats before other threads change values
2019-03-29 13:01:28 -04:00
Katie Broida
2a60391fb4 Make Scratch 3 project timer more compatible with Scratch 2 currentMSecs usage
These compatibility changes:
 - Use runtime.currentMSecs for the Clock timer "now" value
 - Start executing hats before other threads change values
 - Update test and fixtures to work with earlier hat execution
 - Add test for hat execution block order
2019-03-29 11:43:37 -04:00
Michael "Z" Goddard
96f3e3414e
add BlocksRuntimeCache; rewrite startHats 2019-03-12 17:09:59 -04:00
Paul Kaplan
2b53b8b647 Allow for situation where we get a move event to attach a shadow.
This happens after adding a custom procedure input to an existing custom procedure call block.
2019-03-11 14:52:40 -04:00
Katie Broida
cff1c2c0a4
Merge pull request #1959 from ktbee/declare-const-once
Declare const once to be reused in for loop
2019-02-25 15:57:52 -05:00
Michael "Z" Goddard
84de5cdc7e
determine _pushThread defaults without Object.assign 2019-02-22 15:56:34 -05:00
Paul Kaplan
3b203a2a9b
Merge pull request #1995 from paulkaplan/is-discrete
Support isDiscrete flag on monitors
2019-02-13 11:19:51 -05:00
Karishma Chadha
59f58b0284
Merge pull request #1933 from ErikMejerHansen/feature/field_type_support
Feature/field type support
2019-02-12 09:59:22 -05:00
Paul Kaplan
6754fa9334 Add isDiscrete to monitor record, update sb2,3 and conversion tests 2019-02-11 11:09:01 -05:00
picklesrus
b904f19c1d Fix loading broadcast messages with special characters for projects that were converted from 2.0. 2019-02-06 16:58:46 -05:00
Karishma Chadha
4e924bf4b5
Merge pull request #1973 from kchadha/fix-variable-characters
Fix variable characters
2019-02-05 17:01:43 -05:00
Karishma Chadha
c796a8b1cc
Merge pull request #1962 from LLK/project-dirty-state-fixes
Project dirty state fixes
2019-02-05 16:38:30 -05:00
Karishma Chadha
d91c19434f Rename util function to be more descriptive. Refactor parameters to remove unused code. 2019-02-04 19:05:28 -05:00
Karishma Chadha
7faddb6c8f Replace xml-unsafe chars in sb3 variables. 2019-02-04 15:32:01 -05:00
Karishma Chadha
166bc37f6f
Merge pull request #1945 from yokobond/fix-message-variable-name-destruction
Escape variable name in XML
2019-02-04 10:10:13 -05:00
Karishma Chadha
13e69bad7b Code cleanup -- move out duplicate .then statements after the next .then (at the higher level) 2019-01-30 16:45:38 -05:00
Karishma Chadha
94cc7e66b6 Remove superfluous runtime not optional warnings. 2019-01-30 15:57:56 -05:00
Karishma Chadha
dfcd09fedc Stop emitting project changes within 'runtime._step()'. Emit project changes in scenarios that were previously taking advantage of runtime._step() 2019-01-30 10:59:25 -05:00
Karishma Chadha
e276bcc9fd Emit project changes when actually editing blocks instead of whenever scratch-blocks events are fired. 2019-01-30 10:59:25 -05:00
Karishma Chadha
a9cf509a55
Merge pull request #1941 from kchadha/add-runtime-to-blocks
Add reference for `runtime` to blocks container
2019-01-30 10:57:45 -05:00
Katie Broida
356a4e7880 Declare const once to be resused in for loop 2019-01-29 10:47:54 -05:00
yokobond
8eee92d41a Escape variable name in XML 2019-01-25 10:31:33 +09:00
Erik Mejer Hansen
c750957465 Convert lint breakage 2019-01-24 13:21:46 +01:00
Karishma Chadha
e5723e299a Add runtime to blocks container since it was getting passed in everywhere where it was being referenced. Update calls to blocks constructor. 2019-01-23 18:18:38 -05:00
Karishma Chadha
98b92be2d7
Merge pull request #1928 from kchadha/timer-perf
Improve the performance of the timer utilitiy
2019-01-23 11:41:41 -05:00
Karishma Chadha
7588f08f3b
Use sequencer runtime directly instead of doing an extra lookup 2019-01-23 11:33:36 -05:00
Erik Mejer Hansen
ceaa3c7857 Add support extensions to define custom field types.
This is done by adding a new element "customFieldTypes" to the extension info structure. Ex:
```
customFieldTypes: {
   angleField: {
      implementation: { fromJson: options => new AngleField(options) },
      output: 'number',
      outputShape: 2,
   }
}
```
Field types are defined by an implementation that has to match what is expected by ScratchBlocks.Field.register and its output and shape.

src/engine/runtime.js has been updated to handle the new "customFieldTypes"-field:
- Existing (global) field types cannot be overridden
- New fields are "namespaced" to the extension in the same way as opcodes are.

Once the custom field type has been picked up by scratch-vm a "EXTENSION_FIELD_ADDED" event is emitted.
It is then up to the hosting app to call ScratchBlocks.Field.register to register the field type with ScratchBlocks. Ex:
```
vm.addListener('EXTENSION_FIELD_ADDED', fieldInfo => {
   this.ScratchBlocks.Field.register(fieldInfo.name, fieldInfo.implementation);
});
```
2019-01-20 21:24:32 +01:00
Eric Rosenbaum
0b251adace
Merge pull request #1763 from evhan55/extensions/disconnect-errors
Various fixes to extension disconnect errors
2019-01-18 16:58:45 -05:00
Evelyn Eastmond
7831256044 Change event names to be more descriptive. Fix some typos. 2019-01-16 20:17:19 -05:00
Evelyn Eastmond
7ec9494804 Making corrections based on discussion with ericr. 2019-01-16 15:54:38 -05:00
Evelyn Eastmond
156b1bc21a Adding new runtime event for intentional peripheral disconnects. 2019-01-16 15:22:58 -05:00
Karishma Chadha
0fa5e9181a
Merge pull request #1839 from mzgoddard/fix-missing-no-param
fix: initialize stack frame params for all procedures
2019-01-16 14:06:38 -05:00
Karishma Chadha
325372233d Improve the performance of the timer utilitiy so that it does not garbage collect multiple times per frame. 2019-01-16 10:09:19 -05:00
Katie Broida
8256b3d5c5 Add early exit for non-existent block 2019-01-15 11:15:23 -05:00
Karishma Chadha
59a865ef47 Create a new addTarget function on the runtime which populates the targets list as well as the executable targets list. 2019-01-14 11:48:11 -05:00
Karishma Chadha
fbee37e915 Populate executable targets when runtime.targets is populated so that scripts don't run before they are supposed to (e.g. before targets are done getting installed). 2019-01-11 14:52:34 -05:00