@@ -6,6 +6,7 @@ use crate::avm1::VariableDumper;
66use crate :: avm1:: { Activation , ActivationIdentifier } ;
77use crate :: avm2:: object:: { EventObject as Avm2EventObject , Object as Avm2Object } ;
88use crate :: avm2:: { Activation as Avm2Activation , Avm2 , CallStack } ;
9+ use crate :: avm_rng:: AvmRng ;
910use crate :: backend:: ui:: FontDefinition ;
1011use crate :: backend:: {
1112 audio:: { AudioBackend , AudioManager } ,
@@ -38,7 +39,6 @@ use crate::library::Library;
3839use crate :: limits:: ExecutionLimit ;
3940use crate :: loader:: { LoadBehavior , LoadManager } ;
4041use crate :: local_connection:: LocalConnections ;
41- use crate :: locale:: get_current_date_time;
4242use crate :: net_connection:: NetConnections ;
4343use crate :: orphan_manager:: OrphanManager ;
4444use crate :: prelude:: * ;
@@ -54,7 +54,6 @@ use crate::DefaultFont;
5454use async_channel:: Sender ;
5555use gc_arena:: lock:: GcRefLock ;
5656use gc_arena:: { Collect , DynamicRootSet , Mutation , Rootable } ;
57- use rand:: { rngs:: SmallRng , SeedableRng } ;
5857use ruffle_macros:: istr;
5958use ruffle_render:: backend:: { null:: NullRenderer , RenderBackend , ViewportDimensions } ;
6059use ruffle_render:: commands:: CommandList ;
@@ -316,7 +315,7 @@ pub struct Player {
316315
317316 transform_stack : TransformStack ,
318317
319- rng : SmallRng ,
318+ rng : AvmRng ,
320319
321320 gc_arena : Rc < RefCell < GcArena > > ,
322321
@@ -2950,7 +2949,9 @@ impl PlayerBuilder {
29502949 mouse_cursor_needs_check : false ,
29512950
29522951 // Misc. state
2953- rng : SmallRng :: seed_from_u64 ( get_current_date_time ( ) . timestamp_millis ( ) as u64 ) ,
2952+ // TODO: AVM1 and AVM2 use separate RNGs (though algorithm is same), so this is technically incorrect.
2953+ // See: https://github.com/ruffle-rs/ruffle/issues/20244
2954+ rng : AvmRng :: default ( ) ,
29542955 system : SystemProperties :: new ( language) ,
29552956 page_url : self . page_url . clone ( ) ,
29562957 transform_stack : TransformStack :: new ( ) ,
0 commit comments