UI for sword skill tree.

This commit is contained in:
Sam 2022-09-06 12:59:30 -04:00
parent b09b0222c4
commit 356c26cc66
29 changed files with 379 additions and 85 deletions

BIN
assets/voxygen/element/skills/sword/balanced_finisher.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/balanced_thrust.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/cleaving_dive.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/cleaving_finisher.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/cleaving_spin.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/crippling_finisher.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/crippling_gouge.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/crippling_strike.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/defensive_bulwark.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/defensive_retreat.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/heavy_finisher.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/heavy_fortitude.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/heavy_pommelstrike.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/mobility_agility.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/mobility_feint.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/offensive_advance.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/offensive_finisher.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/parrying_counter.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/parrying_parry.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/parrying_riposte.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/reaching_charge.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/reaching_flurry.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/skills/sword/reaching_skewer.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/diary/sword_bg.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -10,6 +10,8 @@ common-abilities-staff-fireshockwave = Ring of Fire
.desc = Ignites the ground with fiery shockwave. .desc = Ignites the ground with fiery shockwave.
common-abilities-sceptre-wardingaura = Warding Aura common-abilities-sceptre-wardingaura = Warding Aura
.desc = Wards your allies against enemy attacks. .desc = Wards your allies against enemy attacks.
# Sword abilities
common-abilities-sword-balanced_combo = Balanced Stance common-abilities-sword-balanced_combo = Balanced Stance
.desc = This stance has few downsides, but is not particularly special. .desc = This stance has few downsides, but is not particularly special.
common-abilities-sword-balanced_thrust = Sword Thrust common-abilities-sword-balanced_thrust = Sword Thrust

View File

@ -45,6 +45,7 @@ use common::{
}, },
consts::{ENERGY_PER_LEVEL, HP_PER_LEVEL}, consts::{ENERGY_PER_LEVEL, HP_PER_LEVEL},
}; };
use inline_tweak::tweak;
use std::borrow::Cow; use std::borrow::Cow;
const ART_SIZE: [f64; 2] = [320.0, 320.0]; const ART_SIZE: [f64; 2] = [320.0, 320.0];
@ -79,7 +80,9 @@ widget_ids! {
skills_top_r[], skills_top_r[],
skills_bot_l[], skills_bot_l[],
skills_bot_r[], skills_bot_r[],
sword_render, skills[],
skill_lock_imgs[],
sword_bg,
axe_render, axe_render,
skill_axe_combo_0, skill_axe_combo_0,
skill_axe_combo_1, skill_axe_combo_1,
@ -1310,6 +1313,11 @@ enum SkillIcon<'a> {
position: PositionSpecifier, position: PositionSpecifier,
id: widget::Id, id: widget::Id,
}, },
Ability {
skill: Skill,
ability_id: &'a str,
position: PositionSpecifier,
},
} }
impl<'a> Diary<'a> { impl<'a> Diary<'a> {
@ -1485,7 +1493,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -1506,36 +1514,179 @@ impl<'a> Diary<'a> {
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.tree_title_txt, ui); .set(state.ids.tree_title_txt, ui);
// Number of skills per rectangle per weapon, start counting at 0
// Maximum of 9 skills/8 indices
let skills_top_l = 5;
let skills_top_r = 7;
let skills_bot_l = 5;
let skills_bot_r = 1;
self.setup_state_for_skill_icons(
state,
ui,
skills_top_l,
skills_top_r,
skills_bot_l,
skills_bot_r,
);
// Sword // Sword
Image::new(animate_by_pulse( Image::new(self.imgs.sword_bg)
&self .wh([tweak!(1000.0), tweak!(600.0)])
.item_imgs .mid_top_with_margin_on(state.ids.content_align, tweak!(80.0))
.img_ids_or_not_found_img(ItemKey::Simple("example_sword".to_string())), .color(Some(Color::Rgba(1.0, 1.0, 1.0, 1.0)))
self.pulse, .set(state.ids.sword_bg, ui);
))
.wh(ART_SIZE)
.middle_of(state.ids.content_align)
.color(Some(Color::Rgba(1.0, 1.0, 1.0, 1.0)))
.set(state.ids.sword_render, ui);
let skill_buttons = &[];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); use PositionSpecifier::TopLeftWithMarginsOn;
let skill_buttons = &[
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::BalancedFinisher),
ability_id: "common.abilities.sword.balanced_finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(489.0), tweak!(462.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::OffensiveCombo),
ability_id: "common.abilities.sword.offensive_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(389.0), tweak!(313.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::OffensiveFinisher),
ability_id: "common.abilities.sword.offensive_finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(489.0), tweak!(265.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::OffensiveAdvance),
ability_id: "common.abilities.sword.offensive_advance",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(489.0), tweak!(361.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingCombo),
ability_id: "common.abilities.sword.crippling_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(164.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingFinisher),
ability_id: "common.abilities.sword.crippling_finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(193.0), tweak!(164.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingStrike),
ability_id: "common.abilities.sword.crippling_strike",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(97.0), tweak!(164.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CripplingGouge),
ability_id: "common.abilities.sword.crippling_gouge",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(164.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingCombo),
ability_id: "common.abilities.sword.cleaving_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(15.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingFinisher),
ability_id: "common.abilities.sword.cleaving_finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(193.0), tweak!(15.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingSpin),
ability_id: "common.abilities.sword.cleaving_spin",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(97.0), tweak!(15.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::CleavingDive),
ability_id: "common.abilities.sword.cleaving_dive",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(15.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveCombo),
ability_id: "common.abilities.sword.defensive_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(389.0), tweak!(611.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveBulwark),
ability_id: "common.abilities.sword.defensive_bulwark",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(489.0), tweak!(659.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::DefensiveRetreat),
ability_id: "common.abilities.sword.defensive_retreat",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(489.0), tweak!(563.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ParryingCombo),
ability_id: "common.abilities.sword.parrying_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(760.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ParryingParry),
ability_id: "common.abilities.sword.parrying_parry",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(193.0), tweak!(760.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ParryingRiposte),
ability_id: "common.abilities.sword.parrying_riposte",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(97.0), tweak!(760.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ParryingCounter),
ability_id: "common.abilities.sword.parrying_counter",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(760.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyCombo),
ability_id: "common.abilities.sword.heavy_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(909.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyFinisher),
ability_id: "common.abilities.sword.heavy_finisher",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(193.0), tweak!(909.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyPommelStrike),
ability_id: "common.abilities.sword.heavy_pommelstrike",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(97.0), tweak!(909.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::HeavyFortitude),
ability_id: "common.abilities.sword.heavy_fortitude",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(909.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::MobilityCombo),
ability_id: "common.abilities.sword.mobility_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(462.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::MobilityFeint),
ability_id: "common.abilities.sword.mobility_feint",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(313.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::MobilityAgility),
ability_id: "common.abilities.sword.mobility_agility",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(289.0), tweak!(611.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ReachingCombo),
ability_id: "common.abilities.sword.reaching_combo",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(141.0), tweak!(462.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ReachingCharge),
ability_id: "common.abilities.sword.reaching_charge",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(367.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ReachingFlurry),
ability_id: "common.abilities.sword.reaching_flurry",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(462.0)),
},
SkillIcon::Ability {
skill: Skill::Sword(SwordSkill::ReachingSkewer),
ability_id: "common.abilities.sword.reaching_skewer",
position: TopLeftWithMarginsOn(state.ids.sword_bg, tweak!(2.0), tweak!(558.0)),
},
];
state.update(|s| {
s.ids
.skills
.resize(skill_buttons.len(), &mut ui.widget_id_generator())
});
state.update(|s| {
s.ids
.skill_lock_imgs
.resize(skill_buttons.len(), &mut ui.widget_id_generator())
});
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -1693,7 +1844,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -1851,7 +2002,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -2003,7 +2154,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -2161,7 +2312,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -2308,7 +2459,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -2392,7 +2543,7 @@ impl<'a> Diary<'a> {
}, },
]; ];
self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip); self.handle_skill_buttons(skill_buttons, ui, &mut events, diary_tooltip, state);
events events
} }
@ -2402,8 +2553,9 @@ impl<'a> Diary<'a> {
ui: &mut UiCell, ui: &mut UiCell,
events: &mut Vec<Event>, events: &mut Vec<Event>,
diary_tooltip: &Tooltip, diary_tooltip: &Tooltip,
state: &mut State<DiaryState>,
) { ) {
for icon in icons { for (i, icon) in icons.iter().enumerate() {
match icon { match icon {
SkillIcon::Descriptive { SkillIcon::Descriptive {
title, title,
@ -2439,6 +2591,20 @@ impl<'a> Diary<'a> {
events, events,
diary_tooltip, diary_tooltip,
), ),
SkillIcon::Ability {
skill,
ability_id,
position,
} => self.create_unlock_ability_button(
*skill,
ability_id,
*position,
i,
ui,
events,
diary_tooltip,
state,
),
} }
} }
} }
@ -2629,6 +2795,59 @@ impl<'a> Diary<'a> {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
} }
fn create_unlock_ability_button(
&mut self,
skill: Skill,
ability_id: &str,
position: PositionSpecifier,
widget_index: usize,
ui: &mut UiCell,
events: &mut Vec<Event>,
diary_tooltip: &Tooltip,
state: &mut State<DiaryState>,
) {
let locked = !self.skill_set.prerequisites_met(skill);
let owned = self.skill_set.has_skill(skill);
let image_color = if owned {
TEXT_COLOR
} else {
Color::Rgba(0.41, 0.41, 0.41, 0.7)
};
let (title, description) = util::ability_description(ability_id, self.localized_strings);
let sp_cost = sp(self.localized_strings, self.skill_set, skill);
let description = format!("{description}\n{sp_cost}");
let button = Button::image(util::ability_image(self.imgs, ability_id))
.w_h(76.0, 76.0)
.position(position)
.image_color(image_color)
.with_tooltip(
self.tooltip_manager,
&title,
&description,
diary_tooltip,
TEXT_COLOR,
)
.set(state.ids.skills[widget_index], ui);
// Lock Image
if locked {
Image::new(self.imgs.lock)
.w_h(76.0, 76.0)
.middle_of(state.ids.skills[widget_index])
.graphics_for(state.ids.skills[widget_index])
.color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8)))
.set(state.ids.skill_lock_imgs[widget_index], ui);
}
if button.was_clicked() {
events.push(Event::UnlockSkill(skill));
};
}
} }
/// Returns skill info as a tuple of title and description. /// Returns skill info as a tuple of title and description.

View File

@ -81,6 +81,7 @@ image_ids! {
book_bg: "voxygen.element.ui.diary.spellbook_bg", book_bg: "voxygen.element.ui.diary.spellbook_bg",
skills_bg: "voxygen.element.ui.diary.diary_skills_bg", skills_bg: "voxygen.element.ui.diary.diary_skills_bg",
slot_skills: "voxygen.element.ui.diary.buttons.slot_skilltree", slot_skills: "voxygen.element.ui.diary.buttons.slot_skilltree",
sword_bg: "voxygen.element.ui.diary.sword_bg",
swords_crossed: "voxygen.element.weapons.swords_crossed", swords_crossed: "voxygen.element.weapons.swords_crossed",
sceptre: "voxygen.element.weapons.sceptre", sceptre: "voxygen.element.weapons.sceptre",
sword: "voxygen.element.weapons.sword", sword: "voxygen.element.weapons.sword",
@ -202,37 +203,37 @@ image_ids! {
flamethrower: "voxygen.element.skills.skill_flamethrower", flamethrower: "voxygen.element.skills.skill_flamethrower",
// Sword // Sword
sword_balanced_combo: "voxygen.element.skills.sword.balanced_combo", sword_balanced_combo: "voxygen.element.skills.sword.balanced_combo",
// sword_balanced_thrust: "voxygen.element.skills.sword.balanced_thrust", sword_balanced_thrust: "voxygen.element.skills.sword.balanced_thrust",
// sword_balanced_finisher: "voxygen.element.skills.sword.balanced_finisher", sword_balanced_finisher: "voxygen.element.skills.sword.balanced_finisher",
sword_offensive_combo: "voxygen.element.skills.sword.offensive_combo", sword_offensive_combo: "voxygen.element.skills.sword.offensive_combo",
// sword_offensive_finisher: "voxygen.element.skills.sword.offensive_finisher", sword_offensive_finisher: "voxygen.element.skills.sword.offensive_finisher",
// sword_offensive_advance: "voxygen.element.skills.sword.offensive_advance", sword_offensive_advance: "voxygen.element.skills.sword.offensive_advance",
sword_crippling_combo: "voxygen.element.skills.sword.crippling_combo", sword_crippling_combo: "voxygen.element.skills.sword.crippling_combo",
// sword_crippling_finisher: "voxygen.element.skills.sword.crippling_finisher", sword_crippling_finisher: "voxygen.element.skills.sword.crippling_finisher",
// sword_crippling_strike: "voxygen.element.skills.sword.crippling_strike", sword_crippling_strike: "voxygen.element.skills.sword.crippling_strike",
// sword_crippling_gouge: "voxygen.element.skills.sword.crippling_gouge", sword_crippling_gouge: "voxygen.element.skills.sword.crippling_gouge",
sword_cleaving_combo: "voxygen.element.skills.sword.cleaving_combo", sword_cleaving_combo: "voxygen.element.skills.sword.cleaving_combo",
// sword_cleaving_finisher: "voxygen.element.skills.sword.cleaving_finisher", sword_cleaving_finisher: "voxygen.element.skills.sword.cleaving_finisher",
// sword_cleaving_spin: "voxygen.element.skills.sword.cleaving_spin", sword_cleaving_spin: "voxygen.element.skills.sword.cleaving_spin",
// sword_cleaving_dive: "voxygen.element.skills.sword.cleaving_dive", sword_cleaving_dive: "voxygen.element.skills.sword.cleaving_dive",
sword_defensive_combo: "voxygen.element.skills.sword.defensive_combo", sword_defensive_combo: "voxygen.element.skills.sword.defensive_combo",
// sword_defensive_bulwark: "voxygen.element.skills.sword.defensive_bulwark", sword_defensive_bulwark: "voxygen.element.skills.sword.defensive_bulwark",
// sword_defensive_retreat: "voxygen.element.skills.sword.defensive_retreat", sword_defensive_retreat: "voxygen.element.skills.sword.defensive_retreat",
sword_parrying_combo: "voxygen.element.skills.sword.parrying_combo", sword_parrying_combo: "voxygen.element.skills.sword.parrying_combo",
// sword_parrying_parry: "voxygen.element.skills.sword.parrying_parry", sword_parrying_parry: "voxygen.element.skills.sword.parrying_parry",
// sword_parrying_riposte: "voxygen.element.skills.sword.parrying_riposte", sword_parrying_riposte: "voxygen.element.skills.sword.parrying_riposte",
// sword_parrying_counter: "voxygen.element.skills.sword.parrying_counter", sword_parrying_counter: "voxygen.element.skills.sword.parrying_counter",
sword_heavy_combo: "voxygen.element.skills.sword.heavy_combo", sword_heavy_combo: "voxygen.element.skills.sword.heavy_combo",
// sword_heavy_finisher: "voxygen.element.skills.sword.heavy_finisher", sword_heavy_finisher: "voxygen.element.skills.sword.heavy_finisher",
// sword_heavy_pommelstrike: "voxygen.element.skills.sword.heavy_pommelstrike", sword_heavy_pommelstrike: "voxygen.element.skills.sword.heavy_pommelstrike",
// sword_heavy_fortitude: "voxygen.element.skills.sword.heavy_fortitude", sword_heavy_fortitude: "voxygen.element.skills.sword.heavy_fortitude",
sword_mobility_combo: "voxygen.element.skills.sword.mobility_combo", sword_mobility_combo: "voxygen.element.skills.sword.mobility_combo",
// sword_mobility_feint: "voxygen.element.skills.sword.mobility_feint", sword_mobility_feint: "voxygen.element.skills.sword.mobility_feint",
// sword_mobility_agility: "voxygen.element.skills.sword.mobility_agility", sword_mobility_agility: "voxygen.element.skills.sword.mobility_agility",
sword_reaching_combo: "voxygen.element.skills.sword.reaching_combo", sword_reaching_combo: "voxygen.element.skills.sword.reaching_combo",
// sword_reaching_charge: "voxygen.element.skills.sword.reaching_charge", sword_reaching_charge: "voxygen.element.skills.sword.reaching_charge",
// sword_reaching_flurry: "voxygen.element.skills.sword.reaching_flurry", sword_reaching_flurry: "voxygen.element.skills.sword.reaching_flurry",
// sword_reaching_skewer: "voxygen.element.skills.sword.reaching_skewer", sword_reaching_skewer: "voxygen.element.skills.sword.reaching_skewer",
// Skilltree Icons // Skilltree Icons
health_plus_skill: "voxygen.element.skills.skilltree.health_plus", health_plus_skill: "voxygen.element.skills.skilltree.health_plus",

View File

@ -419,8 +419,8 @@ impl<W: Positionable> Position for W {
fn position(self, request: PositionSpecifier) -> Self { fn position(self, request: PositionSpecifier) -> Self {
match request { match request {
// Place the widget near other widget with the given margins // Place the widget near other widget with the given margins
PositionSpecifier::TopLeftWithMarginsOn(other, top, right) => { PositionSpecifier::TopLeftWithMarginsOn(other, top, left) => {
self.top_left_with_margins_on(other, top, right) self.top_left_with_margins_on(other, top, left)
}, },
PositionSpecifier::TopRightWithMarginsOn(other, top, right) => { PositionSpecifier::TopRightWithMarginsOn(other, top, right) => {
self.top_right_with_margins_on(other, top, right) self.top_right_with_margins_on(other, top, right)

View File

@ -335,37 +335,37 @@ pub fn ability_image(imgs: &img_ids::Imgs, ability_id: &str) -> image::Id {
"common.abilities.debug.possess" => imgs.snake_arrow_0, "common.abilities.debug.possess" => imgs.snake_arrow_0,
// Sword // Sword
"common.abilities.sword.balanced_combo" => imgs.sword_balanced_combo, "common.abilities.sword.balanced_combo" => imgs.sword_balanced_combo,
// "common.abilities.sword.balanced_thrust" => imgs.sword_balanced_thrust, "common.abilities.sword.balanced_thrust" => imgs.sword_balanced_thrust,
// "common.abilities.sword.balanced_finisher" => imgs.sword_balanced_finisher, "common.abilities.sword.balanced_finisher" => imgs.sword_balanced_finisher,
"common.abilities.sword.offensive_combo" => imgs.sword_offensive_combo, "common.abilities.sword.offensive_combo" => imgs.sword_offensive_combo,
// "common.abilities.sword.offensive_finisher" => imgs.sword_offensive_finisher, "common.abilities.sword.offensive_finisher" => imgs.sword_offensive_finisher,
// "common.abilities.sword.offensive_advance" => imgs.sword_offensive_advance, "common.abilities.sword.offensive_advance" => imgs.sword_offensive_advance,
"common.abilities.sword.crippling_combo" => imgs.sword_crippling_combo, "common.abilities.sword.crippling_combo" => imgs.sword_crippling_combo,
// "common.abilities.sword.crippling_finisher" => imgs.sword_crippling_finisher, "common.abilities.sword.crippling_finisher" => imgs.sword_crippling_finisher,
// "common.abilities.sword.crippling_strike" => imgs.sword_crippling_strike, "common.abilities.sword.crippling_strike" => imgs.sword_crippling_strike,
// "common.abilities.sword.crippling_gouge" => imgs.sword_crippling_gouge, "common.abilities.sword.crippling_gouge" => imgs.sword_crippling_gouge,
"common.abilities.sword.cleaving_combo" => imgs.sword_cleaving_combo, "common.abilities.sword.cleaving_combo" => imgs.sword_cleaving_combo,
// "common.abilities.sword.cleaving_finisher" => imgs.sword_cleaving_finisher, "common.abilities.sword.cleaving_finisher" => imgs.sword_cleaving_finisher,
// "common.abilities.sword.cleaving_spin" => imgs.sword_cleaving_spin, "common.abilities.sword.cleaving_spin" => imgs.sword_cleaving_spin,
// "common.abilities.sword.cleaving_dive" => imgs.sword_cleaving_dive, "common.abilities.sword.cleaving_dive" => imgs.sword_cleaving_dive,
"common.abilities.sword.defensive_combo" => imgs.sword_defensive_combo, "common.abilities.sword.defensive_combo" => imgs.sword_defensive_combo,
// "common.abilities.sword.defensive_bulwark" => imgs.sword_defensive_bulwark, "common.abilities.sword.defensive_bulwark" => imgs.sword_defensive_bulwark,
// "common.abilities.sword.defensive_retreat" => imgs.sword_defensive_retreat, "common.abilities.sword.defensive_retreat" => imgs.sword_defensive_retreat,
"common.abilities.sword.parrying_combo" => imgs.sword_parrying_combo, "common.abilities.sword.parrying_combo" => imgs.sword_parrying_combo,
// "common.abilities.sword.parrying_parry" => imgs.sword_parrying_parry, "common.abilities.sword.parrying_parry" => imgs.sword_parrying_parry,
// "common.abilities.sword.parrying_riposte" => imgs.sword_parrying_riposte, "common.abilities.sword.parrying_riposte" => imgs.sword_parrying_riposte,
// "common.abilities.sword.parrying_counter" => imgs.sword_parrying_counter, "common.abilities.sword.parrying_counter" => imgs.sword_parrying_counter,
"common.abilities.sword.heavy_combo" => imgs.sword_heavy_combo, "common.abilities.sword.heavy_combo" => imgs.sword_heavy_combo,
// "common.abilities.sword.heavy_finisher" => imgs.sword_heavy_finisher, "common.abilities.sword.heavy_finisher" => imgs.sword_heavy_finisher,
// "common.abilities.sword.heavy_pommelstrike" => imgs.sword_heavy_pommelstrike, "common.abilities.sword.heavy_pommelstrike" => imgs.sword_heavy_pommelstrike,
// "common.abilities.sword.heavy_fortitude" => imgs.sword_heavy_fortitude, "common.abilities.sword.heavy_fortitude" => imgs.sword_heavy_fortitude,
"common.abilities.sword.mobility_combo" => imgs.sword_mobility_combo, "common.abilities.sword.mobility_combo" => imgs.sword_mobility_combo,
// "common.abilities.sword.mobility_feint" => imgs.sword_mobility_feint, "common.abilities.sword.mobility_feint" => imgs.sword_mobility_feint,
// "common.abilities.sword.mobility_agility" => imgs.sword_mobility_agility, "common.abilities.sword.mobility_agility" => imgs.sword_mobility_agility,
"common.abilities.sword.reaching_combo" => imgs.sword_reaching_combo, "common.abilities.sword.reaching_combo" => imgs.sword_reaching_combo,
// "common.abilities.sword.reaching_charge" => imgs.sword_reaching_charge, "common.abilities.sword.reaching_charge" => imgs.sword_reaching_charge,
// "common.abilities.sword.reaching_flurry" => imgs.sword_reaching_flurry, "common.abilities.sword.reaching_flurry" => imgs.sword_reaching_flurry,
// "common.abilities.sword.reaching_skewer" => imgs.sword_reaching_skewer, "common.abilities.sword.reaching_skewer" => imgs.sword_reaching_skewer,
// Axe // Axe
"common.abilities.axe.doublestrike" => imgs.twohaxe_m1, "common.abilities.axe.doublestrike" => imgs.twohaxe_m1,
"common.abilities.axe.spin" => imgs.axespin, "common.abilities.axe.spin" => imgs.axespin,