|
1 | 1 | use crate::camera::components::GameCamera; |
2 | 2 | use crate::cards::Card; |
3 | | -use crate::menu::settings::SettingsMenuState; |
4 | 3 | use crate::menu::state::{GameMenuState, StateTransitionContext}; |
5 | 4 | use bevy::prelude::*; |
6 | 5 |
|
7 | | -/// Set up the transition context for settings menu |
8 | | -pub fn setup_settings_transition( |
9 | | - mut context: ResMut<StateTransitionContext>, |
10 | | - current_state: Res<State<GameMenuState>>, |
11 | | - mut settings_state: ResMut<NextState<SettingsMenuState>>, |
12 | | - settings_current: Res<State<SettingsMenuState>>, |
13 | | -) { |
14 | | - info!( |
15 | | - "Setting up settings transition from state: {:?}, from_pause_menu: {}", |
16 | | - current_state.get(), |
17 | | - context.from_pause_menu |
18 | | - ); |
19 | | - |
20 | | - info!("Current SettingsMenuState: {:?}", settings_current.get()); |
21 | | - |
22 | | - // Always reset from_pause_menu flag when transitioning from MainMenu |
23 | | - if *current_state.get() == GameMenuState::MainMenu { |
24 | | - info!("Resetting from_pause_menu flag because we're in MainMenu state"); |
25 | | - context.from_pause_menu = false; |
26 | | - // Explicitly set the settings origin to MainMenu |
27 | | - info!("Explicitly setting settings_origin to MainMenu"); |
28 | | - context.settings_origin = Some(GameMenuState::MainMenu); |
29 | | - } else if context.from_pause_menu || *current_state.get() == GameMenuState::PauseMenu { |
30 | | - // If the flag is set or we're coming from the pause menu, set the origin to PauseMenu |
31 | | - info!("Detected transition from pause menu"); |
32 | | - context.settings_origin = Some(GameMenuState::PauseMenu); |
33 | | - } else { |
34 | | - // Fall back to checking the current state |
35 | | - match current_state.get() { |
36 | | - GameMenuState::Settings if context.settings_origin.is_none() => { |
37 | | - // If we're already in Settings state but have no origin, |
38 | | - // default to main menu |
39 | | - info!("Already in Settings state with no origin, defaulting to main menu"); |
40 | | - context.settings_origin = Some(GameMenuState::MainMenu); |
41 | | - } |
42 | | - _ => { |
43 | | - if context.settings_origin.is_none() { |
44 | | - // Default to main menu if coming from an unexpected state |
45 | | - info!("Entering settings from unexpected state, defaulting to main menu"); |
46 | | - context.settings_origin = Some(GameMenuState::MainMenu); |
47 | | - } else { |
48 | | - info!( |
49 | | - "Using existing settings origin: {:?}", |
50 | | - context.settings_origin |
51 | | - ); |
52 | | - } |
53 | | - } |
54 | | - } |
55 | | - } |
56 | | - |
57 | | - // Only set the settings state if we're not already in Main |
58 | | - if *settings_current.get() != SettingsMenuState::Main { |
59 | | - info!( |
60 | | - "Setting SettingsMenuState to Main (was {:?})", |
61 | | - settings_current.get() |
62 | | - ); |
63 | | - settings_state.set(SettingsMenuState::Main); |
64 | | - } else { |
65 | | - info!("Already in SettingsMenuState::Main, not changing state"); |
66 | | - } |
67 | | - |
68 | | - // Log that we're about to exit this function |
69 | | - info!("Completed settings transition setup"); |
70 | | -} |
71 | | - |
72 | 6 | /// Starts the game loading process |
73 | 7 | pub fn start_game_loading( |
74 | 8 | mut commands: Commands, |
|
0 commit comments