mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Simplified match, use filter and cargo fmt suggestions
This commit is contained in:
parent
25e4e09ab4
commit
3cb5132ab9
@ -2122,53 +2122,31 @@ impl Hud {
|
||||
})]
|
||||
},
|
||||
BlockInteraction::Mine(mine_tool) => {
|
||||
match &info.active_mine_tool {
|
||||
Some(active_mine_tool) => {
|
||||
match (mine_tool, active_mine_tool) {
|
||||
(ToolKind::Pick, ToolKind::Pick) => {
|
||||
vec![(
|
||||
Some(GameInput::Primary),
|
||||
i18n.get_msg("hud-mine").to_string(),
|
||||
)]
|
||||
},
|
||||
(ToolKind::Pick, _) => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_pickaxe").to_string())]
|
||||
},
|
||||
(ToolKind::Shovel, ToolKind::Shovel) => {
|
||||
vec![(
|
||||
Some(GameInput::Primary),
|
||||
i18n.get_msg("hud-dig").to_string(),
|
||||
)]
|
||||
},
|
||||
(ToolKind::Shovel, _) => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_shovel").to_string())]
|
||||
},
|
||||
_ => {
|
||||
vec![(
|
||||
None,
|
||||
i18n.get_msg("hud-mine-needs_unhandled_case").to_string(),
|
||||
)]
|
||||
},
|
||||
}
|
||||
match (mine_tool, &info.active_mine_tool) {
|
||||
(ToolKind::Pick, Some(ToolKind::Pick)) => {
|
||||
vec![(
|
||||
Some(GameInput::Primary),
|
||||
i18n.get_msg("hud-mine").to_string(),
|
||||
)]
|
||||
},
|
||||
(ToolKind::Pick, _) => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_pickaxe").to_string())]
|
||||
},
|
||||
(ToolKind::Shovel, Some(ToolKind::Shovel)) => {
|
||||
vec![(
|
||||
Some(GameInput::Primary),
|
||||
i18n.get_msg("hud-dig").to_string(),
|
||||
)]
|
||||
},
|
||||
(ToolKind::Shovel, _) => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_shovel").to_string())]
|
||||
},
|
||||
_ => {
|
||||
vec![(
|
||||
None,
|
||||
i18n.get_msg("hud-mine-needs_unhandled_case").to_string(),
|
||||
)]
|
||||
},
|
||||
None => {
|
||||
match mine_tool {
|
||||
ToolKind::Pick => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_pickaxe").to_string())]
|
||||
},
|
||||
ToolKind::Shovel => {
|
||||
vec![(None, i18n.get_msg("hud-mine-needs_shovel").to_string())]
|
||||
}
|
||||
// TODO: The required tool for mining something may not always be a
|
||||
// pickaxe!
|
||||
_ => {
|
||||
vec![(
|
||||
None,
|
||||
i18n.get_msg("hud-mine-needs_unhandled_case").to_string(),
|
||||
)]
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
BlockInteraction::Mount => {
|
||||
|
@ -601,22 +601,16 @@ impl PlayState for SessionState {
|
||||
.get(player_entity)
|
||||
.map_or_else(|| false, |cb| cb.enabled);
|
||||
|
||||
let active_mine_tool: Option<ToolKind> = if client.is_wielding() == Some(true) { client
|
||||
.inventories()
|
||||
.get(player_entity)
|
||||
.and_then(|inv| inv.equipped(EquipSlot::ActiveMainhand))
|
||||
.and_then(|item| item.tool_info())
|
||||
.map_or(None, |tool_kind| {
|
||||
match tool_kind {
|
||||
ToolKind::Pick => Some(tool_kind),
|
||||
ToolKind::Shovel => Some(tool_kind),
|
||||
_ => None,
|
||||
}
|
||||
})
|
||||
let active_mine_tool: Option<ToolKind> = if client.is_wielding() == Some(true) {
|
||||
client
|
||||
.inventories()
|
||||
.get(player_entity)
|
||||
.and_then(|inv| inv.equipped(EquipSlot::ActiveMainhand))
|
||||
.and_then(|item| item.tool_info())
|
||||
.filter(|tool_kind| matches!(tool_kind, ToolKind::Pick | ToolKind::Shovel))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
|
||||
// Check to see whether we're aiming at anything
|
||||
let (build_target, collect_target, entity_target, mine_target, terrain_target) =
|
||||
@ -658,17 +652,21 @@ impl PlayState for SessionState {
|
||||
|
||||
// Nearest block to consider with GameInput primary or secondary key.
|
||||
let nearest_block_dist = find_shortest_distance(&[
|
||||
mine_target.filter(|_| active_mine_tool.is_some()).map(|t| t.distance),
|
||||
mine_target
|
||||
.filter(|_| active_mine_tool.is_some())
|
||||
.map(|t| t.distance),
|
||||
build_target.filter(|_| can_build).map(|t| t.distance),
|
||||
]);
|
||||
// Nearest block to be highlighted in the scene (self.scene.set_select_pos).
|
||||
let nearest_scene_dist = find_shortest_distance(&[
|
||||
nearest_block_dist,
|
||||
collect_target.filter(|_| active_mine_tool.is_none()).map(|t| t.distance),
|
||||
collect_target
|
||||
.filter(|_| active_mine_tool.is_none())
|
||||
.map(|t| t.distance),
|
||||
]);
|
||||
// Set break_block_pos only if mining is closest.
|
||||
self.inputs.break_block_pos = if let Some(mt) =
|
||||
mine_target.filter(|mt| active_mine_tool.is_some() && nearest_scene_dist == Some(mt.distance))
|
||||
self.inputs.break_block_pos = if let Some(mt) = mine_target
|
||||
.filter(|mt| active_mine_tool.is_some() && nearest_scene_dist == Some(mt.distance))
|
||||
{
|
||||
self.scene.set_select_pos(Some(mt.position_int()));
|
||||
Some(mt.position)
|
||||
|
@ -103,7 +103,8 @@ pub(super) fn targets_under_cursor(
|
||||
};
|
||||
|
||||
let (collect_pos, _, collect_cam_ray) = find_pos(|b: Block| b.is_collectible());
|
||||
let (mine_pos, _, mine_cam_ray) = active_mine_tool.is_some()
|
||||
let (mine_pos, _, mine_cam_ray) = active_mine_tool
|
||||
.is_some()
|
||||
.then(|| find_pos(|b: Block| b.mine_tool().is_some()))
|
||||
.unwrap_or((None, None, None));
|
||||
let (solid_pos, place_block_pos, solid_cam_ray) = find_pos(|b: Block| b.is_filled());
|
||||
|
Loading…
Reference in New Issue
Block a user