use crate::app_state::AppState::Overworld;
use bevy::prelude::*;
#[cfg(feature = "experimental")]
pub mod beat;
pub mod object_properties;
#[cfg(feature = "experimental")]
pub mod reveal;
pub mod systems;
use crate::app_state::overworld::OverworldUpdate;
pub use object_properties::ObjectCollider;
#[derive(Resource, Default)]
pub struct CurrentMapBgm(pub Option<String>);
#[cfg(all(feature = "bevy_kira_audio", not(feature = "firewheel")))]
#[derive(Resource, Default)]
pub struct CurrentBgmHandle(pub Option<Handle<bevy_kira_audio::AudioInstance>>);
#[cfg(feature = "firewheel")]
#[derive(Resource, Default)]
pub struct CurrentBgmHandle(pub Option<Entity>);
pub(crate) struct TilemapPlugin;
impl Plugin for TilemapPlugin {
fn build(&self, app: &mut App) {
use systems::*;
app.init_resource::<CurrentMapBgm>()
.init_resource::<CurrentBgmHandle>()
.add_systems(OnEnter(Overworld), setup_tilemap_system)
.add_systems(
Update,
(
initialize_tilemap_system,
generate_collision_tiles_system,
setup_camera_bounds_system,
update_objects_order_with_player_system,
update_map_bgm_system,
)
.in_set(OverworldUpdate),
);
#[cfg(feature = "experimental")]
{
app.add_plugins(reveal::TileRevealPlugin);
app.add_plugins(beat::BeatPlugin);
}
}
}