|
fn fire_on_target(ecs: &mut World) -> RunState { |
|
let targets = ecs.write_storage::<Target>(); |
|
let entities = ecs.entities(); |
|
let mut current_target : Option<Entity> = None; |
|
let mut log = ecs.fetch_mut::<GameLog>(); |
|
|
|
|
|
for (e,_t) in (&entities, &targets).join() { |
|
current_target = Some(e); |
|
} |
|
|
|
if let Some(target) = current_target { |
|
let player_entity = ecs.fetch::<Entity>(); |
|
let mut shoot_store = ecs.write_storage::<WantsToShoot>(); |
|
let names = ecs.read_storage::<Name>(); |
|
if let Some(name) = names.get(target) { |
|
log.entries.push(format!("You fire at {}", name.name)); |
|
} |
|
shoot_store.insert(*player_entity, WantsToShoot{ target }).expect("Insert Fail"); |
|
|
|
RunState::Ticking |
|
} else { |
|
log.entries.push("You don't have a target selected!".to_string()); |
|
RunState::AwaitingInput |
|
} |
|
|
|
} |
https://github.com/amethyst/rustrogueliketutorial/blob/master/chapter-70-missiles/src/player.rs#L482
The chapter 70 forgets to add the fire_on_target function and to call it from player.rs (to fire with the F key). The code for it is in the repo, but not mentioned in the book.
rustrogueliketutorial/chapter-70-missiles/src/player.rs
Lines 54 to 80 in 33872fe
https://github.com/amethyst/rustrogueliketutorial/blob/master/chapter-70-missiles/src/player.rs#L482
The chapter 70 forgets to add the
fire_on_targetfunction and to call it fromplayer.rs(to fire with theFkey). The code for it is in the repo, but not mentioned in the book.