Nathan Adams
32be19da6d
avm1: Allow gotoAndStop/gotoAndPlay with frame numbers in paths - #915
2020-07-29 13:53:57 -07:00
CUB3D
0fe3a23fd6
core: Correct handling of Object function without args
2020-07-29 13:52:51 -07:00
CUB3D
49bee3fe5c
core: Implement Object() function
2020-07-29 13:52:51 -07:00
CUB3D
fa8b2bca8b
chore: Fix formatting
2020-07-27 12:50:31 -07:00
CUB3D
c1771d7d4e
core: Split function and constructor, tests, fix bug with constructor
2020-07-27 12:50:31 -07:00
CUB3D
4217138d1a
chore: Update comment
2020-07-27 12:50:31 -07:00
CUB3D
7792487181
chore: Fix clippy lints
2020-07-27 12:50:31 -07:00
CUB3D
afb1d6b42f
core: Add global Array() function
2020-07-27 12:50:31 -07:00
CUB3D
22db5ab76a
core: Populate function when creating a constructor
2020-07-27 10:38:50 -07:00
CUB3D
01b7e73459
core: Fix build
2020-07-27 10:38:50 -07:00
CUB3D
adb9af5a62
core: Update arguments
2020-07-27 10:38:50 -07:00
CUB3D
7b66968ebb
core: Cleanup
2020-07-27 10:38:50 -07:00
CUB3D
5f87b1361b
core: Update NewMethod action and update globals to use constructor
2020-07-27 10:38:50 -07:00
CUB3D
e83dbf7327
core: Split construct and call for function objects
2020-07-27 10:38:50 -07:00
Nathan Adams
337e3292dd
avm1: Treat MovieClipLoader _listeners as an array, not an object
2020-07-27 05:36:28 -07:00
Nathan Adams
e98b953088
avm1: Use avm_warn and avm_error in all of avm1
2020-07-27 04:13:31 -07:00
Nathan Adams
10a739f714
avm1: Always assign function names (where possible) when running in avm_debug, not just when spamming output
2020-07-27 04:13:31 -07:00
Mike Welsh
e5480ee9b2
chore: Use matches! to fix clippy lint
2020-07-27 04:13:11 -07:00
Nathan Adams
f1f04e0e7a
avm1: Fixed a bunch of cases where we're using _level0 instead of current object ( fixes #926 )
2020-07-27 01:40:28 -07:00
Nathan Adams
cf61f8a4d3
avm1: Add failing test for registerClass in a loaded movie
2020-07-27 01:40:28 -07:00
Mike Welsh
8ac2ad9b40
avm1: Store movie URL on load and implement _url (merge #912 )
2020-07-27 01:38:28 -07:00
Mike Welsh
07122dc931
avm1: Implement Key listeners
2020-07-24 14:32:41 -07:00
Mike Welsh
85d9caef56
avm1: All properties of _global are DontEnum
2020-07-23 22:58:58 -07:00
Mike Welsh
794dc69809
avm1: Implement isFinite
2020-07-23 22:58:58 -07:00
David Wendt
aed47d458d
Level loads in GetURL2 should also propagate origin information.
2020-07-23 23:09:08 -04:00
David Wendt
9b9d4076fe
Expose movie URL to ActionScript.
2020-07-23 23:02:55 -04:00
David Wendt
6998dafdb9
Store an origin URL on every movie that is loaded.
2020-07-23 23:02:50 -04:00
Nathan Adams
7f7281493f
core: Allow toggling avm_debug output on and off with ctrl+alt+d, defaults to off
2020-07-23 19:14:32 -07:00
Mike Welsh
1709e76409
avm1: Implement LoadVars
2020-07-23 03:00:19 -07:00
Mike Welsh
74cb8609c1
avm1: Support loading into _level in GetURL2
...
Calling loadMovieNum with a variable parameter compiles into a
GetURL2 call with a `_level` window target parameter. Previously
this triggered Ruffle to try to navigate to the SWF. Now it
properly loads the SWF inside the current movie.
2020-07-23 02:08:48 -07:00
Nathan Adams
f0980301da
avm1: Implement arguments.callee
2020-07-22 15:57:45 -07:00
Nathan Adams
4a56cb1062
avm1: Make virtual properties store Object instead of Executable, so we can refer to the callee
2020-07-22 15:57:45 -07:00
Nathan Adams
f4ab57d6e0
avm1: Make property watchers take Object, not Executable, so we can track the callee
2020-07-22 15:57:45 -07:00
Nathan Adams
9ae10b6387
avm1: Made AvmString debug actually show contents of the string
2020-07-22 13:23:57 -07:00
Nathan Adams
3b2b7c226c
avm1: Fix gc unsoundness with missing collects in SystemPrototypes
2020-07-21 09:43:07 -07:00
Nathan Adams
0e0be34e17
avm1: Fix compile error when using avm_debug flag
2020-07-21 09:42:41 -07:00
Nathan Adams
d5deeee1b7
avm1: Properly implement the arguments object, it's an array
2020-07-21 07:49:00 -07:00
Mike Welsh
1a5d7fe452
avm2: Initial AVM2 interpreter (merge #404 )
...
Initial work on the AVM2 interpreter.
2020-07-19 19:59:05 -07:00
Mike Welsh
ae7db80ea3
avm1: Move getURL to MovieClip.prototype ( fix #804 )
...
For example, _root.getURL should work.
2020-07-18 01:03:47 -07:00
Mike Welsh
8ecae5a87f
avm1: duplicateMovieClip copies clip events
...
Clip events should be copied from the source clip to the newly
created clip. Fixes objects remaining onscreen in #815 .
2020-07-17 20:49:05 -07:00
Mike Welsh
7c52a1bcc4
avm1: Accept path strings in ActionCall ( fix #832 )
2020-07-14 23:34:21 -07:00
Mike Welsh
b43fdca4ad
avm1: resolve_text_field_variable -> resolve_variable_path
2020-07-14 23:34:21 -07:00
David Wendt
2021cec9d3
Impl `Copy`, `Eq`, `PartialOrd`, `Ord`, and `Hash` for `AvmString`.
2020-07-13 22:09:34 -04:00
Nathan Adams
fba8ccda81
avm1: Rename Avm1String to AvmString
2020-07-13 10:12:54 -07:00
Nathan Adams
d8f043fa1a
avm1: Value::coerce_to_string returns an Avm1String, as it can avoid a clone-and-reallocate
2020-07-13 10:12:54 -07:00
Nathan Adams
f0ef68cb16
avm1: Reenabled paused string-value tests during string refactor
2020-07-13 10:12:54 -07:00
Nathan Adams
c60b2cf4fc
avm1: Implement From<&'static str> for Value
2020-07-13 10:12:54 -07:00
Nathan Adams
e03e3f6c4e
avm1: Allow Avm1String to contain &'static str
2020-07-13 10:12:54 -07:00
Nathan Adams
ad733f2f21
avm1: Add Avm1String which wraps Gc<String>
2020-07-13 10:12:54 -07:00
Nathan Adams
016b9db3c5
avm1: Change Value::String(String) to Value::String(Gc<String>)
2020-07-13 10:12:54 -07:00
CUB3D
0591c0fe4b
core: Add functions to prototypes
2020-07-12 15:25:58 -07:00
CUB3D
ab022b66e9
chore: Format and cleanup clippy lints
2020-07-12 15:25:58 -07:00
CUB3D
83cca044ad
core: Add tests for ContextMenu and ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
46cd8eb507
core: Add ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
04ca652f98
core: ContextMenu fully implemented
2020-07-12 15:25:58 -07:00
CUB3D
73a98c7f78
core: Implement copy() for ContextMenu
2020-07-12 15:25:58 -07:00
CUB3D
f3aa6f7f01
core: Add stub of ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
c8fefc56b5
core: Add stubs for context menu
2020-07-12 15:25:58 -07:00
Nathan Adams
180891c58e
avm1: Add impl_custom_object!() macro to simplify custom object types
2020-07-10 16:48:05 -07:00
Nathan Adams
eb94cc54b2
chore: Move avm1 objects to their own module, we have plenty of them now
2020-07-10 16:48:05 -07:00
Mike Welsh
3322c2d916
avm1: Implement updateAfterEvent
2020-07-10 14:38:48 -07:00
Mike Welsh
98e7da7d93
avm1: Implement setInterval
2020-07-10 14:38:48 -07:00
Mike Welsh
a1ff80bb18
avm1: Object.watch is case insensitive on SWFv6
2020-07-10 12:02:26 -07:00
Nathan Adams
8a0430d744
avm1: Implement Object.watch & Object.unwatch ( #268 )
2020-07-10 12:02:26 -07:00
Nathan Adams
ecbab536b5
avm1: Respect ScriptLimits for recursion depth, and use that in infinite_recursion_function
2020-07-08 14:47:38 -07:00
Nathan Adams
2b30fd32b7
avm1: Activation depth can be up to u16.
2020-07-08 14:47:38 -07:00
Nathan Adams
51ec5739c6
avm1: Throw errors when functions (user-called, or special) go too deep
2020-07-08 14:47:38 -07:00
Nathan Adams
aa98c2c24f
avm1: Track the reason for executions, if it's a function call vs
...
something special, like a getter
2020-07-08 14:47:38 -07:00
Nathan Adams
65396ba87a
avm1: All errors are ignored during getters or setters
2020-07-08 14:47:38 -07:00
Nathan Adams
3ee1902117
avm1: Don't log errors at every Activation, only at the "root" frames
2020-07-08 14:47:38 -07:00
Nathan Adams
8218e14824
avm1: Remove unused field is_executing from Activation
2020-07-08 14:47:38 -07:00
Mike Welsh
bd7f986594
avm1: Allow overwriting _parent
2020-07-05 15:15:31 -07:00
Mike Welsh
ad6e2ceed4
avm1: Remove TObject::is_property_overwritable
...
Local virtual properties take precedence over prototype/parent
scopes, even for read-only propreties.
2020-07-05 15:15:31 -07:00
Mike Welsh
1240c79f70
avm1: StageObject::has_property should return true for _x, etc.
2020-07-05 15:15:31 -07:00
Mike Welsh
6feb266576
avm1: with(undefined) or with(null) is ignored
2020-07-05 15:15:31 -07:00
CUB3D
00d55b05a0
chore: Fix formatting
2020-07-05 13:49:59 -07:00
CUB3D
64eed4def9
chore: Cleanup
2020-07-05 13:49:59 -07:00
CUB3D
ab58cff8b3
core: Add tests for ColorTransform and cleanup code
2020-07-05 13:49:59 -07:00
CUB3D
0dcbd05f5d
chore: Fix formatting
2020-07-05 13:49:59 -07:00
CUB3D
68eb6a6342
core: Fix ColorTransformObject virtual prototype setters
2020-07-05 13:49:59 -07:00
CUB3D
73e9dc1a82
core: Refactor ColorTransform
2020-07-05 13:49:59 -07:00
CUB3D
26ae182584
core: Update to reflect avm changes
2020-07-05 13:49:59 -07:00
CUB3D
431cc532be
core: ColorTransform no longer passed through engine ColorTransform object
2020-07-05 13:49:59 -07:00
CUB3D
a8b1be2afa
core: Remove useless to_owned in color_transform
2020-07-05 13:49:59 -07:00
CUB3D
c0315dce3f
chore: Format
2020-07-05 13:49:59 -07:00
CUB3D
a8f7638d99
core: Implement ColorTransform
2020-07-05 13:49:59 -07:00
Nathan Adams
c50c835790
avm1: Made Executable::Action take in a Gc to Avm1Function, reducing the size of the struct significantly
2020-07-03 18:47:34 -07:00
Nathan Adams
c036e2cf88
avm1: Made f64_to_string return Cow<str> instead of String, as we sometimes return static values
2020-07-03 17:30:59 -07:00
Nathan Adams
938d644d7d
core: Made PropertyMap::insert take &str instead of String, as ownership isn't always needed
2020-07-03 17:30:59 -07:00
Nathan Adams
f4921fad45
core: Made PropertyMap::entry take &str instead of String. We often don't need ownership here.
2020-07-03 17:30:59 -07:00
Nathan Adams
b5c06be8a2
avm1: Anonymous function names for debugging when not in debug mode
2020-07-03 17:24:20 -07:00
Nathan Adams
51321713b5
avm1: Show stack frame with the avm_debug feature
2020-07-03 17:24:20 -07:00
Nathan Adams
c976cf8efb
avm1: Replace action.avm() with activation.avm to help with borrow checker in next commit
2020-07-03 17:24:20 -07:00
Jon Pacheco
48c65f02a1
avm1: Implement Error object (see #251 )
2020-07-02 20:58:01 -07:00
Mike Welsh
b05da5ef0f
avm1: CastOp fails for primitive values
2020-07-01 17:30:56 -07:00
Nathan Adams
d86761db5d
avm1: Implement try {..} catch {..} finally {..} - #731
2020-07-01 17:30:56 -07:00
Nathan Adams
7c0b0a7a57
avm1: Fix instanceof checks with primitives
2020-07-01 16:36:54 -07:00
Nathan Adams
d1732dd3d6
avm1: Returning from with{} should return from the parent activation
2020-07-01 16:21:43 -07:00
Nathan Adams
8bc3eedc43
avm1: Rename StackFrame to Activation now that they're merged
2020-07-02 00:09:43 +02:00
Nathan Adams
9b66b496d0
avm1: Fix double-borrow when calling a getter that calls another method
2020-07-01 18:53:16 +02:00
Nathan Adams
987375299b
avm1: Replace 'run_in_avm' with just building a StackFrame object, letting Rust borrowchecker do our stack management for us
2020-06-30 21:57:51 +02:00
Nathan Adams
47a806a5ee
avm1: Removed errors that are no longer possible to run into
2020-06-30 21:28:32 +02:00
Nathan Adams
a989aa235a
avm1: We don't need to lock StackFrames anymore, the borrow checker will steer us right
2020-06-30 21:26:57 +02:00
Nathan Adams
2288919663
avm1: We don't need to store data in StackFrame, it's only used when actually running data
2020-06-30 21:24:46 +02:00
Nathan Adams
45c3967deb
avm1: Merge Activation into StackFrame
2020-06-30 21:08:42 +02:00
Nathan Adams
d889b98043
avm1: Merge Activation::from_function and Activation::from_action as they're identical
2020-06-30 20:34:05 +02:00
Nathan Adams
6e4dd506da
avm1: Activation doesn't need to be in a GcCell
2020-06-30 20:31:49 +02:00
Nathan Adams
4d24bc7f09
avm1: Removed pc from Activation, it's no longer needed
2020-06-30 19:42:18 +02:00
Nathan Adams
3e9c380ba1
avm1: Remove is_function from Activation, it's no longer needed
2020-06-30 19:40:21 +02:00
Nathan Adams
ec4affcf10
avm1: Use child activations when already running from another activation
2020-06-29 10:13:59 +02:00
Nathan Adams
aaa082fb60
avm1: Replace run_with_stack_frame with run_in_avm
2020-06-29 10:13:57 +02:00
Nathan Adams
0dd2ece371
avm1: Introduce parents to StackFrame, and move run_activation from avm1 to StackFrame
2020-06-29 10:12:17 +02:00
Nathan Adams
9b630bd305
avm1: Remove ReturnValue, it's no longer needed
2020-06-29 10:12:16 +02:00
Nathan Adams
ab4304d634
avm1: Properly and more explicitly work around the double-borrow issue in setters
2020-06-29 10:10:38 +02:00
Nathan Adams
f85684fec0
avm1: Move current_swf_version and is_case_sensitive from avm1 to stackframe
2020-06-29 10:10:11 +02:00
Nathan Adams
d470c52aea
avm1: Move root_object, target_clip_or_root, target_clip and base_clip from avm1 to StackFrame
2020-06-29 10:09:57 +02:00
Nathan Adams
ca305684db
avm1: Removed unused return_value on Activation
2020-06-29 10:09:40 +02:00
Nathan Adams
da8ca1379f
avm1: Change from 'avm, context' to 'activation, context' and restructured to support this
2020-06-29 10:09:38 +02:00
Nathan Adams
a841743962
avm1: Make current_stack_frame return a Result for easy chaining
2020-06-29 10:07:48 +02:00
Nathan Adams
cdfd58d619
avm1: Move register get/setting from avm1 to StackFrame
2020-06-29 10:07:31 +02:00
Nathan Adams
63e66c29eb
avm1: We already have our stack frame, don't refetch it in actions
2020-06-29 10:07:14 +02:00
Nathan Adams
3a093dddbd
avm1: Run activations immediate, not queued up for some-time-later
2020-06-29 10:07:12 +02:00
Nathan Adams
10b8f4abaf
avm1: Handle stack poping in avm
2020-06-29 08:55:50 +02:00
Nathan Adams
84a5fae43f
avm1: Only perform stack-frame adjustments in one place, not scattered throughout actions
2020-06-29 08:51:34 +02:00
Nathan Adams
9109d89daa
avm1: Allow for frame control in StackFrame from any action
2020-06-29 08:51:34 +02:00
Nathan Adams
329716bfe7
avm1: Don't refetch activation.data every action
2020-06-29 08:51:33 +02:00
Nathan Adams
af72f68f0f
avm1: Run entire stack frames at once
2020-06-29 08:51:33 +02:00
Nathan Adams
c6b9de883f
avm1: Add Activation to StackFrame, removing lots of get-and-unwraps
2020-06-29 08:51:33 +02:00
Nathan Adams
4d76e8b24d
avm1: Move all actions from Avm1 to a new StackFrame
2020-06-29 08:51:33 +02:00
Mike Welsh
3bc3d4acb2
text: Fix bindings being incorrectly cleared in StageObject
...
Call to `Vec::retain` was backwards, causing bindings to be
incorrectly cleared/not cleared when a text field was removed.
2020-06-28 23:38:58 -07:00
Mike Welsh
7eeda7d93e
chore: clippy
2020-06-28 18:36:10 -07:00
Mike Welsh
b40f9d4c1a
avm1: Implement TextField.html
2020-06-28 18:36:10 -07:00
Mike Welsh
618fa11acb
avm1: Implement text field variable binding
2020-06-28 18:36:10 -07:00
Mike Welsh
12fca71b21
avm1: Move StageObjectData behind a GC pointer
2020-06-28 18:36:10 -07:00
Mike Welsh
a922fd559f
avm1: Add EditText variable property
...
Add `EditText::variable` as well as `TextField.variable` property.
This commit only adds the getter/setter and does not yet add the
binding functionality.
2020-06-28 18:36:10 -07:00
Mike Welsh
ccf33eedf6
avm1: Array indices are enumerable
2020-06-27 20:25:45 -07:00
Mike Welsh
ecc54d01f7
avm1: Disallow setting "" property
...
object[""] has no effect.
2020-06-27 20:25:45 -07:00
Mike Welsh
ef82fc472e
avm1: Object.hasOwnProperty should coerce_to_string
2020-06-27 20:25:45 -07:00
Nathan Adams
463b79f063
avm1: Implement Action::Throw
2020-06-25 02:03:15 -07:00
Nathan Adams
70e4a40f01
avm1: Allow for user errors inside avm1::error::Error
2020-06-25 02:03:15 -07:00
Mike Welsh
81d75c6256
text: Text formatting for EditText fields (merge #615 )
...
First implementation of HTML parsing and formatting for text fields.
2020-06-24 23:06:11 -07:00
Mike Welsh
5d9701313e
text: Fix TextField.embedFonts setter
2020-06-24 22:46:59 -07:00
David Wendt
d281452fe1
Expose the device font flag to AVM1 code.
2020-06-24 22:55:50 -04:00
Mike Welsh
5a7012923b
avm1: Move TextField methods into functions
2020-06-24 11:11:00 -07:00
Mike Welsh
d2702464a5
avm1: TextField properties are emumerable and deletable
2020-06-24 11:02:21 -07:00
CUB3D
a5b0a196cc
core: Update to use updated value conversion functions
2020-06-24 01:57:15 +01:00
CUB3D
f03093528c
core: Add shared object cache and saving on exit
...
On the desktop player, shared objects will now be flushed on quit.
Attempting to retrieve an existing shared object will now return a
reference to the existing one.
2020-06-24 01:46:42 +01:00
CUB3D
166cb60d89
chore: Clean up useage of unwrap
2020-06-24 01:46:07 +01:00
CUB3D
fce8e8b7de
chore: Fix build
2020-06-24 01:46:07 +01:00
CUB3D
8a65ac764b
chore: Clean up comments
2020-06-24 01:46:07 +01:00