mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
flashing buttons for available points, WIP lock/unlock indicator
Condensed UI code. Removed some hardcoding. icons squash later, WIP colouring for unavailable skills
This commit is contained in:
parent
51c0bd765f
commit
30df603115
BIN
assets/voxygen/element/icons/2haxe_m2.png
(Stored with Git LFS)
BIN
assets/voxygen/element/icons/2haxe_m2.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/element/icons/2hhammer_m2.png
(Stored with Git LFS)
BIN
assets/voxygen/element/icons/2hhammer_m2.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/health_plus.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/health_plus.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/stamina_plus.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/stamina_plus.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_axe.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_axe.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_bow.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_bow.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_hammer.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_hammer.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_sceptre.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_sceptre.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_staff-0.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_staff-0.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/element/icons/skilltree/unlock_sword.png
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/element/icons/skilltree/unlock_sword.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1012,14 +1012,7 @@ fn handle_players(
|
|||||||
ChatType::CommandInfo,
|
ChatType::CommandInfo,
|
||||||
entity_tuples.join().fold(
|
entity_tuples.join().fold(
|
||||||
format!("{} online players:", entity_tuples.join().count()),
|
format!("{} online players:", entity_tuples.join().count()),
|
||||||
|s, (_, player, stat)| {
|
|s, (_, player, stat)| format!("{}\n[{}]{}", s, player.alias, stat.name,),
|
||||||
format!(
|
|
||||||
"{}\n[{}]{}",
|
|
||||||
s,
|
|
||||||
player.alias,
|
|
||||||
stat.name,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
client::Client,
|
client::Client,
|
||||||
comp::{biped_large, quadruped_low, quadruped_medium, quadruped_small, skills::SkillGroupType, theropod, PhysicsState},
|
comp::{
|
||||||
|
biped_large, quadruped_low, quadruped_medium, quadruped_small, skills::SkillGroupType, theropod,
|
||||||
|
PhysicsState,
|
||||||
|
},
|
||||||
rtsim::RtSim,
|
rtsim::RtSim,
|
||||||
Server, SpawnPoint, StateExt,
|
Server, SpawnPoint, StateExt,
|
||||||
};
|
};
|
||||||
@ -22,10 +25,7 @@ use common::{
|
|||||||
vol::ReadVol,
|
vol::ReadVol,
|
||||||
Damage, DamageSource, Explosion, GroupTarget, RadiusEffect,
|
Damage, DamageSource, Explosion, GroupTarget, RadiusEffect,
|
||||||
};
|
};
|
||||||
use common_net::{
|
use common_net::{msg::ServerGeneral, sync::WorldSyncExt};
|
||||||
msg::ServerGeneral,
|
|
||||||
sync::WorldSyncExt,
|
|
||||||
};
|
|
||||||
use common_sys::state::BlockChange;
|
use common_sys::state::BlockChange;
|
||||||
use comp::item::Reagent;
|
use comp::item::Reagent;
|
||||||
use hashbrown::HashSet;
|
use hashbrown::HashSet;
|
||||||
|
@ -59,9 +59,7 @@ pub fn load_character_data(
|
|||||||
char_id: CharacterId,
|
char_id: CharacterId,
|
||||||
connection: VelorenTransaction,
|
connection: VelorenTransaction,
|
||||||
) -> CharacterDataResult {
|
) -> CharacterDataResult {
|
||||||
use schema::{
|
use schema::{body::dsl::*, character::dsl::*, item::dsl::*, skill_group::dsl::*};
|
||||||
body::dsl::*, character::dsl::*, item::dsl::*, skill_group::dsl::*,
|
|
||||||
};
|
|
||||||
|
|
||||||
let character_containers = get_pseudo_containers(connection, char_id)?;
|
let character_containers = get_pseudo_containers(connection, char_id)?;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use super::{
|
use super::{
|
||||||
img_ids::{Imgs, ImgsRot},
|
img_ids::{Imgs, ImgsRot},
|
||||||
item_imgs::{ItemImgs, ItemKey::Tool},
|
item_imgs::{ItemImgs, ItemKey::Tool},
|
||||||
Show, QUALITY_LEGENDARY, TEXT_COLOR, UI_HIGHLIGHT_0, UI_MAIN, XP_COLOR,
|
Show, TEXT_COLOR, UI_HIGHLIGHT_0, UI_MAIN, XP_COLOR, HP_COLOR, CRITICAL_HP_COLOR,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
i18n::Localization,
|
i18n::Localization,
|
||||||
@ -165,6 +165,7 @@ pub struct Diary<'a> {
|
|||||||
localized_strings: &'a Localization,
|
localized_strings: &'a Localization,
|
||||||
rot_imgs: &'a ImgsRot,
|
rot_imgs: &'a ImgsRot,
|
||||||
tooltip_manager: &'a mut TooltipManager,
|
tooltip_manager: &'a mut TooltipManager,
|
||||||
|
pulse: f32,
|
||||||
|
|
||||||
#[conrod(common_builder)]
|
#[conrod(common_builder)]
|
||||||
common: widget::CommonBuilder,
|
common: widget::CommonBuilder,
|
||||||
@ -186,6 +187,7 @@ impl<'a> Diary<'a> {
|
|||||||
localized_strings: &'a Localization,
|
localized_strings: &'a Localization,
|
||||||
rot_imgs: &'a ImgsRot,
|
rot_imgs: &'a ImgsRot,
|
||||||
tooltip_manager: &'a mut TooltipManager,
|
tooltip_manager: &'a mut TooltipManager,
|
||||||
|
pulse: f32,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
show,
|
show,
|
||||||
@ -197,6 +199,7 @@ impl<'a> Diary<'a> {
|
|||||||
localized_strings,
|
localized_strings,
|
||||||
rot_imgs,
|
rot_imgs,
|
||||||
tooltip_manager,
|
tooltip_manager,
|
||||||
|
pulse,
|
||||||
common: widget::CommonBuilder::default(),
|
common: widget::CommonBuilder::default(),
|
||||||
created_btns_top_l: 0,
|
created_btns_top_l: 0,
|
||||||
created_btns_top_r: 0,
|
created_btns_top_r: 0,
|
||||||
@ -268,6 +271,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
.font_id(self.fonts.cyri.conrod_id)
|
.font_id(self.fonts.cyri.conrod_id)
|
||||||
.desc_text_color(TEXT_COLOR);
|
.desc_text_color(TEXT_COLOR);
|
||||||
let sel_tab = &self.show.skilltreetab;
|
let sel_tab = &self.show.skilltreetab;
|
||||||
|
let frame_ani = (self.pulse * 4.0/* speed factor */).cos() * 0.5 + 0.8; //Animation timer
|
||||||
// Frame
|
// Frame
|
||||||
Image::new(self.imgs.diary_bg)
|
Image::new(self.imgs.diary_bg)
|
||||||
.w_h(1202.0, 886.0)
|
.w_h(1202.0, 886.0)
|
||||||
@ -330,183 +334,68 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
.resize(TREES.len(), &mut ui.widget_id_generator())
|
.resize(TREES.len(), &mut ui.widget_id_generator())
|
||||||
});
|
});
|
||||||
for i in TREES.iter().copied().enumerate() {
|
for i in TREES.iter().copied().enumerate() {
|
||||||
let locked = match i.1 {
|
let locked = !skill_tree_from_str(i.1)
|
||||||
"General Combat" => false,
|
.map_or(false, |st| self.stats.skill_set.contains_skill_group(st));
|
||||||
"Sword" => true,
|
|
||||||
"Hammer" => true,
|
|
||||||
"Axe" => true,
|
|
||||||
"Sceptre" => true,
|
|
||||||
"Bow" => true,
|
|
||||||
"Fire Staff" => true,
|
|
||||||
_ => false,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Background weapon image
|
// Background weapon image
|
||||||
let img = Image::new(
|
let img = Image::new(match i.1 {
|
||||||
match i.1 {
|
"General Combat" => self.imgs.swords_crossed,
|
||||||
"General Combat" => self.imgs.swords_crossed,
|
"Sword" => self.imgs.sword,
|
||||||
"Sword" => self.imgs.sword,
|
"Hammer" => self.imgs.hammer,
|
||||||
"Hammer" => self.imgs.hammer,
|
"Axe" => self.imgs.axe,
|
||||||
"Axe" => self.imgs.axe,
|
"Sceptre" => self.imgs.sceptre,
|
||||||
"Sceptre" => self.imgs.sceptre,
|
"Bow" => self.imgs.bow,
|
||||||
"Bow" => self.imgs.bow,
|
"Fire Staff" => self.imgs.staff,
|
||||||
"Fire Staff" => self.imgs.staff,
|
_ => self.imgs.nothing,
|
||||||
_ => self.imgs.nothing,
|
});
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
let img = if i.0 == 0 {
|
let img = if i.0 == 0 {
|
||||||
img.top_left_with_margins_on(state.content_align, tweak!(10.0), tweak!(5.0))
|
img.top_left_with_margins_on(state.content_align, tweak!(10.0), tweak!(5.0))
|
||||||
} else {
|
} else {
|
||||||
img.down_from(state.weapon_btns[i.0 - 1], tweak!(5.0))
|
img.down_from(state.weapon_btns[i.0 - 1], tweak!(5.0))
|
||||||
};
|
};
|
||||||
let tooltip_txt = if !locked {""} else {"Not yet unlocked"};
|
let tooltip_txt = if !locked { "" } else { "Not yet unlocked" };
|
||||||
img.w_h(tweak!(50.0), tweak!(50.0))
|
img.w_h(tweak!(50.0), tweak!(50.0))
|
||||||
.set(state.weapon_imgs[i.0], ui);
|
.set(state.weapon_imgs[i.0], ui);
|
||||||
// Lock Image
|
// Lock Image
|
||||||
if locked {Image::new(self.imgs.lock)
|
if locked {
|
||||||
.w_h(50.0, 50.0)
|
Image::new(self.imgs.lock)
|
||||||
.middle_of(state.weapon_imgs[i.0])
|
.w_h(50.0, 50.0)
|
||||||
.graphics_for(state.weapon_imgs[i.0])
|
.middle_of(state.weapon_imgs[i.0])
|
||||||
.color(Some(Color::Rgba(1.0, 1.0, 1.0, tweak!(0.8))))
|
.graphics_for(state.weapon_imgs[i.0])
|
||||||
.set(state.lock_imgs[i.0], ui);}
|
.color(Some(Color::Rgba(1.0, 1.0, 1.0, tweak!(0.8))))
|
||||||
|
.set(state.lock_imgs[i.0], ui);
|
||||||
|
}
|
||||||
// Weapon icons
|
// Weapon icons
|
||||||
|
let available_pts = skill_tree_from_str(i.1)
|
||||||
|
.map_or(false, |st| self.stats.skill_set.get_available_sp(st) > 0);
|
||||||
|
self.stats.skill_set.get_available_sp(*sel_tab);
|
||||||
if Button::image(
|
if Button::image(
|
||||||
match i.1 {
|
if skill_tree_from_str(i.1).map_or(false, |st| st == *sel_tab || available_pts) {
|
||||||
"General Combat" => match sel_tab {
|
self.imgs.wpn_icon_border_pressed
|
||||||
SelectedSkillTree::General => self.imgs.wpn_icon_border_pressed,
|
} else {
|
||||||
_ => self.imgs.wpn_icon_border,
|
self.imgs.wpn_icon_border
|
||||||
},
|
},
|
||||||
"Sword" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sword) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
"Hammer" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Hammer) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
"Axe" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Axe) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
"Sceptre" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sceptre) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
"Bow" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Bow) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
"Fire Staff" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Staff) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
.w_h(tweak!(50.0), tweak!(50.0))
|
.w_h(tweak!(50.0), tweak!(50.0))
|
||||||
.hover_image(
|
.hover_image(match skill_tree_from_str(i.1).map(|st| st == *sel_tab) {
|
||||||
match i.1 {
|
Some(true) => self.imgs.wpn_icon_border_pressed,
|
||||||
"General Combat" => match sel_tab {
|
Some(false) => self.imgs.wpn_icon_border_mo,
|
||||||
SelectedSkillTree::General => self.imgs.wpn_icon_border_pressed,
|
None => self.imgs.wpn_icon_border,
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
})
|
||||||
},
|
.press_image(match skill_tree_from_str(i.1).map(|st| st == *sel_tab) {
|
||||||
"Sword" => match sel_tab {
|
Some(true) => self.imgs.wpn_icon_border_pressed,
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sword) => {
|
Some(false) => self.imgs.wpn_icon_border_press,
|
||||||
self.imgs.wpn_icon_border_pressed
|
None => self.imgs.wpn_icon_border,
|
||||||
},
|
})
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
"Hammer" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Hammer) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
"Axe" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Axe) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
"Sceptre" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sceptre) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
"Bow" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Bow) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
"Fire Staff" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Staff) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_mo,
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.press_image(
|
|
||||||
match i.1 {
|
|
||||||
"General Combat" => match sel_tab {
|
|
||||||
SelectedSkillTree::General => self.imgs.wpn_icon_border_pressed,
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Sword" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sword) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Hammer" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Hammer) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Axe" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Axe) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Sceptre" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sceptre) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Bow" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Bow) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
"Fire Staff" => match sel_tab {
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Staff) => {
|
|
||||||
self.imgs.wpn_icon_border_pressed
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border_press,
|
|
||||||
},
|
|
||||||
_ => self.imgs.wpn_icon_border,
|
|
||||||
} )
|
|
||||||
.middle_of(state.weapon_imgs[i.0])
|
.middle_of(state.weapon_imgs[i.0])
|
||||||
|
.image_color(
|
||||||
|
if skill_tree_from_str(i.1).map_or(false, |st| st != *sel_tab && available_pts) {
|
||||||
|
Color::Rgba(0.92, 0.76, 0.0, frame_ani)
|
||||||
|
} else {
|
||||||
|
TEXT_COLOR
|
||||||
|
},
|
||||||
|
)
|
||||||
.with_tooltip(
|
.with_tooltip(
|
||||||
self.tooltip_manager,
|
self.tooltip_manager,
|
||||||
i.1,
|
i.1,
|
||||||
@ -517,31 +406,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
.set(state.weapon_btns[i.0], ui)
|
.set(state.weapon_btns[i.0], ui)
|
||||||
.was_clicked()
|
.was_clicked()
|
||||||
{
|
{
|
||||||
match i.1 {
|
events.push(skill_tree_from_str(i.1).map_or(Event::Close, Event::ChangeSkillTree))
|
||||||
"General Combat" => {
|
|
||||||
events.push(Event::ChangeSkillTree(SelectedSkillTree::General))
|
|
||||||
},
|
|
||||||
"Sword" => events.push(Event::ChangeSkillTree(SelectedSkillTree::Weapon(
|
|
||||||
ToolKind::Sword,
|
|
||||||
))),
|
|
||||||
"Hammer" => events.push(Event::ChangeSkillTree(SelectedSkillTree::Weapon(
|
|
||||||
ToolKind::Hammer,
|
|
||||||
))),
|
|
||||||
"Axe" => events.push(Event::ChangeSkillTree(SelectedSkillTree::Weapon(
|
|
||||||
ToolKind::Axe,
|
|
||||||
))),
|
|
||||||
"Sceptre" => events.push(Event::ChangeSkillTree(
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sceptre),
|
|
||||||
)),
|
|
||||||
"Bow" => events.push(Event::ChangeSkillTree(SelectedSkillTree::Weapon(
|
|
||||||
ToolKind::Bow,
|
|
||||||
))),
|
|
||||||
"Fire Staff" => events.push(Event::ChangeSkillTree(
|
|
||||||
SelectedSkillTree::Weapon(ToolKind::Staff),
|
|
||||||
)),
|
|
||||||
_ => events.push(Event::Close),
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Exp Bars and Rank Display
|
// Exp Bars and Rank Display
|
||||||
@ -595,7 +460,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
.mid_top_with_margin_on(state.content_align, tweak!(42.0))
|
.mid_top_with_margin_on(state.content_align, tweak!(42.0))
|
||||||
.font_id(self.fonts.cyri.conrod_id)
|
.font_id(self.fonts.cyri.conrod_id)
|
||||||
.font_size(self.fonts.cyri.scale(tweak!(28)))
|
.font_size(self.fonts.cyri.scale(tweak!(28)))
|
||||||
.color(QUALITY_LEGENDARY)
|
.color(Color::Rgba(0.92, 0.76, 0.0, frame_ani))
|
||||||
.set(state.available_pts_txt, ui);
|
.set(state.available_pts_txt, ui);
|
||||||
}
|
}
|
||||||
let tree_title = match sel_tab {
|
let tree_title = match sel_tab {
|
||||||
@ -794,7 +659,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
// 3 0 4
|
// 3 0 4
|
||||||
// 8 2 7
|
// 8 2 7
|
||||||
let skill = Skill::General(HealthIncrease);
|
let skill = Skill::General(HealthIncrease);
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.health_plus_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_l[0])
|
.middle_of(state.skills_top_l[0])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -820,7 +685,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::General(EnergyIncrease);
|
let skill = Skill::General(EnergyIncrease);
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.stamina_plus_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_l[1])
|
.middle_of(state.skills_top_l[1])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -847,7 +712,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
};
|
};
|
||||||
// Top right skills
|
// Top right skills
|
||||||
let skill = Skill::UnlockGroup(Weapon(Sword));
|
let skill = Skill::UnlockGroup(Weapon(Sword));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_sword_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[0])
|
.middle_of(state.skills_top_r[0])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -873,7 +738,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::UnlockGroup(Weapon(Axe));
|
let skill = Skill::UnlockGroup(Weapon(Axe));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_axe_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[1])
|
.middle_of(state.skills_top_r[1])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -899,7 +764,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::UnlockGroup(Weapon(Hammer));
|
let skill = Skill::UnlockGroup(Weapon(Hammer));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_hammer_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[2])
|
.middle_of(state.skills_top_r[2])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -925,7 +790,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::UnlockGroup(Weapon(Bow));
|
let skill = Skill::UnlockGroup(Weapon(Bow));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_bow_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[3])
|
.middle_of(state.skills_top_r[3])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -951,7 +816,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::UnlockGroup(Weapon(Staff));
|
let skill = Skill::UnlockGroup(Weapon(Staff));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_staff_skill0)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[4])
|
.middle_of(state.skills_top_r[4])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -977,7 +842,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::UnlockGroup(Weapon(Sceptre));
|
let skill = Skill::UnlockGroup(Weapon(Sceptre));
|
||||||
if Button::image(self.imgs.swords_crossed)
|
if Button::image(self.imgs.unlock_sceptre_skill)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[5])
|
.middle_of(state.skills_top_r[5])
|
||||||
.label(&format!(
|
.label(&format!(
|
||||||
@ -1281,19 +1146,22 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
let skill = Skill::Sword(DCost);
|
let skill = Skill::Sword(DCost);
|
||||||
|
let prereqs_met = tweak!(true);
|
||||||
|
let suff_pts = tweak!(false);
|
||||||
|
let label_txt = &format!( "{}/{}",
|
||||||
|
skills.get(&skill).copied().map_or(0, |l| l.unwrap_or(1)),
|
||||||
|
skill.get_max_level().unwrap_or(1));
|
||||||
if Button::image(self.imgs.sword_whirlwind)
|
if Button::image(self.imgs.sword_whirlwind)
|
||||||
.w_h(tweak!(74.0), tweak!(74.0))
|
.w_h(tweak!(74.0), tweak!(74.0))
|
||||||
.middle_of(state.skills_top_r[2])
|
.middle_of(state.skills_top_r[2])
|
||||||
.label(&format!(
|
.label(if prereqs_met {&label_txt} else {""}
|
||||||
"{}/{}",
|
)
|
||||||
skills.get(&skill).copied().map_or(0, |l| l.unwrap_or(1)),
|
|
||||||
skill.get_max_level().unwrap_or(1)
|
|
||||||
))
|
|
||||||
.label_y(conrod_core::position::Relative::Scalar(tweak!(-28.0)))
|
.label_y(conrod_core::position::Relative::Scalar(tweak!(-28.0)))
|
||||||
.label_x(conrod_core::position::Relative::Scalar(tweak!(32.0)))
|
.label_x(conrod_core::position::Relative::Scalar(tweak!(32.0)))
|
||||||
.label_color(TEXT_COLOR)
|
.label_color(if suff_pts {HP_COLOR} else {CRITICAL_HP_COLOR})
|
||||||
.label_font_size(self.fonts.cyri.scale(tweak!(16)))
|
.label_font_size(self.fonts.cyri.scale(tweak!(16)))
|
||||||
.label_font_id(self.fonts.cyri.conrod_id)
|
.label_font_id(self.fonts.cyri.conrod_id)
|
||||||
|
.image_color(if prereqs_met {TEXT_COLOR} else {Color::Rgba(0.41, 0.41, 0.41, tweak!(0.7))})
|
||||||
.with_tooltip(
|
.with_tooltip(
|
||||||
self.tooltip_manager,
|
self.tooltip_manager,
|
||||||
"Dash Cost",
|
"Dash Cost",
|
||||||
@ -3354,3 +3222,16 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events
|
events
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn skill_tree_from_str(string: &str) -> Option<SelectedSkillTree> {
|
||||||
|
match string {
|
||||||
|
"General Combat" => Some(SelectedSkillTree::General),
|
||||||
|
"Sword" => Some(SelectedSkillTree::Weapon(ToolKind::Sword)),
|
||||||
|
"Hammer" => Some(SelectedSkillTree::Weapon(ToolKind::Hammer)),
|
||||||
|
"Axe" => Some(SelectedSkillTree::Weapon(ToolKind::Axe)),
|
||||||
|
"Sceptre" => Some(SelectedSkillTree::Weapon(ToolKind::Sceptre)),
|
||||||
|
"Bow" => Some(SelectedSkillTree::Weapon(ToolKind::Bow)),
|
||||||
|
"Fire Staff" => Some(SelectedSkillTree::Weapon(ToolKind::Staff)),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -154,9 +154,7 @@ image_ids! {
|
|||||||
onehshield_m1: "voxygen.element.icons.swordshield",
|
onehshield_m1: "voxygen.element.icons.swordshield",
|
||||||
onehshield_m2: "voxygen.element.icons.character",
|
onehshield_m2: "voxygen.element.icons.character",
|
||||||
twohhammer_m1: "voxygen.element.icons.2hhammer_m1",
|
twohhammer_m1: "voxygen.element.icons.2hhammer_m1",
|
||||||
twohhammer_m2: "voxygen.element.icons.2hhammer_m2",
|
|
||||||
twohaxe_m1: "voxygen.element.icons.2haxe_m1",
|
twohaxe_m1: "voxygen.element.icons.2haxe_m1",
|
||||||
twohaxe_m2: "voxygen.element.icons.2haxe_m2",
|
|
||||||
bow_m1: "voxygen.element.icons.bow_m1",
|
bow_m1: "voxygen.element.icons.bow_m1",
|
||||||
bow_m2: "voxygen.element.icons.bow_m2",
|
bow_m2: "voxygen.element.icons.bow_m2",
|
||||||
staff_melee: "voxygen.element.icons.staff_m1",
|
staff_melee: "voxygen.element.icons.staff_m1",
|
||||||
@ -169,6 +167,16 @@ image_ids! {
|
|||||||
fire_aoe: "voxygen.element.icons.skill_fire_aoe",
|
fire_aoe: "voxygen.element.icons.skill_fire_aoe",
|
||||||
flamethrower: "voxygen.element.icons.skill_flamethrower",
|
flamethrower: "voxygen.element.icons.skill_flamethrower",
|
||||||
|
|
||||||
|
// Skilltree Icons
|
||||||
|
health_plus_skill: "voxygen.element.icons.skilltree.health_plus",
|
||||||
|
stamina_plus_skill: "voxygen.element.icons.skilltree.stamina_plus",
|
||||||
|
unlock_axe_skill: "voxygen.element.icons.skilltree.unlock_axe",
|
||||||
|
unlock_bow_skill: "voxygen.element.icons.skilltree.unlock_bow",
|
||||||
|
unlock_hammer_skill: "voxygen.element.icons.skilltree.unlock_hammer",
|
||||||
|
unlock_sceptre_skill: "voxygen.element.icons.skilltree.unlock_sceptre",
|
||||||
|
unlock_staff_skill0: "voxygen.element.icons.skilltree.unlock_staff-0",
|
||||||
|
unlock_sword_skill: "voxygen.element.icons.skilltree.unlock_sword",
|
||||||
|
|
||||||
// Skillbar
|
// Skillbar
|
||||||
level_up: "voxygen.element.misc_bg.level_up",
|
level_up: "voxygen.element.misc_bg.level_up",
|
||||||
level_down:"voxygen.element.misc_bg.level_down",
|
level_down:"voxygen.element.misc_bg.level_down",
|
||||||
|
@ -1091,7 +1091,7 @@ impl Hud {
|
|||||||
// Increase font size based on fraction of maximum health
|
// Increase font size based on fraction of maximum health
|
||||||
// "flashes" by having a larger size in the first 100ms
|
// "flashes" by having a larger size in the first 100ms
|
||||||
let font_size_xp = 30
|
let font_size_xp = 30
|
||||||
+ ((*exp as f32 / 300.0 as f32).min(1.0) * 50.0) as u32
|
+ ((*exp as f32 / 300.0).min(1.0) * 50.0) as u32
|
||||||
+ if timer < 0.1 {
|
+ if timer < 0.1 {
|
||||||
FLASH_MAX * (((1.0 - timer / 0.1) * 10.0) as u32)
|
FLASH_MAX * (((1.0 - timer / 0.1) * 10.0) as u32)
|
||||||
} else {
|
} else {
|
||||||
@ -2277,6 +2277,7 @@ impl Hud {
|
|||||||
i18n,
|
i18n,
|
||||||
&self.rot_imgs,
|
&self.rot_imgs,
|
||||||
tooltip_manager,
|
tooltip_manager,
|
||||||
|
self.pulse,
|
||||||
)
|
)
|
||||||
.set(self.ids.diary, ui_widgets)
|
.set(self.ids.diary, ui_widgets)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user