mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-21 06:09:42 +00:00
Dehardcode skill selection
This commit is contained in:
parent
9a93dcc39e
commit
2cb77ed48f
3 changed files with 33 additions and 64 deletions
|
@ -3,6 +3,7 @@
|
|||
#include <MyGUI_Gui.h>
|
||||
#include <MyGUI_ImageBox.h>
|
||||
#include <MyGUI_ListBox.h>
|
||||
#include <MyGUI_ScrollView.h>
|
||||
|
||||
#include "../mwbase/environment.hpp"
|
||||
#include "../mwbase/windowmanager.hpp"
|
||||
|
@ -795,43 +796,33 @@ namespace MWGui
|
|||
// Centre dialog
|
||||
center();
|
||||
|
||||
for (int i = 0; i < 9; i++)
|
||||
std::array<std::pair<MyGUI::ScrollView*, MyGUI::IntCoord>, 3> specializations;
|
||||
getWidget(specializations[ESM::Class::Combat].first, "CombatSkills");
|
||||
getWidget(specializations[ESM::Class::Magic].first, "MagicSkills");
|
||||
getWidget(specializations[ESM::Class::Stealth].first, "StealthSkills");
|
||||
for (auto& [widget, coord] : specializations)
|
||||
{
|
||||
char theIndex = '0' + i;
|
||||
getWidget(mCombatSkill[i], std::string("CombatSkill").append(1, theIndex));
|
||||
getWidget(mMagicSkill[i], std::string("MagicSkill").append(1, theIndex));
|
||||
getWidget(mStealthSkill[i], std::string("StealthSkill").append(1, theIndex));
|
||||
coord.width = widget->getCoord().width;
|
||||
coord.height = 18;
|
||||
while (widget->getChildCount() > 0)
|
||||
MyGUI::Gui::getInstance().destroyWidget(widget->getChildAt(0));
|
||||
}
|
||||
|
||||
struct
|
||||
for (const ESM::Skill& skill : MWBase::Environment::get().getESMStore()->get<ESM::Skill>())
|
||||
{
|
||||
Widgets::MWSkillPtr widget;
|
||||
ESM::RefId skillId;
|
||||
} mSkills[3][9]
|
||||
= { { { mCombatSkill[0], ESM::Skill::Block }, { mCombatSkill[1], ESM::Skill::Armorer },
|
||||
{ mCombatSkill[2], ESM::Skill::MediumArmor }, { mCombatSkill[3], ESM::Skill::HeavyArmor },
|
||||
{ mCombatSkill[4], ESM::Skill::BluntWeapon }, { mCombatSkill[5], ESM::Skill::LongBlade },
|
||||
{ mCombatSkill[6], ESM::Skill::Axe }, { mCombatSkill[7], ESM::Skill::Spear },
|
||||
{ mCombatSkill[8], ESM::Skill::Athletics } },
|
||||
{ { mMagicSkill[0], ESM::Skill::Enchant }, { mMagicSkill[1], ESM::Skill::Destruction },
|
||||
{ mMagicSkill[2], ESM::Skill::Alteration }, { mMagicSkill[3], ESM::Skill::Illusion },
|
||||
{ mMagicSkill[4], ESM::Skill::Conjuration }, { mMagicSkill[5], ESM::Skill::Mysticism },
|
||||
{ mMagicSkill[6], ESM::Skill::Restoration }, { mMagicSkill[7], ESM::Skill::Alchemy },
|
||||
{ mMagicSkill[8], ESM::Skill::Unarmored } },
|
||||
{ { mStealthSkill[0], ESM::Skill::Security }, { mStealthSkill[1], ESM::Skill::Sneak },
|
||||
{ mStealthSkill[2], ESM::Skill::Acrobatics }, { mStealthSkill[3], ESM::Skill::LightArmor },
|
||||
{ mStealthSkill[4], ESM::Skill::ShortBlade }, { mStealthSkill[5], ESM::Skill::Marksman },
|
||||
{ mStealthSkill[6], ESM::Skill::Mercantile }, { mStealthSkill[7], ESM::Skill::Speechcraft },
|
||||
{ mStealthSkill[8], ESM::Skill::HandToHand } } };
|
||||
|
||||
for (int spec = 0; spec < 3; ++spec)
|
||||
auto& [widget, coord] = specializations[skill.mData.mSpecialization];
|
||||
auto* skillWidget
|
||||
= widget->createWidget<Widgets::MWSkill>("MW_StatNameButton", coord, MyGUI::Align::Default);
|
||||
coord.top += coord.height;
|
||||
skillWidget->setSkillId(skill.mId);
|
||||
skillWidget->eventClicked += MyGUI::newDelegate(this, &SelectSkillDialog::onSkillClicked);
|
||||
ToolTips::createSkillToolTip(skillWidget, skill.mId);
|
||||
}
|
||||
for (const auto& [widget, coord] : specializations)
|
||||
{
|
||||
for (int i = 0; i < 9; ++i)
|
||||
{
|
||||
mSkills[spec][i].widget->setSkillId(mSkills[spec][i].skillId);
|
||||
mSkills[spec][i].widget->eventClicked += MyGUI::newDelegate(this, &SelectSkillDialog::onSkillClicked);
|
||||
ToolTips::createSkillToolTip(mSkills[spec][i].widget, mSkills[spec][i].widget->getSkillId());
|
||||
}
|
||||
widget->setVisibleVScroll(false);
|
||||
widget->setCanvasSize(MyGUI::IntSize(widget->getWidth(), std::max(widget->getHeight(), coord.top)));
|
||||
widget->setVisibleVScroll(true);
|
||||
widget->setViewOffset(MyGUI::IntPoint());
|
||||
}
|
||||
|
||||
MyGUI::Button* cancelButton;
|
||||
|
|
|
@ -239,10 +239,6 @@ namespace MWGui
|
|||
void onCancelClicked(MyGUI::Widget* _sender);
|
||||
|
||||
private:
|
||||
Widgets::MWSkillPtr mCombatSkill[9];
|
||||
Widgets::MWSkillPtr mMagicSkill[9];
|
||||
Widgets::MWSkillPtr mStealthSkill[9];
|
||||
|
||||
ESM::RefId mSkillId;
|
||||
};
|
||||
|
||||
|
|
|
@ -14,45 +14,27 @@
|
|||
<Property key="Caption" value="#{sSpecializationCombat}"/>
|
||||
<Property key="TextAlign" value="Left Top"/>
|
||||
</Widget>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 50 154 18" name="CombatSkill0" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 68 154 18" name="CombatSkill1" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 86 154 18" name="CombatSkill2" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 104 154 18" name="CombatSkill3" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 122 154 18" name="CombatSkill4" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 140 154 18" name="CombatSkill5" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 158 154 18" name="CombatSkill6" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 176 154 18" name="CombatSkill7" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 194 154 18" name="CombatSkill8" align="Left Top"/>
|
||||
<Widget type="ScrollView" skin="MW_ScrollView" position="0 50 154 168" name="CombatSkills" align="Left Top">
|
||||
<Property key="CanvasAlign" value="Left"/>
|
||||
</Widget>
|
||||
|
||||
<!-- Magic list -->
|
||||
<Widget type="TextBox" skin="HeaderText" position="158 32 154 18" name="MagicLabelT" align="Left Top">
|
||||
<Property key="Caption" value="#{sSpecializationMagic}"/>
|
||||
<Property key="TextAlign" value="Left Top"/>
|
||||
</Widget>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 50 154 18" name="MagicSkill0" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 68 154 18" name="MagicSkill1" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 86 154 18" name="MagicSkill2" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 104 154 18" name="MagicSkill3" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 122 154 18" name="MagicSkill4" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 140 154 18" name="MagicSkill5" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 158 154 18" name="MagicSkill6" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 176 154 18" name="MagicSkill7" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 194 154 18" name="MagicSkill8" align="Left Top"/>
|
||||
<Widget type="ScrollView" skin="MW_ScrollView" position="158 50 154 168" name="MagicSkills" align="Left Top">
|
||||
<Property key="CanvasAlign" value="Left"/>
|
||||
</Widget>
|
||||
|
||||
<!-- Stealth list -->
|
||||
<Widget type="TextBox" skin="HeaderText" position="316 32 131 18" name="StealthLabelT" align="Left Top">
|
||||
<Property key="Caption" value="#{sSpecializationStealth}"/>
|
||||
<Property key="TextAlign" value="Left Top"/>
|
||||
</Widget>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 50 154 18" name="StealthSkill0" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 68 154 18" name="StealthSkill1" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 86 154 18" name="StealthSkill2" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 104 154 18" name="StealthSkill3" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 122 154 18" name="StealthSkill4" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 140 154 18" name="StealthSkill5" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 158 154 18" name="StealthSkill6" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 176 154 18" name="StealthSkill7" align="Left Top"/>
|
||||
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 194 154 18" name="StealthSkill8" align="Left Top"/>
|
||||
<Widget type="ScrollView" skin="MW_ScrollView" position="316 50 154 168" name="StealthSkills" align="Left Top">
|
||||
<Property key="CanvasAlign" value="Left"/>
|
||||
</Widget>
|
||||
|
||||
<!-- Dialog buttons -->
|
||||
<Widget type="HBox" position="0 218 457 28">
|
||||
|
|
Loading…
Reference in a new issue