use bevy::asset::LoadState; use bevy::prelude::*; use crate::assets::{AssetTypeLoader, SpriteSheetConfig}; use crate::system::AppState; pub fn start_preload_resources( mut _commands: Commands, mut next_state: ResMut<NextState<AppState>>, ) { // TODO: Add preload commands here next_state.set(AppState::Setup); } pub fn start_load_resources(mut loader: AssetTypeLoader) { loader.load_images(&[ ("splash.png", "splash"), ("cresthollow.png", "menu_bg"), ("interface/basic_frame.png", "basic_frame"), ("interface/banner.png", "banner"), ("interface/button_pressed.png", "button_down"), ("interface/button_raised.png", "button_up"), ("interface/button_hover.png", "button_over"), ("interface/vertical_bar.png", "resource_bar"), ("interface/vertical_bar_bg.png", "resource_bar_bg"), ("interface/vertical_bar_fg.png", "resource_bar_fg"), ("interface/health_bar.png", "bar_red"), ("interface/mana_bar.png", "bar_blue"), ("interface/stamina_bar.png", "bar_yellow"), ("interface/energy_bar.png", "bar_green"), ]); loader.load_audio(&[ ("splash_sting.ogg", "splash_sting"), ("music/menu.ogg", "menu_track"), ("effects/running_001.ogg", "running_001"), ("effects/fire_crackle_001.ogg", "fire_crackle_001"), ("effects/cave_ambience.ogg", "cave_ambience"), ("effects/ui_confirm.ogg", "ui_confirm"), ("effects/ui_ping.ogg", "ui_ping"), ]); loader.load_font(&[ ("fonts/royal.ttf", "royal"), ("fonts/equipe.ttf", "equipe"), ("fonts/cursed.ttf", "cursed"), ("fonts/cursed_bold.ttf", "cursed_bold"), ]); loader.load_spritesheet( &SpriteSheetConfig::squares(16, 32, 64), &[ ("sheets/items.png", "items"), ("sheets/fx.png", "fx"), ("sheets/or_interface.png", "interface"), ("sheets/projectiles.png", "projectiles"), ], ); loader.load_spritesheet( &SpriteSheetConfig::squares(32, 16, 32), &[ ("sheets/creatures/town_guard_human.png", "town_guard_human"), ("sheets/creatures/town_guard_orc.png", "town_guard_orc"), ("sheets/creatures/town_guard_dwarf.png", "town_guard_dwarf"), ("sheets/creatures/town_guard_elf.png", "town_guard_elf"), ], ); loader.load_spritesheet( &SpriteSheetConfig::squares(32, 32, 32), &[ ("sheets/creatures/human_base.png", "human_base"), ("sheets/creatures/goblin_base.png", "goblin_base"), ("sheets/creatures/skeleton.png", "skeleton"), ("sheets/creatures/flame_acolyte.png", "flame_acolyte"), ("sheets/creatures/divine_warrior.png", "divine_warrior"), ], ); loader.load_spritesheet( &SpriteSheetConfig::squares(16, 64, 64), &[ ("sheets/world_dawn.png", "world"), ("sheets/characters.png", "characters"), ], ); loader.load_animation(&[ ("animations/humanoid.anim.json", "humanoid"), ("animations/skeleton.anim.json", "skeleton"), ("animations/flame_acolyte.anim.json", "flame_acolyte"), ("animations/guards.anim.json", "town_guards"), ]); loader.load_ldtk(&[ ("ldtk/dawnish.ldtk", "tile_data"), ("ldtk/cresthollow_world.ldtk", "cresthollow_world"), ]); } pub fn check_load_resources( mut commands: Commands, loader: AssetTypeLoader, mut next_state: ResMut<NextState<AppState>>, ) { let load_states = loader.get_all_load_state(); if load_states.iter().all(|state| *state == LoadState::Loaded) { info!("Assets loaded successfully"); next_state.set(AppState::Splash); } }