mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Updated changelog, fixed incorrect hint for mineable blocks
This commit is contained in:
parent
043016a433
commit
bde3aade2b
@ -36,6 +36,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Crushing damage now does poise damage to a target equal to the amount mitigated by armor
|
- Crushing damage now does poise damage to a target equal to the amount mitigated by armor
|
||||||
- UI to select abilities and assign to hotbar
|
- UI to select abilities and assign to hotbar
|
||||||
- Position of abilities on hotbar is now persisted through the server
|
- Position of abilities on hotbar is now persisted through the server
|
||||||
|
- Interation hints now appear for sprites and entities
|
||||||
|
- Players can now mount and ride pets
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ Whenever you feel ready, try to get even better equipment from the many challeng
|
|||||||
"hud.pick_up": "Pick up",
|
"hud.pick_up": "Pick up",
|
||||||
"hud.open": "Open",
|
"hud.open": "Open",
|
||||||
"hud.use": "Use",
|
"hud.use": "Use",
|
||||||
|
"hud.mine": "Mine",
|
||||||
"hud.talk": "Talk",
|
"hud.talk": "Talk",
|
||||||
"hud.trade": "Trade",
|
"hud.trade": "Trade",
|
||||||
"hud.mount": "Mount",
|
"hud.mount": "Mount",
|
||||||
|
@ -57,7 +57,10 @@ use crate::{
|
|||||||
game_input::GameInput,
|
game_input::GameInput,
|
||||||
hud::{img_ids::ImgsRot, prompt_dialog::DialogOutcomeEvent},
|
hud::{img_ids::ImgsRot, prompt_dialog::DialogOutcomeEvent},
|
||||||
render::UiDrawer,
|
render::UiDrawer,
|
||||||
scene::camera::{self, Camera},
|
scene::{
|
||||||
|
camera::{self, Camera},
|
||||||
|
terrain::Interaction,
|
||||||
|
},
|
||||||
session::{
|
session::{
|
||||||
interactable::Interactable,
|
interactable::Interactable,
|
||||||
settings_change::{Chat as ChatChange, Interface as InterfaceChange, SettingsChange},
|
settings_change::{Chat as ChatChange, Interface as InterfaceChange, SettingsChange},
|
||||||
@ -1726,7 +1729,7 @@ impl Hud {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Render overtime for an interactable block
|
// Render overtime for an interactable block
|
||||||
if let Some(Interactable::Block(block, pos, _)) = interactable {
|
if let Some(Interactable::Block(block, pos, interaction)) = interactable {
|
||||||
let overitem_id = overitem_walker.next(
|
let overitem_id = overitem_walker.next(
|
||||||
&mut self.ids.overitems,
|
&mut self.ids.overitems,
|
||||||
&mut ui_widgets.widget_id_generator(),
|
&mut ui_widgets.widget_id_generator(),
|
||||||
@ -1763,7 +1766,17 @@ impl Hud {
|
|||||||
pos.distance_squared(player_pos),
|
pos.distance_squared(player_pos),
|
||||||
overitem_properties,
|
overitem_properties,
|
||||||
&self.fonts,
|
&self.fonts,
|
||||||
vec![(GameInput::Interact, i18n.get("hud.collect").to_string())],
|
match interaction {
|
||||||
|
Interaction::Collect => {
|
||||||
|
vec![(GameInput::Interact, i18n.get("hud.collect").to_string())]
|
||||||
|
},
|
||||||
|
Interaction::Craft(_) => {
|
||||||
|
vec![(GameInput::Interact, i18n.get("hud.use").to_string())]
|
||||||
|
},
|
||||||
|
Interaction::Mine => {
|
||||||
|
vec![(GameInput::Primary, i18n.get("hud.mine").to_string())]
|
||||||
|
},
|
||||||
|
},
|
||||||
)
|
)
|
||||||
.set(overitem_id, ui_widgets);
|
.set(overitem_id, ui_widgets);
|
||||||
} else if let Some(desc) = block.get_sprite().and_then(|s| get_sprite_desc(s, i18n))
|
} else if let Some(desc) = block.get_sprite().and_then(|s| get_sprite_desc(s, i18n))
|
||||||
@ -1960,6 +1973,7 @@ impl Hud {
|
|||||||
},
|
},
|
||||||
Some(comp::Alignment::Owned(owner))
|
Some(comp::Alignment::Owned(owner))
|
||||||
if Some(*owner) == client.uid()
|
if Some(*owner) == client.uid()
|
||||||
|
&& !client.is_riding()
|
||||||
&& is_mount.is_none()
|
&& is_mount.is_none()
|
||||||
&& dist_sqr < common::consts::MAX_MOUNT_RANGE.powi(2) =>
|
&& dist_sqr < common::consts::MAX_MOUNT_RANGE.powi(2) =>
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,7 @@ use vek::*;
|
|||||||
pub enum Interaction {
|
pub enum Interaction {
|
||||||
Collect,
|
Collect,
|
||||||
Craft(CraftingTab),
|
Craft(CraftingTab),
|
||||||
|
Mine,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
|
@ -22,7 +22,7 @@ use crate::scene::{terrain::Interaction, Scene};
|
|||||||
// enum since they don't use the interaction key
|
// enum since they don't use the interaction key
|
||||||
#[derive(Clone, Copy, Debug)]
|
#[derive(Clone, Copy, Debug)]
|
||||||
pub enum Interactable {
|
pub enum Interactable {
|
||||||
Block(Block, Vec3<i32>, Option<Interaction>),
|
Block(Block, Vec3<i32>, Interaction),
|
||||||
Entity(specs::Entity),
|
Entity(specs::Entity),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,9 +81,8 @@ pub(super) fn select_interactable(
|
|||||||
.or_else(|| {
|
.or_else(|| {
|
||||||
collect_target.and_then(|t| {
|
collect_target.and_then(|t| {
|
||||||
if Some(t.distance) == nearest_dist {
|
if Some(t.distance) == nearest_dist {
|
||||||
get_block(client, t).map(|b| {
|
get_block(client, t)
|
||||||
Interactable::Block(b, t.position_int(), Some(Interaction::Collect))
|
.map(|b| Interactable::Block(b, t.position_int(), Interaction::Collect))
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -99,7 +98,7 @@ pub(super) fn select_interactable(
|
|||||||
// elements (e.g. minerals). The mineable weakrock are used
|
// elements (e.g. minerals). The mineable weakrock are used
|
||||||
// in the terrain selected_pos, but is not an interactable.
|
// in the terrain selected_pos, but is not an interactable.
|
||||||
if b.mine_tool().is_some() && b.is_air() {
|
if b.mine_tool().is_some() && b.is_air() {
|
||||||
Some(Interactable::Block(b, t.position_int(), None))
|
Some(Interactable::Block(b, t.position_int(), Interaction::Mine))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -200,7 +199,7 @@ pub(super) fn select_interactable(
|
|||||||
.get(block_pos)
|
.get(block_pos)
|
||||||
.ok()
|
.ok()
|
||||||
.copied()
|
.copied()
|
||||||
.map(|b| Interactable::Block(b, block_pos, Some(*interaction)))
|
.map(|b| Interactable::Block(b, block_pos, *interaction))
|
||||||
})
|
})
|
||||||
.or_else(|| closest_interactable_entity.map(|(e, _)| Interactable::Entity(e)))
|
.or_else(|| closest_interactable_entity.map(|(e, _)| Interactable::Entity(e)))
|
||||||
}
|
}
|
||||||
|
@ -713,18 +713,18 @@ impl PlayState for SessionState {
|
|||||||
match interactable {
|
match interactable {
|
||||||
Interactable::Block(block, pos, interaction) => {
|
Interactable::Block(block, pos, interaction) => {
|
||||||
match interaction {
|
match interaction {
|
||||||
Some(Interaction::Collect) => {
|
Interaction::Collect => {
|
||||||
if block.is_collectible() {
|
if block.is_collectible() {
|
||||||
client.collect_block(pos);
|
client.collect_block(pos);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Some(Interaction::Craft(tab)) => {
|
Interaction::Craft(tab) => {
|
||||||
self.hud.show.open_crafting_tab(
|
self.hud.show.open_crafting_tab(
|
||||||
tab,
|
tab,
|
||||||
block.get_sprite().map(|s| (pos, s)),
|
block.get_sprite().map(|s| (pos, s)),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
_ => {},
|
Interaction::Mine => {},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Interactable::Entity(entity) => {
|
Interactable::Entity(entity) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user