relrelb
24db13ae1e
html: Handle self-closing tags
...
"br" and "sbr" tags can appear in a self-closing form (i.e. `<br />`).
Commit 3cab464026
forgot to handle this.
2021-11-15 23:28:51 +02:00
relrelb
855bc721a8
html: Restore handling of "br" tags
...
This fully reverts commit 2119ce9
.
Seems like Flash does handle "br" tags, but ignores them under some
unknown circumstances (e.g. setting `htmlText` in AVM1).
For now handle "br" tags unconditionally.
2021-11-15 23:28:51 +02:00
relrelb
73f5982cad
avm1: Fix `Sound.setVolume()` and `Sound.setPan()` with no arguments
...
Instead of coercing `undefined` into `f64` (which results `NaN` in SWF7+),
treat the missing value argument as `0`.
2021-11-14 20:25:45 +02:00
relrelb
df514f319a
html: Restore handling of "sbr" tags
...
This partially reverts commit 2119ce9821
,
only restoring "sbr" tags handling because Flash seems to ignore only
"br" tags.
2021-11-13 12:11:48 +02:00
relrelb
2119ce9821
html: Remove handling of "br" and "sbr" tags
...
Seems like Flash just ignores them.
2021-11-13 10:21:41 +02:00
relrelb
12e8d3a82f
html: Fix typo
2021-11-13 10:21:41 +02:00
David Wendt
c0874f445d
avm2: Functions are functions.
2021-11-11 17:12:49 -07:00
David Wendt
7dd9776d40
avm2: Implement `uint`, `Number`, and `Boolean`'s constructors, too.
2021-11-11 16:34:11 -07:00
David Wendt
7cc7f0fe7f
avm2: Impl `int`'s instance initializer.
2021-11-11 16:34:11 -07:00
David Wendt
be3e126ebb
avm2: Stub the `Sprite` constructor as just creating a `MovieClip`.
2021-11-11 16:33:33 -07:00
Tal Hayon
7ed38850fd
core: implement displayState for Stage in avm1/2
2021-11-11 16:20:05 -07:00
relrelb
7b95441874
core: Re-use `EditText::html_text` in `EditText::propagate_text_binding`
2021-11-11 08:05:33 +02:00
relrelb
cf05137c1f
core: `EditText::html_text` cannot fail
2021-11-11 08:05:33 +02:00
relrelb
848b721165
xml: Remove `XmlNode::walk`
2021-11-11 08:05:33 +02:00
relrelb
c4729d733c
core: Avoid one usage of `FormatSpans::replace_text`
...
Use `FormatSpans::from_text` instead.
2021-11-11 08:05:33 +02:00
relrelb
3cab464026
core: Use `quick-xml` directly when creating `FormatSpans`
2021-11-11 08:05:33 +02:00
relrelb
8c64951b15
core: Remove unused `EditText::document`
2021-11-11 08:05:33 +02:00
relrelb
a900aae63e
core: Make `EditText::set_html_text` accept a `&str`
2021-11-11 08:05:33 +02:00
relrelb
0787662079
core: Make `EditText::set_text` accept a `&str`
2021-11-11 08:05:33 +02:00
David Wendt
67e7526517
avm2: `EventDispatcher` contains an undocumented `toString` method.
2021-11-10 18:16:26 -07:00
David Wendt
360ae1f044
avm2: Private classes in different scripts are allowed to share the same name without conflicting.
2021-11-10 17:43:02 -07:00
David Wendt
60eb88b326
avm2: Note currently incorrect behavior intended to be fixed in a future PR.
2021-11-09 17:28:33 -07:00
David Wendt
4cfa3253d5
avm2: Impl `Proxy`'s enumeration-related methods.
2021-11-09 17:28:33 -07:00
David Wendt
4289f89350
avm2: Split out enumerant values into a separate method as well.
2021-11-09 17:28:33 -07:00
David Wendt
297526269c
avm2: Allow objects to assign arbitrary enumerant indexes, by having objects drive the enumeration process rather than just counting from one
2021-11-09 17:28:33 -07:00
David Wendt
1170385c3b
avm2: Implement `Proxy.hasproperty`
2021-11-09 17:28:33 -07:00
David Wendt
427b2bf17a
avm2: Implement `Proxy.deleteproperty`
2021-11-09 17:28:33 -07:00
David Wendt
503dc08594
avm2: Refactor `Object.delete_property` to work similar to get/set
2021-11-09 17:28:33 -07:00
David Wendt
e67ca1afe0
avm2: Implement `Proxy.callproperty`
2021-11-09 17:28:33 -07:00
David Wendt
301fd1020f
avm2: Implement `Proxy.setproperty`
2021-11-09 17:28:33 -07:00
David Wendt
8f47f494e7
avm2: Implement `Proxy`'s `getproperty` behavior.
2021-11-09 17:28:33 -07:00
David Wendt
f05e92c974
avm2: Fix `RTQNameL`'s parameters being popped backwards
2021-11-09 17:28:33 -07:00
David Wendt
d225d03043
avm2: Implement `flash.utils.Proxy`
2021-11-09 17:28:33 -07:00
David Wendt
51af0f708f
core: Remove commented-out helper methods.
2021-11-09 16:48:29 -07:00
David Wendt
c78e5e31fd
core: Store `DisplayObjectBase` in `InteractiveObjectBase`.
...
This also necessitated removing the `impl_display_object` family of macros, as you cannot name a field of a field in a macro expression. I tried. So instead I've reverted to standard default method inheritance, in the same way we did with AVM2 objects.
2021-11-09 16:48:29 -07:00
David Wendt
2ea35dcbb1
avm2: Enforce the `mouseEnabled` flag.
2021-11-09 16:48:29 -07:00
David Wendt
b2e0586252
docs: Document the current event-handling flow in `Player`.
2021-11-09 16:48:29 -07:00
David Wendt
bb8ca8f136
core: Move `handle_clip_event` to `TInteractiveObject`, and split it into three pieces.
...
`handle_clip_event` is now a default trait method that calls three methods in order:
* `filter_clip_event`, to determine which events that either this object or it's children may handle
* `propagate_to_children`, to check if any children of this object want to handle an event. (This also includes AVM2 button states, which are not technically "children" in the usual sense...)
* `event_dispatch`, which does the actual "object reacts to an event" bit if no child handles the object.
These roughly correspond to phases of existing event-handling objects pre-`InteractiveObject`.
2021-11-09 16:48:29 -07:00
David Wendt
95f105aadd
core: `Stage`, `EditText`, and `Avm2Button` should also be interactive objects.
2021-11-09 16:48:29 -07:00
David Wendt
e71c749db5
avm2: Implement accessors for new `InteractiveObject` flags.
2021-11-09 16:48:29 -07:00
David Wendt
618c32f859
core: Add `InteractiveObject` trait for objects that can receive input events
2021-11-09 16:48:29 -07:00
relrelb
89718475df
avm2: Introduce `TextFormatObject`
2021-11-09 16:21:35 -07:00
relrelb
9308513ae8
chore: Appease clippy
2021-11-06 10:44:01 +02:00
David Wendt
6c7d10e4d4
avm2: Requests for instance traits instead resolve to an associated public-namespace method
2021-11-02 16:54:38 -06:00
Mike Welsh
c6e6de4a47
core: Unclosed fills in Drawing API should auto-close
2021-10-31 19:01:55 -07:00
Mike Welsh
8cf0f9b7b1
avm1: duplicateMovieClip copies drawings ( fix #5487 )
...
duplicateMovieClip also clones the drawing API state of the clip,
including in-progress drawing and style info.
Fixes #5487 .
2021-10-31 19:01:55 -07:00
Mike Welsh
0e4b0f7c62
avm1: Allow duplicateMovieClip on dynamically created clips
...
Previously duplicating a clip created with `createEmptyMovieClip`
would fail.
2021-10-31 19:01:55 -07:00
David Wendt
b0b1c79143
avm2: Split the `slot_id` and `disp_id` accessors.
2021-10-31 00:52:58 -07:00
David Wendt
0cc55df5ca
avm2: Remove `FINAL` flag and associated machinery as we now validate traits at class construction time.
2021-10-31 00:52:58 -07:00
David Wendt
a1be42abfb
avm2: Exempt system classes from class validation.
2021-10-31 00:52:58 -07:00
David Wendt
dd4717e08e
avm2: Move `final`/`override` check enforcement to class construction time.
...
This is an O(n^2) algorithm, which sucks, but at least it only runs once per class rather than per *object allocation*.
2021-10-31 00:52:58 -07:00
David Wendt
8d40e41ee1
avm2: Make `Executable` zero-alloc
2021-10-31 00:52:58 -07:00
David Wendt
cea3997396
avm2: Remove `superclass_object` and related parameters from `TObject.call` and other downstream functions.
...
Turns out there's a *lot* of downstream functions.
2021-10-31 00:52:58 -07:00
David Wendt
272b1784b8
avm2: Don't skip method binding in `callproperty` if the method requires `arguments`, as it may access `callee`.
2021-10-31 00:52:58 -07:00
David Wendt
1b5869e15a
avm2: Preserve ability to `callmethod` on slot IDs that have not yet been bound, by binding them at that time.
2021-10-31 00:52:58 -07:00
David Wendt
d0d19bcf38
avm2: Stop instantiating methods at object construction time.
2021-10-31 00:52:58 -07:00
David Wendt
bfbd2271b0
avm2: Allow uninstantiated methods to be created on-the-fly.
2021-10-31 00:52:58 -07:00
David Wendt
3562c50dee
avm2: `call_property` on classes should also call unbound methods
2021-10-31 00:52:58 -07:00
David Wendt
477add3dd0
avm2: Add `ClassObject` methods for pulling unbound methods or bound method objects from the class or instance.
2021-10-31 00:52:58 -07:00
David Wendt
9c031070b3
avm2: `ClassObject` should include class traits in `TObject` methods that reference the current object's traits.
2021-10-31 00:52:58 -07:00
David Wendt
74fb965301
avm2: Call methods directly if we can find a class with an instance trait matching it's name.
2021-10-31 00:52:58 -07:00
David Wendt
039777c41e
avm2: `Object.hasOwnProperty`, `propertyIsEnumerable`, and `setPropertyIsEnumerable` only work with public-NS properties.
2021-10-30 11:44:29 -06:00
relrelb
9aed0e7db4
core: Reset `TextFormat.color` alpha
...
Since `TextFormat.color` should preserve the alpha value, and the AVM1
getter/setter no longer reset it, we need to reset it in other places:
* `TextField.textColor` setter.
* `EditText` SWF tag handling.
* HTML parsing.
And to set it explicitly to 255 in `LayoutBox::as_renderable_text`.
2021-10-30 10:03:36 -07:00
relrelb
34d1fa5226
avm1: Introduce `TextFormatObject`
...
`TextFormat` objects differ from regular objects in that
`TextField.setTextFormat` and `TextField.setNewTextFormat` accept
only the former, and ignore the latter.
Also, `TextFormat.prototype` has native accessors that coerce the
values on get/set.
2021-10-30 10:03:36 -07:00
Mike Welsh
bc801b2b32
avm1: GotoFrame2 after bogus SetTarget affects _root
...
For example, `tellTarget("bogus!!!") { var n = 2; gotoAndPlay(n); }`
should cause the _root clip to go to frame 2.
Fixes the character freezing in Steppenwolf 3-1 mentioned in #4585 .
2021-10-28 10:18:18 -07:00
Mike Welsh
2e3154baa0
avm1: tellTarget should fail if base clip is removed
...
`tellTarget` to other clips should fail if the current base clip
has been removed. All properties of the clip return `undefined`
at this point, so traversing the target path should fail.
Fixes soft-lock in Steppenwolf 2-1 as mentioned in #4452 .
2021-10-28 10:18:18 -07:00
EmperorBale
5ac8e75239
avm2: Make ObjectEncoding C-like
2021-10-25 16:32:55 -07:00
EmperorBale
bab74f83fc
avm2: Remove all unsafe from bytearray
2021-10-25 16:32:55 -07:00
EmperorBale
9126c9297c
avm2: Derive PartialEq and Eq for enums
2021-10-25 16:32:55 -07:00
EmperorBale
69f2002d2a
avm2: Add todo comment
2021-10-25 16:32:55 -07:00
EmperorBale
da601a4984
chore: Improve safety comments
2021-10-25 16:32:55 -07:00
EmperorBale
3b2a84ef9b
chore: Small cleanups
2021-10-25 16:32:55 -07:00
EmperorBale
b257e5537c
chore: Appease clippy
2021-10-25 16:32:55 -07:00
EmperorBale
42fe351c0d
avm2: Optimize readBytes & writeBytes by implementing write_at_within
2021-10-25 16:32:55 -07:00
EmperorBale
e86bdfdc3e
avm2: Remove unneeded condition
2021-10-25 16:32:55 -07:00
EmperorBale
3f3e600820
chore: Appease clippy
2021-10-25 16:32:55 -07:00
EmperorBale
83005a7ce5
avm2: Update flash-lso version
2021-10-25 16:32:55 -07:00
EmperorBale
efb3062d98
avm2: Add flash.net.ObjectEncoding
2021-10-25 16:32:55 -07:00
EmperorBale
e5fc2c8e66
avm1: Update SharedObject
2021-10-25 16:32:55 -07:00
EmperorBale
e2c2ac8961
avm2: Implement ByteArray.readObject + flash.net.ObjectEncoding
2021-10-25 16:32:55 -07:00
EmperorBale
c191340972
avm2: Refactor readBytes & writeBytes
2021-10-25 16:32:55 -07:00
EmperorBale
67ffc7bcc8
avm2: Forward get_enumerant_name and property_is_enumerable to base when not found
2021-10-25 13:45:29 -07:00
Mike Welsh
25c56b7000
chore: Appease clippy
2021-10-24 15:59:59 -07:00
Mike Welsh
8ae8de4d51
chore: Appease clippy
...
Squelch some false positives from `question_mark` and
`match_str_case_mismatch` lints.
2021-10-24 15:33:09 -07:00
relrelb
1fec012053
avm1: Inline `Value::call`
...
It was used only in `CallableValue`, and is not very useful by itself,
as it's a tiny wrapper around `TObject::call`.
2021-10-23 10:51:21 -07:00
relrelb
e6181dfcce
Revert "avm1: Don't warn in case a method doesn't exist"
...
This reverts commit 54d417c539
,
because it no longer necessary as the warning was removed in the
previous commit.
2021-10-23 10:51:21 -07:00
relrelb
982a83ce24
avm1: Remove `base_proto` parameter of `TObject::call`
...
Use prototype depths instead. Most calls passed `base_proto = None`,
which is equivalent to `depth = 0`, and is now the default.
The few other cases were adapted to use `Executable::exec` directly,
where `depth` can be specified manually.
2021-10-23 10:51:21 -07:00
relrelb
09f72b880d
avm1: Avoid unnecessary calls to `search_prototype`
...
The signature of `search_prototype` is going to change in a following
commit.
Use `TObject::call_method` instead.
2021-10-23 10:51:21 -07:00
relrelb
d0763607e2
avm1: Remove `base_proto` parameter of `TObject::set_local`
...
The only usage of it was `ScriptObject::set_local`, where it can
be computed locally.
2021-10-23 10:51:21 -07:00
relrelb
0a66dac280
avm1: Remove `set` specialization from `impl_custom_object!`
...
`base_proto` is going to be eliminated in a following commit, so
there will no longer be a difference between the two `set_local`
variants.
2021-10-23 10:51:21 -07:00
Mike Welsh
3fc0209e03
chore: Appease clippy
2021-10-22 22:48:26 -07:00
David Wendt
5abb11482e
avm2: Make builtin class prototypes also instances of `Object`, with the sole exception of `Function`, whose prototype is an instance of it's class.
2021-10-22 20:12:48 -07:00
David Wendt
469f8cb9db
avm2: All prototypes are instances of `Object`, not their own class.
2021-10-22 20:12:48 -07:00
Adrian Wielgosik
c1850d0d54
avm2: Stub flash.net.SharedObject
...
Just enough for the following to not crash:
```
var so = SharedObject.getLocal("name");
so.data.stuff = "xyz";
so.flush();
trace(so.data.stuff);
```
2021-10-22 10:02:35 -07:00
Mike Welsh
11ae981890
audio: Fix skipping initial frame of MP3 audio
...
The changes in #5498 caused the samples from the initial MP3 frame
to be skipped. This was noticable in:
https://www.newgrounds.com/portal/view/1
This change properly removes the redundant `num_samples` variable
and considers the samples from the initial MP3 frame.
2021-10-21 10:25:47 -07:00
Adrian Wielgosik
969fab7619
refactor: Stop manually borrowing fields in mutate_with_update_context
2021-10-21 10:24:05 -07:00
Adrian Wielgosik
8cc00f32bb
chore: Stop using traits available in prelude
2021-10-21 10:24:05 -07:00
EmperorBale
70cbd13201
avm2: Global scope should be null instead of undefined by default
2021-10-19 18:39:41 -06:00
EmperorBale
903246d5af
chore: Appease clippy
2021-10-19 18:39:41 -06:00
EmperorBale
ab3ff34944
avm2: Derive Collect for NativeExecutable
2021-10-19 18:39:41 -06:00