use agb::save::MediaType;
use bevy::prelude::*;
#[derive(Default)]
pub struct AgbSavePlugin {
pub save_type: Option<MediaType>,
}
impl Plugin for AgbSavePlugin {
fn build(&self, _app: &mut App) {}
fn finish(&self, app: &mut App) {
use MediaType::*;
let Some(mut save_manager) = app
.world_mut()
.remove_non_send_resource::<agb::save::SaveManager>()
else {
return;
};
match self.save_type {
Some(Sram32K) => save_manager.init_sram(),
Some(Flash64K) => save_manager.init_flash_64k(),
Some(Flash128K) => save_manager.init_flash_128k(),
Some(Eeprom512B) => save_manager.init_eeprom_512b(),
Some(Eeprom8K) => save_manager.init_eeprom_8k(),
_ => {}
}
app.insert_resource(SaveManager(save_manager));
}
}
#[derive(Resource, Deref, DerefMut)]
pub struct SaveManager(agb::save::SaveManager);