From 00f88f9e876dd0da74cc2f00d64404ed4002eb7c Mon Sep 17 00:00:00 2001 From: David Wendt Date: Sat, 1 Feb 2020 18:29:21 -0500 Subject: [PATCH] Use the depth to indicate which layer a particular root clip is, and then use that to calculate it's `_leveln` path. --- core/src/avm1.rs | 1 + core/src/avm1/script_object.rs | 1 + core/src/avm1/test_utils.rs | 1 + core/src/display_object.rs | 3 +-- core/src/player.rs | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/avm1.rs b/core/src/avm1.rs index c64731030..956eabbcb 100644 --- a/core/src/avm1.rs +++ b/core/src/avm1.rs @@ -951,6 +951,7 @@ impl<'gc> Avm1<'gc> { MovieClip::new(NEWEST_PLAYER_VERSION, context.gc_context).into(); layer.post_instantiation(context.gc_context, layer, self.prototypes.movie_clip); + layer.set_depth(context.gc_context, level_id as i32); context.layers.insert(level_id, layer); layer diff --git a/core/src/avm1/script_object.rs b/core/src/avm1/script_object.rs index 5bb8b6044..19fd969ec 100644 --- a/core/src/avm1/script_object.rs +++ b/core/src/avm1/script_object.rs @@ -588,6 +588,7 @@ mod tests { let swf = Arc::new(SwfMovie::empty(swf_version)); let mut root: DisplayObject<'_> = MovieClip::new(swf_version, gc_context).into(); root.post_instantiation(gc_context, root, avm.prototypes().movie_clip); + root.set_depth(gc_context, 0); let mut layers = BTreeMap::new(); layers.insert(0, root); diff --git a/core/src/avm1/test_utils.rs b/core/src/avm1/test_utils.rs index fde4f0570..1ed078f9b 100644 --- a/core/src/avm1/test_utils.rs +++ b/core/src/avm1/test_utils.rs @@ -27,6 +27,7 @@ where let swf = Arc::new(SwfMovie::empty(swf_version)); let mut root: DisplayObject<'_> = MovieClip::new(swf_version, gc_context).into(); root.post_instantiation(gc_context, root, avm.prototypes().movie_clip); + root.set_depth(gc_context, 0); let mut layers = BTreeMap::new(); layers.insert(0, root); diff --git a/core/src/display_object.rs b/core/src/display_object.rs index f90b053af..5eccbdba2 100644 --- a/core/src/display_object.rs +++ b/core/src/display_object.rs @@ -581,8 +581,7 @@ pub trait TDisplayObject<'gc>: 'gc + Collect + Debug + Into> path.push_str(&*self.name()); path } else { - // TODO: Get the actual level # from somewhere. - "_level0".to_string() + format!("_level{}", self.depth()) } } diff --git a/core/src/player.rs b/core/src/player.rs index 32eeefe9e..b738e56cb 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -235,6 +235,7 @@ impl Player { for (_i, layer) in root_data.layers.iter_mut() { layer.post_instantiation(gc_context, *layer, mc_proto); + layer.set_depth(gc_context, 0); } });