From 5c66f73bb491fe15b4c9caf926e8d20e5db7e4b0 Mon Sep 17 00:00:00 2001 From: anomaluridae Date: Mon, 13 Sep 2021 18:51:54 -0700 Subject: [PATCH] make the ContollerInputs.select_pos be explicitly the breakable blacks for mining --- common/src/comp/controller.rs | 4 ++-- common/src/states/basic_melee.rs | 2 +- common/src/states/charged_melee.rs | 2 +- common/src/states/combo_melee.rs | 2 +- common/src/states/dash_melee.rs | 4 ++-- common/src/states/leap_melee.rs | 2 +- common/src/states/spin_melee.rs | 2 +- voxygen/src/session/mod.rs | 28 ++++++++++++---------------- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/common/src/comp/controller.rs b/common/src/comp/controller.rs index 90e85909f8..93f81a49cd 100644 --- a/common/src/comp/controller.rs +++ b/common/src/comp/controller.rs @@ -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>, + pub break_block_pos: Option>, /// 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; } } diff --git a/common/src/states/basic_melee.rs b/common/src/states/basic_melee.rs index 3e83562c6e..982a93f5d4 100644 --- a/common/src/states/basic_melee.rs +++ b/common/src/states/basic_melee.rs @@ -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), diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index 9ed6d641ff..f3c480f6da 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -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), diff --git a/common/src/states/combo_melee.rs b/common/src/states/combo_melee.rs index ce133609ce..df55b12d89 100644 --- a/common/src/states/combo_melee.rs +++ b/common/src/states/combo_melee.rs @@ -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), diff --git a/common/src/states/dash_melee.rs b/common/src/states/dash_melee.rs index 6deed4ac07..d616c30b3c 100644 --- a/common/src/states/dash_melee.rs +++ b/common/src/states/dash_melee.rs @@ -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), diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index dfcdc6ce67..bc9f09be6b 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -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), diff --git a/common/src/states/spin_melee.rs b/common/src/states/spin_melee.rs index 948a75537d..e8372abcec 100644 --- a/common/src/states/spin_melee.rs +++ b/common/src/states/spin_melee.rs @@ -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), diff --git a/voxygen/src/session/mod.rs b/voxygen/src/session/mod.rs index fa53ad3810..7092c33239 100644 --- a/voxygen/src/session/mod.rs +++ b/voxygen/src/session/mod.rs @@ -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, ); },