Skip to content

Commit 93b8f63

Browse files
committed
core: Add Player Mode option
This option specifies whether to emulate flashplayer (release mode) or flashplayerdebugger (debug mode).
1 parent dbcb435 commit 93b8f63

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

core/src/context.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ use crate::stub::StubCollection;
4141
use crate::tag_utils::{SwfMovie, SwfSlice};
4242
use crate::timer::Timers;
4343
use crate::vminterface::Instantiator;
44+
use crate::PlayerMode;
4445
use core::fmt;
4546
use gc_arena::{Collect, Mutation};
4647
use rand::rngs::SmallRng;
@@ -84,6 +85,8 @@ pub struct UpdateContext<'gc> {
8485
/// variables.
8586
pub player_version: u8,
8687

88+
pub player_mode: PlayerMode,
89+
8790
/// Requests that the player re-renders after this execution (e.g. due to `updateAfterEvent`).
8891
pub needs_render: &'gc mut bool,
8992

core/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ pub use events::PlayerEvent;
6868
pub use font::DefaultFont;
6969
pub use indexmap;
7070
pub use loader::LoadBehavior;
71-
pub use player::{Player, PlayerBuilder, PlayerRuntime, StaticCallstack};
71+
pub use player::{Player, PlayerBuilder, PlayerMode, PlayerRuntime, StaticCallstack};
7272
pub use ruffle_render::backend::ViewportDimensions;
7373
pub use swf;
7474
pub use swf::Color;

core/src/player.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ pub struct Player {
298298
#[allow(unused)]
299299
player_runtime: PlayerRuntime,
300300

301+
/// Whether we're emulating the release or the debug build.
302+
player_mode: PlayerMode,
303+
301304
swf: Arc<SwfMovie>,
302305

303306
run_state: RunState,
@@ -2179,6 +2182,7 @@ impl Player {
21792182

21802183
let mut update_context = UpdateContext {
21812184
player_version: this.player_version,
2185+
player_mode: this.player_mode,
21822186
swf: &mut this.swf,
21832187
library,
21842188
rng: &mut this.rng,
@@ -2454,6 +2458,7 @@ pub struct PlayerBuilder {
24542458
gamepad_button_mapping: HashMap<GamepadButton, KeyCode>,
24552459
player_version: Option<u8>,
24562460
player_runtime: PlayerRuntime,
2461+
player_mode: PlayerMode,
24572462
quality: StageQuality,
24582463
page_url: Option<String>,
24592464
frame_rate: Option<f64>,
@@ -2505,6 +2510,7 @@ impl PlayerBuilder {
25052510
gamepad_button_mapping: HashMap::new(),
25062511
player_version: None,
25072512
player_runtime: PlayerRuntime::default(),
2513+
player_mode: PlayerMode::default(),
25082514
quality: StageQuality::High,
25092515
page_url: None,
25102516
frame_rate: None,
@@ -2679,6 +2685,12 @@ impl PlayerBuilder {
26792685
self
26802686
}
26812687

2688+
/// Configures the player mode (default is `PlayerMode::Release`)
2689+
pub fn with_player_mode(mut self, mode: PlayerMode) -> Self {
2690+
self.player_mode = mode;
2691+
self
2692+
}
2693+
26822694
// Configure the embedding page's URL (if applicable)
26832695
pub fn with_page_url(mut self, page_url: Option<String>) -> Self {
26842696
self.page_url = page_url;
@@ -2859,6 +2871,7 @@ impl PlayerBuilder {
28592871
instance_counter: 0,
28602872
player_version,
28612873
player_runtime: self.player_runtime,
2874+
player_mode: self.player_mode,
28622875
run_state: if self.autoplay {
28632876
RunState::Playing
28642877
} else {
@@ -3043,3 +3056,11 @@ impl FromStr for PlayerRuntime {
30433056
Ok(player_runtime)
30443057
}
30453058
}
3059+
3060+
#[derive(Default, Clone, Copy, Debug, Eq, PartialEq)]
3061+
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
3062+
pub enum PlayerMode {
3063+
#[default]
3064+
Release,
3065+
Debug,
3066+
}

0 commit comments

Comments
 (0)