Move sound system to ecs resource
This commit is contained in:
parent
c76da94034
commit
7adf5923b3
3 changed files with 18 additions and 79 deletions
53
Cargo.lock
generated
53
Cargo.lock
generated
|
@ -729,12 +729,6 @@ version = "1.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
|
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.0.22"
|
version = "1.0.22"
|
||||||
|
@ -912,15 +906,6 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hermit-abi"
|
|
||||||
version = "0.1.19"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hibitset"
|
name = "hibitset"
|
||||||
version = "0.6.3"
|
version = "0.6.3"
|
||||||
|
@ -928,7 +913,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "93a1bb8316a44459a7d14253c4d28dd7395cbd23cc04a68c46e851b8e46d64b1"
|
checksum = "93a1bb8316a44459a7d14253c4d28dd7395cbd23cc04a68c46e851b8e46d64b1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atom",
|
"atom",
|
||||||
"rayon",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1492,16 +1476,6 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num_cpus"
|
|
||||||
version = "1.13.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
|
|
||||||
dependencies = [
|
|
||||||
"hermit-abi",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num_enum"
|
name = "num_enum"
|
||||||
version = "0.4.3"
|
version = "0.4.3"
|
||||||
|
@ -1776,31 +1750,6 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon"
|
|
||||||
version = "1.5.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"crossbeam-deque",
|
|
||||||
"either",
|
|
||||||
"rayon-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon-core"
|
|
||||||
version = "1.9.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-channel",
|
|
||||||
"crossbeam-deque",
|
|
||||||
"crossbeam-utils 0.8.5",
|
|
||||||
"lazy_static",
|
|
||||||
"num_cpus",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.2.10"
|
version = "0.2.10"
|
||||||
|
@ -1920,7 +1869,6 @@ dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"hashbrown",
|
"hashbrown",
|
||||||
"mopa",
|
"mopa",
|
||||||
"rayon",
|
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"tynm",
|
"tynm",
|
||||||
]
|
]
|
||||||
|
@ -1981,7 +1929,6 @@ dependencies = [
|
||||||
"hashbrown",
|
"hashbrown",
|
||||||
"hibitset",
|
"hibitset",
|
||||||
"log",
|
"log",
|
||||||
"rayon",
|
|
||||||
"shred",
|
"shred",
|
||||||
"shrev",
|
"shrev",
|
||||||
"tuple_utils",
|
"tuple_utils",
|
||||||
|
|
|
@ -7,7 +7,7 @@ build = "build.rs"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# bracket-lib = { path = "extern/bracket-lib" }
|
# bracket-lib = { path = "extern/bracket-lib" }
|
||||||
bracket-lib = { git = "https://github.com/amethyst/bracket-lib" }
|
bracket-lib = { git = "https://github.com/amethyst/bracket-lib" }
|
||||||
specs = "0.16.1"
|
specs = { version = "0.16.1", default-features = false }
|
||||||
specs-derive = "0.4.1"
|
specs-derive = "0.4.1"
|
||||||
cpal = "0.13"
|
cpal = "0.13"
|
||||||
oddio = "0.5"
|
oddio = "0.5"
|
||||||
|
|
42
src/main.rs
42
src/main.rs
|
@ -27,15 +27,15 @@ use vga_color as vga;
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
ecs: World,
|
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 entities = ecs.entities();
|
||||||
let mut positions = ecs.write_storage::<Position>();
|
let mut positions = ecs.write_storage::<Position>();
|
||||||
let mut players = ecs.write_storage::<Player>();
|
let mut players = ecs.write_storage::<Player>();
|
||||||
let mut map = ecs.write_resource::<Map>();
|
let mut map = ecs.write_resource::<Map>();
|
||||||
let mut stats = ecs.write_resource::<Stats>();
|
let mut stats = ecs.write_resource::<Stats>();
|
||||||
|
let mut sound_system = ecs.write_resource::<SoundSystem>();
|
||||||
|
|
||||||
for (player, pos) in (&mut players, &mut positions).join() {
|
for (player, pos) in (&mut players, &mut positions).join() {
|
||||||
let now = Instant::now();
|
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());
|
sound_system.play_sound(sound_effects.step.clone());
|
||||||
}
|
}
|
||||||
} else {
|
} 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);
|
sound_system.play_sound(static_sound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,32 +91,25 @@ fn player_input(gs: &mut State, ctx: &mut BTerm) {
|
||||||
None => {} // Nothing happened
|
None => {} // Nothing happened
|
||||||
Some(key) => match key {
|
Some(key) => match key {
|
||||||
VirtualKeyCode::Left | VirtualKeyCode::J => {
|
VirtualKeyCode::Left | VirtualKeyCode::J => {
|
||||||
try_move_player(-1, 0, &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, &mut gs.sound_system)
|
|
||||||
}
|
}
|
||||||
|
VirtualKeyCode::U | VirtualKeyCode::Home => try_move_player(-1, -1, &mut gs.ecs),
|
||||||
VirtualKeyCode::Up | VirtualKeyCode::I => {
|
VirtualKeyCode::Up | VirtualKeyCode::I => {
|
||||||
try_move_player(0, -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, &mut gs.sound_system)
|
|
||||||
}
|
}
|
||||||
|
VirtualKeyCode::O | VirtualKeyCode::PageUp => try_move_player(1, -1, &mut gs.ecs),
|
||||||
VirtualKeyCode::Right | VirtualKeyCode::K => {
|
VirtualKeyCode::Right | VirtualKeyCode::K => {
|
||||||
try_move_player(1, 0, &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, &mut gs.sound_system)
|
|
||||||
}
|
}
|
||||||
|
VirtualKeyCode::Comma | VirtualKeyCode::PageDown => try_move_player(1, 1, &mut gs.ecs),
|
||||||
VirtualKeyCode::Down | VirtualKeyCode::M => {
|
VirtualKeyCode::Down | VirtualKeyCode::M => {
|
||||||
try_move_player(0, 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, &mut gs.sound_system)
|
|
||||||
}
|
}
|
||||||
|
VirtualKeyCode::N | VirtualKeyCode::End => try_move_player(-1, 1, &mut gs.ecs),
|
||||||
VirtualKeyCode::S => {
|
VirtualKeyCode::S => {
|
||||||
|
let mut sound_system = gs.ecs.write_resource::<SoundSystem>();
|
||||||
let sound_effects = gs.ecs.fetch::<SoundEffects>();
|
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 => {
|
VirtualKeyCode::D => {
|
||||||
let mut show_debug_info = gs.ecs.write_resource::<ShowDebugInfo>();
|
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();
|
ctx.quit();
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
|
let mut sound_system = gs.ecs.write_resource::<SoundSystem>();
|
||||||
let sound_effects = gs.ecs.fetch::<SoundEffects>();
|
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);
|
let sound_effects = SoundEffects::new(&ss);
|
||||||
ss.play_sound(sound_effects.startup.clone());
|
ss.play_sound(sound_effects.startup.clone());
|
||||||
|
|
||||||
let mut gs = State {
|
let mut gs = State { ecs: World::new() };
|
||||||
ecs: World::new(),
|
|
||||||
sound_system: ss,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
gs.ecs.insert(ss);
|
||||||
gs.ecs.insert(LevelNumber(0));
|
gs.ecs.insert(LevelNumber(0));
|
||||||
gs.ecs.insert(ShowDebugInfo(false));
|
gs.ecs.insert(ShowDebugInfo(false));
|
||||||
gs.ecs.insert(Clock {
|
gs.ecs.insert(Clock {
|
||||||
|
|
Loading…
Add table
Reference in a new issue