Skip to content

Commit 9c1f783

Browse files
committed
Merge branch 'Remimstr-consistency-fixes'
2 parents 7479a98 + ec89886 commit 9c1f783

9 files changed

Lines changed: 75 additions & 90 deletions

File tree

book/src/chapter_10.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ RunState::ShowInventory => {
167167
newrunstate = RunState::ShowTargeting{ range: is_item_ranged.range, item: item_entity };
168168
} else {
169169
let mut intent = self.ecs.write_storage::<WantsToUseItem>();
170-
intent.insert(*self.ecs.fetch::<Entity>(), WantsToUseItem{ item: item_entity }).expect("Unable to insert intent");
170+
intent.insert(*self.ecs.fetch::<Entity>(), WantsToUseItem{ item: item_entity, target: None }).expect("Unable to insert intent");
171171
newrunstate = RunState::PlayerTurn;
172172
}
173173
}

book/src/chapter_14.md

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -177,37 +177,7 @@ pub struct Equipped {
177177
}
178178
```
179179

180-
Just like before, we need to register it in `main.rs`, and include it in the serialization and deserialization lists in `saveload_system.rs`. Since this includes an `Entity`, we'll also have a to include wrapper/helper code to make serialization work. The wrapper is a lot like others we've written - it converts `Equipped` into a tuple for save, and back again for loading:
181-
182-
```rust
183-
// Equipped wrapper
184-
#[derive(Serialize, Deserialize, Clone)]
185-
pub struct EquippedData<M>(M, EquipmentSlot);
186-
187-
impl<M: Marker + Serialize> ConvertSaveload<M> for Equipped
188-
where
189-
for<'de> M: Deserialize<'de>,
190-
{
191-
type Data = EquippedData<M>;
192-
type Error = NoError;
193-
194-
fn convert_into<F>(&self, mut ids: F) -> Result<Self::Data, Self::Error>
195-
where
196-
F: FnMut(Entity) -> Option<M>,
197-
{
198-
let marker = ids(self.owner).unwrap();
199-
Ok(EquippedData(marker, self.slot))
200-
}
201-
202-
fn convert_from<F>(data: Self::Data, mut ids: F) -> Result<Self, Self::Error>
203-
where
204-
F: FnMut(M) -> Option<Entity>,
205-
{
206-
let entity = ids(data.0).unwrap();
207-
Ok(Equipped{owner: entity, slot : data.1})
208-
}
209-
}
210-
```
180+
Just like before, we need to register it in `main.rs`, and include it in the serialization and deserialization lists in `saveload_system.rs`.
211181

212182
### Actually equipping the item
213183

book/src/chapter_4.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -273,18 +273,22 @@ pub fn player_input(gs: &mut State, ctx: &mut Rltk) {
273273
match ctx.key {
274274
None => {} // Nothing happened
275275
Some(key) => match key {
276-
VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs),
277-
VirtualKeyCode::Numpad4 => try_move_player(-1, 0, &mut gs.ecs),
276+
VirtualKeyCode::Left |
277+
VirtualKeyCode::Numpad4 |
278278
VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
279-
VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs),
280-
VirtualKeyCode::Numpad6 => try_move_player(1, 0, &mut gs.ecs),
279+
280+
VirtualKeyCode::Right |
281+
VirtualKeyCode::Numpad6 |
281282
VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
282-
VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs),
283-
VirtualKeyCode::Numpad8 => try_move_player(0, -1, &mut gs.ecs),
283+
284+
VirtualKeyCode::Up |
285+
VirtualKeyCode::Numpad8 |
284286
VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
285-
VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs),
286-
VirtualKeyCode::Numpad2 => try_move_player(0, 1, &mut gs.ecs),
287+
288+
VirtualKeyCode::Down |
289+
VirtualKeyCode::Numpad2 |
287290
VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
291+
288292
_ => {}
289293
},
290294
}

book/src/chapter_6.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -200,18 +200,22 @@ pub fn player_input(gs: &mut State, ctx: &mut Rltk) -> RunState {
200200
match ctx.key {
201201
None => { return RunState::Paused } // Nothing happened
202202
Some(key) => match key {
203-
VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs),
204-
VirtualKeyCode::Numpad4 => try_move_player(-1, 0, &mut gs.ecs),
203+
VirtualKeyCode::Left |
204+
VirtualKeyCode::Numpad4 |
205205
VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
206-
VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs),
207-
VirtualKeyCode::Numpad6 => try_move_player(1, 0, &mut gs.ecs),
206+
207+
VirtualKeyCode::Right |
208+
VirtualKeyCode::Numpad6 |
208209
VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
209-
VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs),
210-
VirtualKeyCode::Numpad8 => try_move_player(0, -1, &mut gs.ecs),
210+
211+
VirtualKeyCode::Up |
212+
VirtualKeyCode::Numpad8 |
211213
VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
212-
VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs),
213-
VirtualKeyCode::Numpad2 => try_move_player(0, 1, &mut gs.ecs),
214+
215+
VirtualKeyCode::Down |
216+
VirtualKeyCode::Numpad2 |
214217
VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
218+
215219
_ => { return RunState::Paused }
216220
},
217221
}

book/src/chapter_7.md

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@ fn get_available_exits(&self, idx:usize) -> rltk::SmallVec<[(usize, f32); 10]> {
4242
if self.is_exit_valid(x, y-1) { exits.push((idx-w, 1.0)) };
4343
if self.is_exit_valid(x, y+1) { exits.push((idx+w, 1.0)) };
4444

45-
// Diagonals
46-
if self.is_exit_valid(x-1, y-1) { exits.push(((idx-w)-1, 1.45)); }
47-
if self.is_exit_valid(x+1, y-1) { exits.push(((idx-w)+1, 1.45)); }
48-
if self.is_exit_valid(x-1, y+1) { exits.push(((idx+w)-1, 1.45)); }
49-
if self.is_exit_valid(x+1, y+1) { exits.push(((idx+w)+1, 1.45)); }
50-
5145
exits
5246
}
5347
```
@@ -255,22 +249,23 @@ Since we already put walls into the blocked list, this should take care of the i
255249
It would be nice to be able to bypass the monsters - and diagonal movement is a mainstay of roguelikes. So lets go ahead and support it. In `map.rs`'s `get_available_exits` function, we add them:
256250

257251
```rust
258-
fn get_available_exits(&self, idx:i32) -> Vec<(i32, f32)> {
259-
let mut exits : Vec<(i32, f32)> = Vec::new();
260-
let x = idx % self.width;
261-
let y = idx / self.width;
252+
fn get_available_exits(&self, idx:usize) -> rltk::SmallVec<[(usize, f32); 10]> {
253+
let mut exits = rltk::SmallVec::new();
254+
let x = idx as i32 % self.width;
255+
let y = idx as i32 / self.width;
256+
let w = self.width as usize;
262257

263258
// Cardinal directions
264259
if self.is_exit_valid(x-1, y) { exits.push((idx-1, 1.0)) };
265260
if self.is_exit_valid(x+1, y) { exits.push((idx+1, 1.0)) };
266-
if self.is_exit_valid(x, y-1) { exits.push((idx-self.width, 1.0)) };
267-
if self.is_exit_valid(x, y+1) { exits.push((idx+self.width, 1.0)) };
261+
if self.is_exit_valid(x, y-1) { exits.push((idx-w, 1.0)) };
262+
if self.is_exit_valid(x, y+1) { exits.push((idx+w, 1.0)) };
268263

269264
// Diagonals
270-
if self.is_exit_valid(x-1, y-1) { exits.push(((idx-self.width)-1, 1.45)); }
271-
if self.is_exit_valid(x+1, y-1) { exits.push(((idx-self.width)+1, 1.45)); }
272-
if self.is_exit_valid(x-1, y+1) { exits.push(((idx+self.width)-1, 1.45)); }
273-
if self.is_exit_valid(x+1, y+1) { exits.push(((idx+self.width)+1, 1.45)); }
265+
if self.is_exit_valid(x-1, y-1) { exits.push(((idx-w)-1, 1.45)); }
266+
if self.is_exit_valid(x+1, y-1) { exits.push(((idx-w)+1, 1.45)); }
267+
if self.is_exit_valid(x-1, y+1) { exits.push(((idx+w)-1, 1.45)); }
268+
if self.is_exit_valid(x+1, y+1) { exits.push(((idx+w)+1, 1.45)); }
274269

275270
exits
276271
}

book/src/chapter_9.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ We're going to extend the function to spawn multiple monsters per room, with 0 b
119119

120120
```rust
121121
pub const MAPWIDTH : usize = 80;
122-
pub const MAPHEIGHT : usize = 50;
122+
pub const MAPHEIGHT : usize = 43;
123123
pub const MAPCOUNT : usize = MAPHEIGHT * MAPWIDTH;
124124
```
125125

@@ -509,7 +509,7 @@ RunState::ShowInventory => {
509509
let item_entity = result.1.unwrap();
510510
let names = self.ecs.read_storage::<Name>();
511511
let mut gamelog = self.ecs.fetch_mut::<gamelog::GameLog>();
512-
gamelog.entries.push(format!("You try to use {}, but it isn't written yet", names.get(item_entity) .unwrap().name));
512+
gamelog.entries.push(format!("You try to use {}, but it isn't written yet", names.get(item_entity).unwrap().name));
513513
newrunstate = RunState::AwaitingInput;
514514
}
515515
}

chapter-04-newmap/src/player.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,22 @@ pub fn player_input(gs: &mut State, ctx: &mut Rltk) {
2222
match ctx.key {
2323
None => {} // Nothing happened
2424
Some(key) => match key {
25-
VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs),
26-
VirtualKeyCode::Numpad4 => try_move_player(-1, 0, &mut gs.ecs),
25+
VirtualKeyCode::Left |
26+
VirtualKeyCode::Numpad4 |
2727
VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
28-
VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs),
29-
VirtualKeyCode::Numpad6 => try_move_player(1, 0, &mut gs.ecs),
28+
29+
VirtualKeyCode::Right |
30+
VirtualKeyCode::Numpad6 |
3031
VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
31-
VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs),
32-
VirtualKeyCode::Numpad8 => try_move_player(0, -1, &mut gs.ecs),
32+
33+
VirtualKeyCode::Up |
34+
VirtualKeyCode::Numpad8 |
3335
VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
34-
VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs),
35-
VirtualKeyCode::Numpad2 => try_move_player(0, 1, &mut gs.ecs),
36+
37+
VirtualKeyCode::Down |
38+
VirtualKeyCode::Numpad2 |
3639
VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
40+
3741
_ => {}
3842
},
3943
}

chapter-05-fov/src/player.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,22 @@ pub fn player_input(gs: &mut State, ctx: &mut Rltk) {
2525
match ctx.key {
2626
None => {} // Nothing happened
2727
Some(key) => match key {
28-
VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs),
29-
VirtualKeyCode::Numpad4 => try_move_player(-1, 0, &mut gs.ecs),
28+
VirtualKeyCode::Left |
29+
VirtualKeyCode::Numpad4 |
3030
VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
31-
VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs),
32-
VirtualKeyCode::Numpad6 => try_move_player(1, 0, &mut gs.ecs),
31+
32+
VirtualKeyCode::Right |
33+
VirtualKeyCode::Numpad6 |
3334
VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
34-
VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs),
35-
VirtualKeyCode::Numpad8 => try_move_player(0, -1, &mut gs.ecs),
35+
36+
VirtualKeyCode::Up |
37+
VirtualKeyCode::Numpad8 |
3638
VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
37-
VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs),
38-
VirtualKeyCode::Numpad2 => try_move_player(0, 1, &mut gs.ecs),
39+
40+
VirtualKeyCode::Down |
41+
VirtualKeyCode::Numpad2 |
3942
VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
43+
4044
_ => {}
4145
},
4246
}

chapter-06-monsters/src/player.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,22 @@ pub fn player_input(gs: &mut State, ctx: &mut Rltk) -> RunState {
2828
match ctx.key {
2929
None => { return RunState::Paused } // Nothing happened
3030
Some(key) => match key {
31-
VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs),
32-
VirtualKeyCode::Numpad4 => try_move_player(-1, 0, &mut gs.ecs),
31+
VirtualKeyCode::Left |
32+
VirtualKeyCode::Numpad4 |
3333
VirtualKeyCode::H => try_move_player(-1, 0, &mut gs.ecs),
34-
VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs),
35-
VirtualKeyCode::Numpad6 => try_move_player(1, 0, &mut gs.ecs),
34+
35+
VirtualKeyCode::Right |
36+
VirtualKeyCode::Numpad6 |
3637
VirtualKeyCode::L => try_move_player(1, 0, &mut gs.ecs),
37-
VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs),
38-
VirtualKeyCode::Numpad8 => try_move_player(0, -1, &mut gs.ecs),
38+
39+
VirtualKeyCode::Up |
40+
VirtualKeyCode::Numpad8 |
3941
VirtualKeyCode::K => try_move_player(0, -1, &mut gs.ecs),
40-
VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs),
41-
VirtualKeyCode::Numpad2 => try_move_player(0, 1, &mut gs.ecs),
42+
43+
VirtualKeyCode::Down |
44+
VirtualKeyCode::Numpad2 |
4245
VirtualKeyCode::J => try_move_player(0, 1, &mut gs.ecs),
46+
4347
_ => { return RunState::Paused }
4448
},
4549
}

0 commit comments

Comments
 (0)