mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
make the ContollerInputs.select_pos be explicitly the breakable blacks for mining
This commit is contained in:
parent
c5d66192fc
commit
5c66f73bb4
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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,
|
||||
);
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user