Commit graph

59 commits

Author SHA1 Message Date
Ray Schamp
f6c0064235 All linting other than console statements 2016-10-23 22:20:29 -04:00
Ray Schamp
68ed110b49 Pass with eslint --fix
Resolved whitespace issues, e.g., space-before-function-paren and key-spacing
2016-10-23 12:41:45 -04:00
Tim Mickel
3d57c2e74c Drop single-stepping and pause modes (#294) 2016-10-20 11:42:16 -04:00
Tim Mickel
e49f076fa1 Interpreter fixes, enhancements, features (#280)
* Thread stepping rework; interp.redraw equivalent

* Add turbo mode and pause mode

* Yielding behavior to match Scratch 2.0

* Implement warp-mode procedure threads

* Add check for recursive call

* Inline wait block timer

* Revert to setInterval and always drawing

* Restore yielding in glide

* 30TPS compatibility mode

* 5-call count recursion limit

* Removing dead primitive code

* To simplify, access runtime.threads inline in `stepThreads`.

* Warp mode/timer fixes; recursive check fixes; clean-up

* Add basic single-stepping

* Add single-stepping speed slider

* Allow yielding threads to run in single-stepping

* Restore inactive threads tracking for block glows

* Add clock pausing during pause mode

* Documentation and clean-up throughout

* Don't look for block glows in `thread.topBlock`.

* Add null check for block glows; rename `_updateScriptGlows` to reflect block glowing

* Use the current executed block for glow, instead of stack

* Add more comments to `stepToProcedure`, and re-arrange to match 2.0

* Tweak to Blocks.prototype.getTopLevelScript

* Revert previous

* Fix threads array to be resilient to changes during `stepThreads`

* Restore inactive threads filtering

* Fix typo in "procedure"

* !! instead of == true
2016-10-17 23:23:16 -04:00
Tim Mickel
8c654bbe60 Procedure blocks (#264) 2016-10-13 13:11:26 -04:00
Tim Mickel
0a66c62f6a Mutations in block representation; an unfeatured procedure call (#212)
* Add scratch3_procedures and no-op for defnoreturn

* Add mutation adapter to parse mutations in CREATE/CHANGE events

* Add mutation-to-XML

* Update spec map for Blockly procedure names

* Placeholder for procedure special cases

* Basic stepping to procedures

* Remove extra case

* Validation for changeBlock
2016-10-03 17:43:24 -04:00
Tim Mickel
9744bcbb70 Clones (#150)
* Provide property to Clone to distinguish "original" clones

* Provide method to clone a clone's properties

* Don't report clones in the UI target list

* Add target info to Thread

* Allow hats to skip clones (for green flag)

* Green flag skips clones

* Implement "create clone" and hat

* Pass the runtime to sprites and clones (for start hats)

* Clone disposal; trigger hats after drawable initializes.

* Separate stop threads for target; fix handling of stop button

* Remove extraneous `skipClones` property

* Add global clone limit

* Don't allow a non-clone to delete itself.

* Rename `cloneClone` -> `makeClone`

* Variable updates in runtime.js

* Synchronous drawable initialization (until we put it back to promises)
2016-09-15 19:37:12 -04:00
Tim Mickel
8987330853 Cleanly handle deleting running scripts (#162)
* Cleanly handle deleting running scripts

* Turn off glow request on retire thread; add null check
2016-09-15 13:51:40 -04:00
Tim Mickel
43f3b59f7c Add retireThread to seqeuencer 2016-08-23 15:53:34 -04:00
Tim Mickel
7780b25c46 Project wide rename substack -> branch 2016-08-10 11:43:49 -04:00
Tim Mickel
d4353458ff Don't quit loop when a thread is yielding 2016-07-06 14:16:44 -04:00
Tim Mickel
ad30fa8059 Temporarily remove per-block glow 2016-07-01 11:27:01 -04:00
Tim Mickel
dda4fc8332 Yield frame on an empty substack 2016-07-01 11:24:06 -04:00
Tim Mickel
de6ba08866 Add single-frame yield mode 2016-07-01 10:44:43 -04:00
Tim Mickel
809528abdc Straw-man implementation of targets/sprites/clones 2016-06-30 18:59:17 -04:00
Tim Mickel
ec4567aa8a Simplify logic for Thread status 2016-06-30 18:56:31 -04:00
Tim Mickel
ab6e0d3839 Remove YieldTimers, unused WeDo blocks 2016-06-30 18:56:31 -04:00
Tim Mickel
6daee9a70e Remove VM-locking yield mode per discussion 2016-06-30 18:56:23 -04:00
Tim Mickel
09b9c506a9 Check for blocking case in stepToReporter 2016-06-30 18:56:23 -04:00
Tim Mickel
405ad1044e getBlockingThread_ returns null when none available. 2016-06-30 18:56:23 -04:00
Tim Mickel
d44b806b4f Add blocking yield mode 2016-06-30 18:56:23 -04:00
Tim Mickel
c63747e61b Move stepping logic for reporters to sequencer 2016-06-30 18:56:23 -04:00
Tim Mickel
97f7571c6f Prototype implementation of yielding reporters 2016-06-30 18:56:23 -04:00
Tim Mickel
190208b620 Clean up yield-timers: support multiple, move logic to Threads. 2016-06-30 18:56:23 -04:00
Tim Mickel
a58fa43572 Add reset to numYieldingThreads and comment about YieldTimers 2016-06-10 13:38:35 -04:00
Tim Mickel
0bf9ab59a1 Add implementation for ifElse 2016-06-10 10:40:15 -04:00
Tim Mickel
7cc0c00da6 Correctly deal with empty substacks.
The stack needs to be popped in this situation.
2016-06-10 08:47:54 -04:00
Tim Mickel
559a2a0fab Remove redundant piece of code
The stack is pushed in after the thread finishes (`proceedThread`).
2016-06-10 08:41:44 -04:00
Tim Mickel
526a260101 Simplify execution by removing nextBlock
Everything is managed by the stack, including what the execute() function does.
2016-06-09 17:08:30 -04:00
Tim Mickel
88402ee68c Move popStack to inside execute 2016-06-09 14:45:54 -04:00
Tim Mickel
c21700380f Pull sequencer-related callbacks out of execute 2016-06-09 14:23:34 -04:00
Tim Mickel
6e5ebcf6df Split execution into separate function and file 2016-06-09 13:27:30 -04:00
Tim Mickel
42d03db28b Merge branch 'develop' into feature/eslint-jsdoc
# Conflicts:
#	.eslintrc
#	src/index.js
2016-06-08 17:23:41 -04:00
Tim Mickel
1f1a4941f3 Add .eslintrc rule to check JSDoc syntax
And fix the broken syntax rules
2016-06-08 16:57:08 -04:00
Tim Mickel
c1e30cf2ee Add sequencer-level debug console logs 2016-06-07 21:05:32 -04:00
Tim Mickel
5767e05d56 Add block-by-block feedback to the VM playground 2016-06-07 20:59:34 -04:00
Tim Mickel
9be33089a8 Refactor block management into a separate module. 2016-06-06 15:29:34 -04:00
Tim Mickel
dd53b86b8c Reduce amount of time for executing blocks 2016-05-05 13:09:37 -04:00
Tim Mickel
79b50e5172 Remove block glows from sequencer 2016-05-03 17:18:21 -04:00
Tim Mickel
9363432456 Hacked implementation of broadcasts 2016-05-03 14:57:10 -04:00
Tim Mickel
5f5fe6fafd Fix to check if block still exists 2016-05-03 14:35:02 -04:00
Tim Mickel
8facd64376 Hack for getting argument values 2016-05-03 14:25:12 -04:00
Tim Mickel
5b834667eb Merge pull request #19 from tmickel/feature/repeats
Stacks management, stack frames, repeat, forever
2016-05-03 14:04:50 -04:00
Tim Mickel
548d95b765 Fix attempt to pop from the stack
-Keeps it in newThreads
-Update thread status to STATUS_RUNNING to keep it going
2016-05-03 13:53:52 -04:00
Tim Mickel
852b11519a Fix for empty substacks 2016-05-03 13:45:22 -04:00
Tim Mickel
379b2dec79 Stack management, stack frames, forever and repeat 2016-05-03 13:28:24 -04:00
Christopher Willis-Ford
e1109e8ca6 Improve error exception report for Android Monitor
Android Monitor doesn't support passing multiple arguments to
`console.error`, so this change instead builds a single string for the
report.
2016-05-03 09:48:12 -07:00
Tim Mickel
4c6f08f665 Add mechanism for per-block metadata 2016-05-03 11:45:25 -04:00
Tim Mickel
4de24cfc30 Implement thread status, YieldTimer, block glow, wait 2016-05-03 11:26:28 -04:00
Tim Mickel
3eeccf1970 Update nextBlock to be set before primitive call 2016-05-03 11:26:15 -04:00