Move sound system to ecs resource
This commit is contained in:
parent
c76da94034
commit
7adf5923b3
3 changed files with 18 additions and 79 deletions
42
src/main.rs
42
src/main.rs
|
@ -27,15 +27,15 @@ use vga_color as vga;
|
|||
|
||||
struct State {
|
||||
ecs: World,
|
||||
sound_system: SoundSystem,
|
||||
}
|
||||
|
||||
fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World, sound_system: &mut SoundSystem) {
|
||||
fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) {
|
||||
let entities = ecs.entities();
|
||||
let mut positions = ecs.write_storage::<Position>();
|
||||
let mut players = ecs.write_storage::<Player>();
|
||||
let mut map = ecs.write_resource::<Map>();
|
||||
let mut stats = ecs.write_resource::<Stats>();
|
||||
let mut sound_system = ecs.write_resource::<SoundSystem>();
|
||||
|
||||
for (player, pos) in (&mut players, &mut positions).join() {
|
||||
let now = Instant::now();
|
||||
|
@ -76,7 +76,7 @@ fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World, sound_system: &m
|
|||
sound_system.play_sound(sound_effects.step.clone());
|
||||
}
|
||||
} else {
|
||||
let static_sound = sound_effects.get_new_static_effect(sound_system);
|
||||
let static_sound = sound_effects.get_new_static_effect(&sound_system);
|
||||
sound_system.play_sound(static_sound);
|
||||
}
|
||||
|
||||
|
@ -91,32 +91,25 @@ fn player_input(gs: &mut State, ctx: &mut BTerm) {
|
|||
None => {} // Nothing happened
|
||||
Some(key) => match key {
|
||||
VirtualKeyCode::Left | VirtualKeyCode::J => {
|
||||
try_move_player(-1, 0, &mut gs.ecs, &mut gs.sound_system);
|
||||
}
|
||||
VirtualKeyCode::U | VirtualKeyCode::Home => {
|
||||
try_move_player(-1, -1, &mut gs.ecs, &mut gs.sound_system)
|
||||
try_move_player(-1, 0, &mut gs.ecs);
|
||||
}
|
||||
VirtualKeyCode::U | VirtualKeyCode::Home => try_move_player(-1, -1, &mut gs.ecs),
|
||||
VirtualKeyCode::Up | VirtualKeyCode::I => {
|
||||
try_move_player(0, -1, &mut gs.ecs, &mut gs.sound_system);
|
||||
}
|
||||
VirtualKeyCode::O | VirtualKeyCode::PageUp => {
|
||||
try_move_player(1, -1, &mut gs.ecs, &mut gs.sound_system)
|
||||
try_move_player(0, -1, &mut gs.ecs);
|
||||
}
|
||||
VirtualKeyCode::O | VirtualKeyCode::PageUp => try_move_player(1, -1, &mut gs.ecs),
|
||||
VirtualKeyCode::Right | VirtualKeyCode::K => {
|
||||
try_move_player(1, 0, &mut gs.ecs, &mut gs.sound_system);
|
||||
}
|
||||
VirtualKeyCode::Comma | VirtualKeyCode::PageDown => {
|
||||
try_move_player(1, 1, &mut gs.ecs, &mut gs.sound_system)
|
||||
try_move_player(1, 0, &mut gs.ecs);
|
||||
}
|
||||
VirtualKeyCode::Comma | VirtualKeyCode::PageDown => try_move_player(1, 1, &mut gs.ecs),
|
||||
VirtualKeyCode::Down | VirtualKeyCode::M => {
|
||||
try_move_player(0, 1, &mut gs.ecs, &mut gs.sound_system);
|
||||
}
|
||||
VirtualKeyCode::N | VirtualKeyCode::End => {
|
||||
try_move_player(-1, 1, &mut gs.ecs, &mut gs.sound_system)
|
||||
try_move_player(0, 1, &mut gs.ecs);
|
||||
}
|
||||
VirtualKeyCode::N | VirtualKeyCode::End => try_move_player(-1, 1, &mut gs.ecs),
|
||||
VirtualKeyCode::S => {
|
||||
let mut sound_system = gs.ecs.write_resource::<SoundSystem>();
|
||||
let sound_effects = gs.ecs.fetch::<SoundEffects>();
|
||||
gs.sound_system.play_sound(sound_effects.pickup.clone());
|
||||
sound_system.play_sound(sound_effects.pickup.clone());
|
||||
}
|
||||
VirtualKeyCode::D => {
|
||||
let mut show_debug_info = gs.ecs.write_resource::<ShowDebugInfo>();
|
||||
|
@ -126,8 +119,9 @@ fn player_input(gs: &mut State, ctx: &mut BTerm) {
|
|||
ctx.quit();
|
||||
}
|
||||
_ => {
|
||||
let mut sound_system = gs.ecs.write_resource::<SoundSystem>();
|
||||
let sound_effects = gs.ecs.fetch::<SoundEffects>();
|
||||
gs.sound_system.play_sound(sound_effects.bad_key.clone());
|
||||
sound_system.play_sound(sound_effects.bad_key.clone());
|
||||
}
|
||||
},
|
||||
}
|
||||
|
@ -180,11 +174,9 @@ fn main() -> BError {
|
|||
let sound_effects = SoundEffects::new(&ss);
|
||||
ss.play_sound(sound_effects.startup.clone());
|
||||
|
||||
let mut gs = State {
|
||||
ecs: World::new(),
|
||||
sound_system: ss,
|
||||
};
|
||||
let mut gs = State { ecs: World::new() };
|
||||
|
||||
gs.ecs.insert(ss);
|
||||
gs.ecs.insert(LevelNumber(0));
|
||||
gs.ecs.insert(ShowDebugInfo(false));
|
||||
gs.ecs.insert(Clock {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue