mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Show level and xp on character menu
This commit is contained in:
parent
5c84508015
commit
198d532e38
@ -1,4 +1,5 @@
|
||||
use super::{img_ids::Imgs, Fonts, TEXT_COLOR, XP_COLOR};
|
||||
use common::comp::Stats;
|
||||
use conrod_core::{
|
||||
color,
|
||||
widget::{self, Button, Image, Rectangle, Text},
|
||||
@ -69,16 +70,18 @@ widget_ids! {
|
||||
pub struct CharacterWindow<'a> {
|
||||
imgs: &'a Imgs,
|
||||
fonts: &'a Fonts,
|
||||
stats: &'a Stats,
|
||||
|
||||
#[conrod(common_builder)]
|
||||
common: widget::CommonBuilder,
|
||||
}
|
||||
|
||||
impl<'a> CharacterWindow<'a> {
|
||||
pub fn new(imgs: &'a Imgs, fonts: &'a Fonts) -> Self {
|
||||
pub fn new(imgs: &'a Imgs, fonts: &'a Fonts, stats: &'a Stats) -> Self {
|
||||
Self {
|
||||
imgs,
|
||||
fonts,
|
||||
stats,
|
||||
common: widget::CommonBuilder::default(),
|
||||
}
|
||||
}
|
||||
@ -104,8 +107,13 @@ impl<'a> Widget for CharacterWindow<'a> {
|
||||
fn update(self, args: widget::UpdateArgs<Self>) -> Self::Event {
|
||||
let widget::UpdateArgs { id, state, ui, .. } = args;
|
||||
|
||||
// TODO: Read from parameter/character struct.
|
||||
let xp_percentage = 0.4;
|
||||
let xp_percentage = self.stats.exp.get_current() / self.stats.exp.get_maximum();
|
||||
let xp_treshold = format!(
|
||||
"{}/{}",
|
||||
self.stats.exp.get_current(),
|
||||
self.stats.exp.get_maximum()
|
||||
);
|
||||
let level = (self.stats.level.get_level()).to_string();
|
||||
|
||||
// Frame
|
||||
Image::new(self.imgs.window_3)
|
||||
@ -330,8 +338,8 @@ impl<'a> Widget for CharacterWindow<'a> {
|
||||
//.label_font_size(14)
|
||||
//.set(state.charwindow_tab1, ui);
|
||||
|
||||
// TODO: Use an actual character level.
|
||||
Text::new("1")
|
||||
// Level
|
||||
Text::new(&level)
|
||||
.mid_top_with_margin_on(state.charwindow_rectangle, 10.0)
|
||||
.font_id(self.fonts.opensans)
|
||||
.font_size(30)
|
||||
@ -355,8 +363,7 @@ impl<'a> Widget for CharacterWindow<'a> {
|
||||
.set(state.charwindow_tab1_expbar, ui);
|
||||
|
||||
// Exp-Text
|
||||
// TODO: Shows current Exp over the next threshold Exp.
|
||||
Text::new("120/170")
|
||||
Text::new(&xp_treshold)
|
||||
.mid_top_with_margin_on(state.charwindow_tab1_expbar, 10.0)
|
||||
.font_id(self.fonts.opensans)
|
||||
.font_size(15)
|
||||
|
@ -690,7 +690,10 @@ impl Hud {
|
||||
|
||||
// Character Window
|
||||
if let Windows::CharacterAnd(small) = self.show.open_windows {
|
||||
match CharacterWindow::new(&self.imgs, &self.fonts)
|
||||
let ecs = client.state().ecs();
|
||||
let stats = ecs.read_storage::<comp::Stats>();
|
||||
let player_stats = stats.get(client.entity()).unwrap();
|
||||
match CharacterWindow::new(&self.imgs, &self.fonts, &player_stats)
|
||||
.set(self.ids.character_window, ui_widgets)
|
||||
{
|
||||
Some(character_window::Event::Close) => {
|
||||
|
Loading…
Reference in New Issue
Block a user