use bevy::prelude::*;

use crate::{
    AppState,
    cleanup::{self, despawn},
};

mod camera;
mod scene;
mod tram {
    use bevy::prelude::*;

    fn spawn_tram(
        mut c: Commands,
        mut meshes: ResMut<Assets<Mesh>>,
        mut materials: ResMut<Assets<StandardMaterial>>,
    ) {
    }
}

/// Gameplay system set. All functions in this control the gameplay (duh).
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
struct GameplaySet;

pub fn plugin(app: &mut App) {
    app.add_systems(OnEnter(AppState::Ingame), scene::setup.in_set(GameplaySet))
        .add_systems(
            OnExit(AppState::Ingame),
            despawn::<cleanup::Scene>.in_set(GameplaySet),
        )
        .add_plugins(camera::plugin);
    app.configure_sets(Update, GameplaySet.run_if(in_state(AppState::Ingame)));
}
