make the ContollerInputs.select_pos be explicitly the breakable blacks for mining

This commit is contained in:
anomaluridae 2021-09-13 18:51:54 -07:00
parent c5d66192fc
commit 5c66f73bb4
8 changed files with 21 additions and 25 deletions

View File

@ -199,7 +199,7 @@ pub struct ControllerInputs {
pub move_z: f32, /* z axis (not combined with move_dir because they may have independent
* limits) */
pub look_dir: Dir,
pub select_pos: Option<Vec3<f32>>,
pub break_block_pos: Option<Vec3<f32>>,
/// Attempt to enable strafing.
/// Currently, setting this to false will *not* disable strafing during a
/// wielding character state.
@ -236,7 +236,7 @@ impl ControllerInputs {
self.move_dir = new.move_dir;
self.move_z = new.move_z;
self.look_dir = new.look_dir;
self.select_pos = new.select_pos;
self.break_block_pos = new.break_block_pos;
}
}

View File

@ -127,7 +127,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -180,7 +180,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -284,7 +284,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -165,7 +165,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),
@ -302,7 +302,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -172,7 +172,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -149,7 +149,7 @@ impl CharacterBehavior for Data {
hit_count: 0,
break_block: data
.inputs
.select_pos
.break_block_pos
.map(|p| {
(
p.map(|e| e.floor() as i32),

View File

@ -434,17 +434,18 @@ impl PlayState for SessionState {
mine_target.filter(|mt| is_mining && is_nearest_target(shortest_dist, *mt))
{
self.scene.set_select_pos(Some(mt.position_int()));
self.inputs.break_block_pos = Some(mt.position);
} else if let Some(bt) =
build_target.filter(|bt| can_build && is_nearest_target(shortest_dist, *bt))
{
self.scene.set_select_pos(Some(bt.position_int()));
} else {
self.scene.set_select_pos(None);
self.inputs.select_pos = entity_target.map(|et| et.position);
}
// Throw out distance info, it will be useful in the future
self.target_entity = entity_target.map(|t| t.kind.0);
let default_select_pos = entity_target.map(|et| et.position);
// Handle window events.
for event in events {
@ -473,18 +474,18 @@ impl PlayState for SessionState {
if let Some(build_target) = build_target.filter(|bt| {
state && can_build && is_nearest_target(shortest_dist, *bt)
}) {
self.inputs.select_pos = Some(build_target.position);
client.remove_block(build_target.position_int());
} else {
let mut select_pos = default_select_pos;
if let Some(mine_target) = mine_target.filter(|mt| {
is_mining && is_nearest_target(shortest_dist, *mt)
}) {
self.inputs.select_pos = Some(mine_target.position);
select_pos = Some(mine_target.position);
}
client.handle_input(
InputKind::Primary,
state,
self.inputs.select_pos,
select_pos,
self.target_entity,
);
}
@ -495,7 +496,6 @@ impl PlayState for SessionState {
state && can_build && is_nearest_target(shortest_dist, *bt)
}) {
let selected_pos = build_target.kind.0;
self.inputs.select_pos = Some(selected_pos);
client.place_block(
selected_pos.map(|p| p.floor() as i32),
self.selected_block,
@ -504,7 +504,7 @@ impl PlayState for SessionState {
client.handle_input(
InputKind::Secondary,
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
}
@ -513,7 +513,7 @@ impl PlayState for SessionState {
self.client.borrow_mut().handle_input(
InputKind::Block,
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
},
@ -529,8 +529,6 @@ impl PlayState for SessionState {
.ok()
.copied()
}) {
self.inputs.select_pos =
build_target.map(|t| t.position);
self.selected_block = block;
}
}
@ -538,7 +536,7 @@ impl PlayState for SessionState {
client.handle_input(
InputKind::Roll,
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
}
@ -553,7 +551,7 @@ impl PlayState for SessionState {
self.client.borrow_mut().handle_input(
InputKind::Jump,
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
},
@ -628,7 +626,7 @@ impl PlayState for SessionState {
self.client.borrow_mut().handle_input(
InputKind::Fly,
self.key_state.fly,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
},
@ -704,8 +702,6 @@ impl PlayState for SessionState {
match interaction {
Some(Interaction::Collect) => {
if block.is_collectible() {
self.inputs.select_pos =
collect_target.map(|t| t.position);
client.collect_block(pos);
}
},
@ -1360,7 +1356,7 @@ impl PlayState for SessionState {
self.client.borrow_mut().handle_input(
InputKind::Ability(0),
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
},
@ -1368,7 +1364,7 @@ impl PlayState for SessionState {
self.client.borrow_mut().handle_input(
InputKind::Ability(1),
state,
self.inputs.select_pos,
default_select_pos,
self.target_entity,
);
},