Extract 'create_spellbook_button' function from 'update'

This commit is contained in:
Dr. Dystopia 2021-06-14 21:16:36 +02:00
parent 109d87bf81
commit 0bda039a94

View File

@ -11,8 +11,8 @@ use crate::{
use client::Client; use client::Client;
use common::comp::{SkillSet, Stats}; use common::comp::{SkillSet, Stats};
use conrod_core::{ use conrod_core::{
widget::{self, Button, Image, Text}, widget::{self, button::TimesClicked, Button, Image, State as ConrodState, Text},
widget_ids, Color, Colorable, Positionable, Sizeable, Widget, WidgetCommon, widget_ids, Color, Colorable, Positionable, Sizeable, UiCell, Widget, WidgetCommon,
}; };
widget_ids! { widget_ids! {
struct Ids { struct Ids {
@ -122,7 +122,7 @@ impl<'a> Widget for Buttons<'a> {
#[allow(clippy::unused_unit)] // TODO: Pending review in #587 #[allow(clippy::unused_unit)] // TODO: Pending review in #587
fn style(&self) -> Self::Style { () } fn style(&self) -> Self::Style { () }
fn update(self, args: widget::UpdateArgs<Self>) -> Self::Event { fn update(mut self, args: widget::UpdateArgs<Self>) -> Self::Event {
let widget::UpdateArgs { state, ui, .. } = args; let widget::UpdateArgs { state, ui, .. } = args;
let invs = self.client.inventories(); let invs = self.client.inventories();
let inventory = match invs.get(self.client.entity()) { let inventory = match invs.get(self.client.entity()) {
@ -339,24 +339,9 @@ impl<'a> Widget for Buttons<'a> {
} }
// Diary // Diary
let unspent_sp = self.skill_set.has_available_sp(); let unspent_sp = self.skill_set.has_available_sp();
if Button::image(if !unspent_sp { if self
self.imgs.spellbook_button .create_spellbook_button(state, ui, &localized_strings, &button_tooltip, unspent_sp)
} else { .was_clicked()
self.imgs.spellbook_hover
})
.w_h(28.0, 25.0)
.left_from(state.ids.map_button, 10.0)
.hover_image(self.imgs.spellbook_hover)
.press_image(self.imgs.spellbook_press)
.with_tooltip(
self.tooltip_manager,
&localized_strings.get("hud.diary"),
"",
&button_tooltip,
TEXT_COLOR,
)
.set(state.ids.spellbook_button, ui)
.was_clicked()
{ {
return Some(Event::ToggleSpell); return Some(Event::ToggleSpell);
} }
@ -443,3 +428,32 @@ impl<'a> Widget for Buttons<'a> {
None None
} }
} }
impl<'a> Buttons<'a> {
fn create_spellbook_button(
&mut self,
state: &mut ConrodState<'_, State>,
ui: &mut UiCell,
localized_strings: &&Localization,
button_tooltip: &Tooltip,
unspent_sp: bool,
) -> TimesClicked {
Button::image(if unspent_sp {
self.imgs.spellbook_hover
} else {
self.imgs.spellbook_button
})
.w_h(28.0, 25.0)
.left_from(state.ids.map_button, 10.0)
.hover_image(self.imgs.spellbook_hover)
.press_image(self.imgs.spellbook_press)
.with_tooltip(
self.tooltip_manager,
&localized_strings.get("hud.diary"),
"",
&button_tooltip,
TEXT_COLOR,
)
.set(state.ids.spellbook_button, ui)
}
}