mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 22:53:50 +00:00
Issue #295: Class creation dialogs tooltips; plus tons of other improvements
This commit is contained in:
parent
f1d3978897
commit
10cfe0f5bc
21 changed files with 565 additions and 146 deletions
|
@ -1,6 +1,4 @@
|
||||||
#include "class.hpp"
|
#include "class.hpp"
|
||||||
#include "window_manager.hpp"
|
|
||||||
#include "components/esm_store/store.hpp"
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
@ -8,6 +6,11 @@
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
|
#include <components/esm_store/store.hpp>
|
||||||
|
|
||||||
|
#include "window_manager.hpp"
|
||||||
|
#include "tooltips.hpp"
|
||||||
|
|
||||||
#undef min
|
#undef min
|
||||||
#undef max
|
#undef max
|
||||||
|
|
||||||
|
@ -79,17 +82,13 @@ PickClassDialog::PickClassDialog(WindowManager& parWindowManager)
|
||||||
// Centre dialog
|
// Centre dialog
|
||||||
center();
|
center();
|
||||||
|
|
||||||
setText("SpecializationT", mWindowManager.getGameSettingString("sChooseClassMenu1", "Specialization"));
|
|
||||||
getWidget(specializationName, "SpecializationName");
|
getWidget(specializationName, "SpecializationName");
|
||||||
|
|
||||||
setText("FavoriteAttributesT", mWindowManager.getGameSettingString("sChooseClassMenu2", "Favorite Attributes:"));
|
|
||||||
getWidget(favoriteAttribute[0], "FavoriteAttribute0");
|
getWidget(favoriteAttribute[0], "FavoriteAttribute0");
|
||||||
getWidget(favoriteAttribute[1], "FavoriteAttribute1");
|
getWidget(favoriteAttribute[1], "FavoriteAttribute1");
|
||||||
favoriteAttribute[0]->setWindowManager(&mWindowManager);
|
favoriteAttribute[0]->setWindowManager(&mWindowManager);
|
||||||
favoriteAttribute[1]->setWindowManager(&mWindowManager);
|
favoriteAttribute[1]->setWindowManager(&mWindowManager);
|
||||||
|
|
||||||
setText("MajorSkillT", mWindowManager.getGameSettingString("sChooseClassMenu3", "Major Skills:"));
|
|
||||||
setText("MinorSkillT", mWindowManager.getGameSettingString("sChooseClassMenu4", "Minor Skills:"));
|
|
||||||
for(int i = 0; i < 5; i++)
|
for(int i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
char theIndex = '0'+i;
|
char theIndex = '0'+i;
|
||||||
|
@ -231,15 +230,21 @@ void PickClassDialog::updateStats()
|
||||||
"sSpecializationMagic",
|
"sSpecializationMagic",
|
||||||
"sSpecializationStealth"
|
"sSpecializationStealth"
|
||||||
};
|
};
|
||||||
specializationName->setCaption(mWindowManager.getGameSettingString(specIds[specialization], specIds[specialization]));
|
std::string specName = mWindowManager.getGameSettingString(specIds[specialization], specIds[specialization]);
|
||||||
|
specializationName->setCaption(specName);
|
||||||
|
ToolTips::createSpecializationToolTip(specializationName, specName, specialization);
|
||||||
|
|
||||||
favoriteAttribute[0]->setAttributeId(klass->data.attribute[0]);
|
favoriteAttribute[0]->setAttributeId(klass->data.attribute[0]);
|
||||||
favoriteAttribute[1]->setAttributeId(klass->data.attribute[1]);
|
favoriteAttribute[1]->setAttributeId(klass->data.attribute[1]);
|
||||||
|
ToolTips::createAttributeToolTip(favoriteAttribute[0], favoriteAttribute[0]->getAttributeId());
|
||||||
|
ToolTips::createAttributeToolTip(favoriteAttribute[1], favoriteAttribute[1]->getAttributeId());
|
||||||
|
|
||||||
for (int i = 0; i < 5; ++i)
|
for (int i = 0; i < 5; ++i)
|
||||||
{
|
{
|
||||||
majorSkill[i]->setSkillNumber(klass->data.skills[i][0]);
|
majorSkill[i]->setSkillNumber(klass->data.skills[i][0]);
|
||||||
minorSkill[i]->setSkillNumber(klass->data.skills[i][1]);
|
minorSkill[i]->setSkillNumber(klass->data.skills[i][1]);
|
||||||
|
ToolTips::createSkillToolTip(majorSkill[i], klass->data.skills[i][0]);
|
||||||
|
ToolTips::createSkillToolTip(minorSkill[i], klass->data.skills[i][1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
classImage->setImageTexture(std::string("textures\\levelup\\") + currentClassId + ".dds");
|
classImage->setImageTexture(std::string("textures\\levelup\\") + currentClassId + ".dds");
|
||||||
|
@ -387,7 +392,6 @@ CreateClassDialog::CreateClassDialog(WindowManager& parWindowManager)
|
||||||
|
|
||||||
setText("SpecializationT", mWindowManager.getGameSettingString("sChooseClassMenu1", "Specialization"));
|
setText("SpecializationT", mWindowManager.getGameSettingString("sChooseClassMenu1", "Specialization"));
|
||||||
getWidget(specializationName, "SpecializationName");
|
getWidget(specializationName, "SpecializationName");
|
||||||
specializationName->setCaption(mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Combat], ""));
|
|
||||||
specializationName->eventMouseButtonClick += MyGUI::newDelegate(this, &CreateClassDialog::onSpecializationClicked);
|
specializationName->eventMouseButtonClick += MyGUI::newDelegate(this, &CreateClassDialog::onSpecializationClicked);
|
||||||
|
|
||||||
setText("FavoriteAttributesT", mWindowManager.getGameSettingString("sChooseClassMenu2", "Favorite Attributes:"));
|
setText("FavoriteAttributesT", mWindowManager.getGameSettingString("sChooseClassMenu2", "Favorite Attributes:"));
|
||||||
|
@ -451,6 +455,9 @@ CreateClassDialog::CreateClassDialog(WindowManager& parWindowManager)
|
||||||
minorSkill[2]->setSkillId(ESM::Skill::Spear);
|
minorSkill[2]->setSkillId(ESM::Skill::Spear);
|
||||||
minorSkill[3]->setSkillId(ESM::Skill::Athletics);
|
minorSkill[3]->setSkillId(ESM::Skill::Athletics);
|
||||||
minorSkill[4]->setSkillId(ESM::Skill::Enchant);
|
minorSkill[4]->setSkillId(ESM::Skill::Enchant);
|
||||||
|
|
||||||
|
setSpecialization(0);
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateClassDialog::~CreateClassDialog()
|
CreateClassDialog::~CreateClassDialog()
|
||||||
|
@ -461,6 +468,18 @@ CreateClassDialog::~CreateClassDialog()
|
||||||
delete descDialog;
|
delete descDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CreateClassDialog::update()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 5; ++i)
|
||||||
|
{
|
||||||
|
ToolTips::createSkillToolTip(majorSkill[i], majorSkill[i]->getSkillId());
|
||||||
|
ToolTips::createSkillToolTip(minorSkill[i], minorSkill[i]->getSkillId());
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolTips::createAttributeToolTip(favoriteAttribute0, favoriteAttribute0->getAttributeId());
|
||||||
|
ToolTips::createAttributeToolTip(favoriteAttribute1, favoriteAttribute1->getAttributeId());
|
||||||
|
}
|
||||||
|
|
||||||
std::string CreateClassDialog::getName() const
|
std::string CreateClassDialog::getName() const
|
||||||
{
|
{
|
||||||
return editName->getOnlyText();
|
return editName->getOnlyText();
|
||||||
|
@ -539,14 +558,25 @@ void CreateClassDialog::open()
|
||||||
void CreateClassDialog::onDialogCancel()
|
void CreateClassDialog::onDialogCancel()
|
||||||
{
|
{
|
||||||
if (specDialog)
|
if (specDialog)
|
||||||
specDialog->setVisible(false);
|
{
|
||||||
|
mWindowManager.removeDialog(specDialog);
|
||||||
|
specDialog = 0;
|
||||||
|
}
|
||||||
if (attribDialog)
|
if (attribDialog)
|
||||||
attribDialog->setVisible(false);
|
{
|
||||||
|
mWindowManager.removeDialog(attribDialog);
|
||||||
|
attribDialog = 0;
|
||||||
|
}
|
||||||
if (skillDialog)
|
if (skillDialog)
|
||||||
skillDialog->setVisible(false);
|
{
|
||||||
|
mWindowManager.removeDialog(skillDialog);
|
||||||
|
skillDialog = 0;
|
||||||
|
}
|
||||||
if (descDialog)
|
if (descDialog)
|
||||||
descDialog->setVisible(false);
|
{
|
||||||
// TODO: Delete dialogs here
|
mWindowManager.removeDialog(descDialog);
|
||||||
|
descDialog = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender)
|
void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender)
|
||||||
|
@ -562,8 +592,23 @@ void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender)
|
||||||
void CreateClassDialog::onSpecializationSelected()
|
void CreateClassDialog::onSpecializationSelected()
|
||||||
{
|
{
|
||||||
specializationId = specDialog->getSpecializationId();
|
specializationId = specDialog->getSpecializationId();
|
||||||
specializationName->setCaption(mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[specializationId], ""));
|
setSpecialization(specializationId);
|
||||||
specDialog->setVisible(false);
|
|
||||||
|
mWindowManager.removeDialog(specDialog);
|
||||||
|
specDialog = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateClassDialog::setSpecialization(int id)
|
||||||
|
{
|
||||||
|
specializationId = (ESM::Class::Specialization) id;
|
||||||
|
static const char *specIds[3] = {
|
||||||
|
"sSpecializationCombat",
|
||||||
|
"sSpecializationMagic",
|
||||||
|
"sSpecializationStealth"
|
||||||
|
};
|
||||||
|
std::string specName = mWindowManager.getGameSettingString(specIds[specializationId], specIds[specializationId]);
|
||||||
|
specializationName->setCaption(specName);
|
||||||
|
ToolTips::createSpecializationToolTip(specializationName, specName, specializationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateClassDialog::onAttributeClicked(Widgets::MWAttributePtr _sender)
|
void CreateClassDialog::onAttributeClicked(Widgets::MWAttributePtr _sender)
|
||||||
|
@ -592,7 +637,10 @@ void CreateClassDialog::onAttributeSelected()
|
||||||
favoriteAttribute0->setAttributeId(favoriteAttribute1->getAttributeId());
|
favoriteAttribute0->setAttributeId(favoriteAttribute1->getAttributeId());
|
||||||
}
|
}
|
||||||
attribute->setAttributeId(id);
|
attribute->setAttributeId(id);
|
||||||
attribDialog->setVisible(false);
|
mWindowManager.removeDialog(attribDialog);
|
||||||
|
attribDialog = 0;
|
||||||
|
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateClassDialog::onSkillClicked(Widgets::MWSkillPtr _sender)
|
void CreateClassDialog::onSkillClicked(Widgets::MWSkillPtr _sender)
|
||||||
|
@ -625,7 +673,9 @@ void CreateClassDialog::onSkillSelected()
|
||||||
}
|
}
|
||||||
|
|
||||||
skill->setSkillId(skillDialog->getSkillId());
|
skill->setSkillId(skillDialog->getSkillId());
|
||||||
skillDialog->setVisible(false);
|
mWindowManager.removeDialog(skillDialog);
|
||||||
|
skillDialog = 0;
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateClassDialog::onDescriptionClicked(MyGUI::Widget* _sender)
|
void CreateClassDialog::onDescriptionClicked(MyGUI::Widget* _sender)
|
||||||
|
@ -640,6 +690,7 @@ void CreateClassDialog::onDescriptionEntered(WindowBase* parWindow)
|
||||||
{
|
{
|
||||||
description = descDialog->getTextInput();
|
description = descDialog->getTextInput();
|
||||||
mWindowManager.removeDialog(descDialog);
|
mWindowManager.removeDialog(descDialog);
|
||||||
|
descDialog = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateClassDialog::onOkClicked(MyGUI::Widget* _sender)
|
void CreateClassDialog::onOkClicked(MyGUI::Widget* _sender)
|
||||||
|
@ -665,20 +716,35 @@ SelectSpecializationDialog::SelectSpecializationDialog(WindowManager& parWindowM
|
||||||
getWidget(specialization0, "Specialization0");
|
getWidget(specialization0, "Specialization0");
|
||||||
getWidget(specialization1, "Specialization1");
|
getWidget(specialization1, "Specialization1");
|
||||||
getWidget(specialization2, "Specialization2");
|
getWidget(specialization2, "Specialization2");
|
||||||
specialization0->setCaption(mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Combat], ""));
|
std::string combat = mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Combat], "");
|
||||||
|
std::string magic = mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Magic], "");
|
||||||
|
std::string stealth = mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Stealth], "");
|
||||||
|
|
||||||
|
specialization0->setCaption(combat);
|
||||||
specialization0->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
specialization0->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
||||||
specialization1->setCaption(mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Magic], ""));
|
specialization1->setCaption(magic);
|
||||||
specialization1->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
specialization1->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
||||||
specialization2->setCaption(mWindowManager.getGameSettingString(ESM::Class::gmstSpecializationIds[ESM::Class::Stealth], ""));
|
specialization2->setCaption(stealth);
|
||||||
specialization2->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
specialization2->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onSpecializationClicked);
|
||||||
specializationId = ESM::Class::Combat;
|
specializationId = ESM::Class::Combat;
|
||||||
|
|
||||||
|
ToolTips::createSpecializationToolTip(specialization0, combat, ESM::Class::Combat);
|
||||||
|
ToolTips::createSpecializationToolTip(specialization1, magic, ESM::Class::Magic);
|
||||||
|
ToolTips::createSpecializationToolTip(specialization2, stealth, ESM::Class::Stealth);
|
||||||
|
|
||||||
MyGUI::ButtonPtr cancelButton;
|
MyGUI::ButtonPtr cancelButton;
|
||||||
getWidget(cancelButton, "CancelButton");
|
getWidget(cancelButton, "CancelButton");
|
||||||
cancelButton->setCaption(mWindowManager.getGameSettingString("sCancel", ""));
|
cancelButton->setCaption(mWindowManager.getGameSettingString("sCancel", ""));
|
||||||
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onCancelClicked);
|
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSpecializationDialog::onCancelClicked);
|
||||||
int buttonWidth = cancelButton->getTextSize().width + 24;
|
int buttonWidth = cancelButton->getTextSize().width + 24;
|
||||||
cancelButton->setCoord(216 - buttonWidth, 90, buttonWidth, 21);
|
cancelButton->setCoord(216 - buttonWidth, 90, buttonWidth, 21);
|
||||||
|
|
||||||
|
MyGUI::InputManager::getInstance().addWidgetModal(mMainWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectSpecializationDialog::~SelectSpecializationDialog()
|
||||||
|
{
|
||||||
|
MyGUI::InputManager::getInstance().removeWidgetModal(mMainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
@ -721,6 +787,7 @@ SelectAttributeDialog::SelectAttributeDialog(WindowManager& parWindowManager)
|
||||||
attribute->setWindowManager(&parWindowManager);
|
attribute->setWindowManager(&parWindowManager);
|
||||||
attribute->setAttributeId(ESM::Attribute::attributeIds[i]);
|
attribute->setAttributeId(ESM::Attribute::attributeIds[i]);
|
||||||
attribute->eventClicked += MyGUI::newDelegate(this, &SelectAttributeDialog::onAttributeClicked);
|
attribute->eventClicked += MyGUI::newDelegate(this, &SelectAttributeDialog::onAttributeClicked);
|
||||||
|
ToolTips::createAttributeToolTip(attribute, attribute->getAttributeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
MyGUI::ButtonPtr cancelButton;
|
MyGUI::ButtonPtr cancelButton;
|
||||||
|
@ -729,6 +796,13 @@ SelectAttributeDialog::SelectAttributeDialog(WindowManager& parWindowManager)
|
||||||
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectAttributeDialog::onCancelClicked);
|
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectAttributeDialog::onCancelClicked);
|
||||||
int buttonWidth = cancelButton->getTextSize().width + 24;
|
int buttonWidth = cancelButton->getTextSize().width + 24;
|
||||||
cancelButton->setCoord(186 - buttonWidth, 180, buttonWidth, 21);
|
cancelButton->setCoord(186 - buttonWidth, 180, buttonWidth, 21);
|
||||||
|
|
||||||
|
MyGUI::InputManager::getInstance().addWidgetModal(mMainWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectAttributeDialog::~SelectAttributeDialog()
|
||||||
|
{
|
||||||
|
MyGUI::InputManager::getInstance().removeWidgetModal(mMainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
@ -810,6 +884,7 @@ SelectSkillDialog::SelectSkillDialog(WindowManager& parWindowManager)
|
||||||
skills[spec][i].widget->setWindowManager(&mWindowManager);
|
skills[spec][i].widget->setWindowManager(&mWindowManager);
|
||||||
skills[spec][i].widget->setSkillId(skills[spec][i].skillId);
|
skills[spec][i].widget->setSkillId(skills[spec][i].skillId);
|
||||||
skills[spec][i].widget->eventClicked += MyGUI::newDelegate(this, &SelectSkillDialog::onSkillClicked);
|
skills[spec][i].widget->eventClicked += MyGUI::newDelegate(this, &SelectSkillDialog::onSkillClicked);
|
||||||
|
ToolTips::createSkillToolTip(skills[spec][i].widget, skills[spec][i].widget->getSkillId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,6 +894,13 @@ SelectSkillDialog::SelectSkillDialog(WindowManager& parWindowManager)
|
||||||
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSkillDialog::onCancelClicked);
|
cancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SelectSkillDialog::onCancelClicked);
|
||||||
int buttonWidth = cancelButton->getTextSize().width + 24;
|
int buttonWidth = cancelButton->getTextSize().width + 24;
|
||||||
cancelButton->setCoord(447 - buttonWidth, 218, buttonWidth, 21);
|
cancelButton->setCoord(447 - buttonWidth, 218, buttonWidth, 21);
|
||||||
|
|
||||||
|
MyGUI::InputManager::getInstance().addWidgetModal(mMainWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectSkillDialog::~SelectSkillDialog()
|
||||||
|
{
|
||||||
|
MyGUI::InputManager::getInstance().removeWidgetModal(mMainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
@ -853,6 +935,13 @@ DescriptionDialog::DescriptionDialog(WindowManager& parWindowManager)
|
||||||
|
|
||||||
// Make sure the edit box has focus
|
// Make sure the edit box has focus
|
||||||
MyGUI::InputManager::getInstance().setKeyFocusWidget(textEdit);
|
MyGUI::InputManager::getInstance().setKeyFocusWidget(textEdit);
|
||||||
|
|
||||||
|
MyGUI::InputManager::getInstance().addWidgetModal(mMainWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
DescriptionDialog::~DescriptionDialog()
|
||||||
|
{
|
||||||
|
MyGUI::InputManager::getInstance().removeWidgetModal(mMainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
|
|
@ -139,6 +139,7 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SelectSpecializationDialog(WindowManager& parWindowManager);
|
SelectSpecializationDialog(WindowManager& parWindowManager);
|
||||||
|
~SelectSpecializationDialog();
|
||||||
|
|
||||||
ESM::Class::Specialization getSpecializationId() const { return specializationId; }
|
ESM::Class::Specialization getSpecializationId() const { return specializationId; }
|
||||||
|
|
||||||
|
@ -169,6 +170,7 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SelectAttributeDialog(WindowManager& parWindowManager);
|
SelectAttributeDialog(WindowManager& parWindowManager);
|
||||||
|
~SelectAttributeDialog();
|
||||||
|
|
||||||
ESM::Attribute::AttributeID getAttributeId() const { return attributeId; }
|
ESM::Attribute::AttributeID getAttributeId() const { return attributeId; }
|
||||||
Widgets::MWAttributePtr getAffectedWidget() const { return affectedWidget; }
|
Widgets::MWAttributePtr getAffectedWidget() const { return affectedWidget; }
|
||||||
|
@ -201,6 +203,7 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SelectSkillDialog(WindowManager& parWindowManager);
|
SelectSkillDialog(WindowManager& parWindowManager);
|
||||||
|
~SelectSkillDialog();
|
||||||
|
|
||||||
ESM::Skill::SkillEnum getSkillId() const { return skillId; }
|
ESM::Skill::SkillEnum getSkillId() const { return skillId; }
|
||||||
Widgets::MWSkillPtr getAffectedWidget() const { return affectedWidget; }
|
Widgets::MWSkillPtr getAffectedWidget() const { return affectedWidget; }
|
||||||
|
@ -236,6 +239,7 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DescriptionDialog(WindowManager& parWindowManager);
|
DescriptionDialog(WindowManager& parWindowManager);
|
||||||
|
~DescriptionDialog();
|
||||||
|
|
||||||
std::string getTextInput() const { return textEdit ? textEdit->getOnlyText() : ""; }
|
std::string getTextInput() const { return textEdit ? textEdit->getOnlyText() : ""; }
|
||||||
void setTextInput(const std::string &text) { if (textEdit) textEdit->setOnlyText(text); }
|
void setTextInput(const std::string &text) { if (textEdit) textEdit->setOnlyText(text); }
|
||||||
|
@ -285,6 +289,10 @@ namespace MWGui
|
||||||
void onDescriptionEntered(WindowBase* parWindow);
|
void onDescriptionEntered(WindowBase* parWindow);
|
||||||
void onDialogCancel();
|
void onDialogCancel();
|
||||||
|
|
||||||
|
void setSpecialization(int id);
|
||||||
|
|
||||||
|
void update();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MyGUI::EditPtr editName;
|
MyGUI::EditPtr editName;
|
||||||
MyGUI::TextBox* specializationName;
|
MyGUI::TextBox* specializationName;
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
#include "race.hpp"
|
#include "race.hpp"
|
||||||
#include "window_manager.hpp"
|
|
||||||
#include "widgets.hpp"
|
|
||||||
#include "components/esm_store/store.hpp"
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -10,6 +7,12 @@
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
|
#include <components/esm_store/store.hpp>
|
||||||
|
|
||||||
|
#include "window_manager.hpp"
|
||||||
|
#include "widgets.hpp"
|
||||||
|
#include "tooltips.hpp"
|
||||||
|
|
||||||
using namespace MWGui;
|
using namespace MWGui;
|
||||||
using namespace Widgets;
|
using namespace Widgets;
|
||||||
|
|
||||||
|
@ -51,7 +54,7 @@ RaceDialog::RaceDialog(WindowManager& parWindowManager)
|
||||||
prevButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectPreviousFace);
|
prevButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectPreviousFace);
|
||||||
nextButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectNextFace);
|
nextButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectNextFace);
|
||||||
|
|
||||||
setText("HairChoiceT", mWindowManager.getGameSettingString("sRaceMenu3", "Change Hair"));
|
setText("HairChoiceT", mWindowManager.getGameSettingString("sRaceMenu4", "Change Hair"));
|
||||||
getWidget(prevButton, "PrevHairButton");
|
getWidget(prevButton, "PrevHairButton");
|
||||||
getWidget(nextButton, "NextHairButton");
|
getWidget(nextButton, "NextHairButton");
|
||||||
prevButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectPreviousHair);
|
prevButton->eventMouseButtonClick += MyGUI::newDelegate(this, &RaceDialog::onSelectPreviousHair);
|
||||||
|
@ -255,6 +258,8 @@ void RaceDialog::updateSkills()
|
||||||
skillWidget->setWindowManager(&mWindowManager);
|
skillWidget->setWindowManager(&mWindowManager);
|
||||||
skillWidget->setSkillNumber(skillId);
|
skillWidget->setSkillNumber(skillId);
|
||||||
skillWidget->setSkillValue(MWSkill::SkillValue(race->data.bonus[i].bonus));
|
skillWidget->setSkillValue(MWSkill::SkillValue(race->data.bonus[i].bonus));
|
||||||
|
ToolTips::createSkillToolTip(skillWidget, skillId);
|
||||||
|
|
||||||
|
|
||||||
skillItems.push_back(skillWidget);
|
skillItems.push_back(skillWidget);
|
||||||
|
|
||||||
|
@ -288,6 +293,8 @@ void RaceDialog::updateSpellPowers()
|
||||||
spellPowerWidget = spellPowerList->createWidget<MWSpell>("MW_StatName", coord, MyGUI::Align::Default, std::string("SpellPower") + boost::lexical_cast<std::string>(i));
|
spellPowerWidget = spellPowerList->createWidget<MWSpell>("MW_StatName", coord, MyGUI::Align::Default, std::string("SpellPower") + boost::lexical_cast<std::string>(i));
|
||||||
spellPowerWidget->setWindowManager(&mWindowManager);
|
spellPowerWidget->setWindowManager(&mWindowManager);
|
||||||
spellPowerWidget->setSpellId(spellpower);
|
spellPowerWidget->setSpellId(spellpower);
|
||||||
|
spellPowerWidget->setUserString("ToolTipType", "Spell");
|
||||||
|
spellPowerWidget->setUserString("Spell", spellpower);
|
||||||
|
|
||||||
spellPowerItems.push_back(spellPowerWidget);
|
spellPowerItems.push_back(spellPowerWidget);
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
#include "review.hpp"
|
#include "review.hpp"
|
||||||
#include "window_manager.hpp"
|
|
||||||
#include "widgets.hpp"
|
#include <cmath>
|
||||||
#include "components/esm_store/store.hpp"
|
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
#include <cmath>
|
#include <components/esm_store/store.hpp>
|
||||||
|
|
||||||
|
#include "window_manager.hpp"
|
||||||
|
#include "widgets.hpp"
|
||||||
|
#include "tooltips.hpp"
|
||||||
|
|
||||||
#undef min
|
#undef min
|
||||||
#undef max
|
#undef max
|
||||||
|
@ -74,7 +77,7 @@ ReviewDialog::ReviewDialog(WindowManager& parWindowManager)
|
||||||
getWidget(skillAreaWidget, "Skills");
|
getWidget(skillAreaWidget, "Skills");
|
||||||
getWidget(skillClientWidget, "SkillClient");
|
getWidget(skillClientWidget, "SkillClient");
|
||||||
getWidget(skillScrollerWidget, "SkillScroller");
|
getWidget(skillScrollerWidget, "SkillScroller");
|
||||||
|
skillClientWidget->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
skillScrollerWidget->eventScrollChangePosition += MyGUI::newDelegate(this, &ReviewDialog::onScrollChangePosition);
|
skillScrollerWidget->eventScrollChangePosition += MyGUI::newDelegate(this, &ReviewDialog::onScrollChangePosition);
|
||||||
updateScroller();
|
updateScroller();
|
||||||
|
|
||||||
|
@ -137,13 +140,17 @@ void ReviewDialog::setRace(const std::string &raceId_)
|
||||||
raceId = raceId_;
|
raceId = raceId_;
|
||||||
const ESM::Race *race = mWindowManager.getStore().races.search(raceId);
|
const ESM::Race *race = mWindowManager.getStore().races.search(raceId);
|
||||||
if (race)
|
if (race)
|
||||||
|
{
|
||||||
|
ToolTips::createRaceToolTip(raceWidget, race);
|
||||||
raceWidget->setCaption(race->name);
|
raceWidget->setCaption(race->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setClass(const ESM::Class& class_)
|
void ReviewDialog::setClass(const ESM::Class& class_)
|
||||||
{
|
{
|
||||||
klass = class_;
|
klass = class_;
|
||||||
classWidget->setCaption(klass.name);
|
classWidget->setCaption(klass.name);
|
||||||
|
ToolTips::createClassToolTip(classWidget, klass);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setBirthSign(const std::string& signId)
|
void ReviewDialog::setBirthSign(const std::string& signId)
|
||||||
|
@ -151,22 +158,31 @@ void ReviewDialog::setBirthSign(const std::string& signId)
|
||||||
birthSignId = signId;
|
birthSignId = signId;
|
||||||
const ESM::BirthSign *sign = mWindowManager.getStore().birthSigns.search(birthSignId);
|
const ESM::BirthSign *sign = mWindowManager.getStore().birthSigns.search(birthSignId);
|
||||||
if (sign)
|
if (sign)
|
||||||
|
{
|
||||||
birthSignWidget->setCaption(sign->name);
|
birthSignWidget->setCaption(sign->name);
|
||||||
|
ToolTips::createBirthsignToolTip(birthSignWidget, birthSignId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setHealth(const MWMechanics::DynamicStat<int>& value)
|
void ReviewDialog::setHealth(const MWMechanics::DynamicStat<int>& value)
|
||||||
{
|
{
|
||||||
health->setValue(value.getCurrent(), value.getModified());
|
health->setValue(value.getCurrent(), value.getModified());
|
||||||
|
std::string valStr = boost::lexical_cast<std::string>(value.getCurrent()) + "/" + boost::lexical_cast<std::string>(value.getModified());
|
||||||
|
health->setUserString("Caption_HealthDescription", "#{sHealthDesc}\n" + valStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setMagicka(const MWMechanics::DynamicStat<int>& value)
|
void ReviewDialog::setMagicka(const MWMechanics::DynamicStat<int>& value)
|
||||||
{
|
{
|
||||||
magicka->setValue(value.getCurrent(), value.getModified());
|
magicka->setValue(value.getCurrent(), value.getModified());
|
||||||
|
std::string valStr = boost::lexical_cast<std::string>(value.getCurrent()) + "/" + boost::lexical_cast<std::string>(value.getModified());
|
||||||
|
magicka->setUserString("Caption_HealthDescription", "#{sIntDesc}\n" + valStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setFatigue(const MWMechanics::DynamicStat<int>& value)
|
void ReviewDialog::setFatigue(const MWMechanics::DynamicStat<int>& value)
|
||||||
{
|
{
|
||||||
fatigue->setValue(value.getCurrent(), value.getModified());
|
fatigue->setValue(value.getCurrent(), value.getModified());
|
||||||
|
std::string valStr = boost::lexical_cast<std::string>(value.getCurrent()) + "/" + boost::lexical_cast<std::string>(value.getModified());
|
||||||
|
fatigue->setUserString("Caption_HealthDescription", "#{sFatDesc}\n" + valStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReviewDialog::setAttribute(ESM::Attribute::AttributeID attributeId, const MWMechanics::Stat<int>& value)
|
void ReviewDialog::setAttribute(ESM::Attribute::AttributeID attributeId, const MWMechanics::Stat<int>& value)
|
||||||
|
@ -219,6 +235,8 @@ void ReviewDialog::configureSkills(const std::vector<int>& major, const std::vec
|
||||||
void ReviewDialog::addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
void ReviewDialog::addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||||
{
|
{
|
||||||
MyGUI::ImageBox* separator = skillClientWidget->createWidget<MyGUI::ImageBox>("MW_HLine", MyGUI::IntCoord(10, coord1.top, coord1.width + coord2.width - 4, 18), MyGUI::Align::Default);
|
MyGUI::ImageBox* separator = skillClientWidget->createWidget<MyGUI::ImageBox>("MW_HLine", MyGUI::IntCoord(10, coord1.top, coord1.width + coord2.width - 4, 18), MyGUI::Align::Default);
|
||||||
|
separator->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
|
|
||||||
skillWidgets.push_back(separator);
|
skillWidgets.push_back(separator);
|
||||||
|
|
||||||
coord1.top += separator->getHeight();
|
coord1.top += separator->getHeight();
|
||||||
|
@ -228,6 +246,7 @@ void ReviewDialog::addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2
|
||||||
void ReviewDialog::addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
void ReviewDialog::addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2)
|
||||||
{
|
{
|
||||||
MyGUI::TextBox* groupWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandBrightText", MyGUI::IntCoord(0, coord1.top, coord1.width + coord2.width, coord1.height), MyGUI::Align::Default);
|
MyGUI::TextBox* groupWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandBrightText", MyGUI::IntCoord(0, coord1.top, coord1.width + coord2.width, coord1.height), MyGUI::Align::Default);
|
||||||
|
groupWidget->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
groupWidget->setCaption(label);
|
groupWidget->setCaption(label);
|
||||||
skillWidgets.push_back(groupWidget);
|
skillWidgets.push_back(groupWidget);
|
||||||
|
|
||||||
|
@ -242,10 +261,12 @@ MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::st
|
||||||
|
|
||||||
skillNameWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandText", coord1, MyGUI::Align::Default);
|
skillNameWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandText", coord1, MyGUI::Align::Default);
|
||||||
skillNameWidget->setCaption(text);
|
skillNameWidget->setCaption(text);
|
||||||
|
skillNameWidget->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
|
|
||||||
skillValueWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandTextRight", coord2, MyGUI::Align::Top | MyGUI::Align::Right);
|
skillValueWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandTextRight", coord2, MyGUI::Align::Top | MyGUI::Align::Right);
|
||||||
skillValueWidget->setCaption(value);
|
skillValueWidget->setCaption(value);
|
||||||
skillValueWidget->_setWidgetState(state);
|
skillValueWidget->_setWidgetState(state);
|
||||||
|
skillValueWidget->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
|
|
||||||
skillWidgets.push_back(skillNameWidget);
|
skillWidgets.push_back(skillNameWidget);
|
||||||
skillWidgets.push_back(skillValueWidget);
|
skillWidgets.push_back(skillValueWidget);
|
||||||
|
@ -262,6 +283,7 @@ void ReviewDialog::addItem(const std::string text, MyGUI::IntCoord &coord1, MyGU
|
||||||
|
|
||||||
skillNameWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandText", coord1 + MyGUI::IntSize(coord2.width, 0), MyGUI::Align::Default);
|
skillNameWidget = skillClientWidget->createWidget<MyGUI::TextBox>("SandText", coord1 + MyGUI::IntSize(coord2.width, 0), MyGUI::Align::Default);
|
||||||
skillNameWidget->setCaption(text);
|
skillNameWidget->setCaption(text);
|
||||||
|
skillNameWidget->eventMouseWheel += MyGUI::newDelegate(this, &ReviewDialog::onMouseWheel);
|
||||||
|
|
||||||
skillWidgets.push_back(skillNameWidget);
|
skillWidgets.push_back(skillNameWidget);
|
||||||
|
|
||||||
|
@ -297,6 +319,12 @@ void ReviewDialog::addSkills(const SkillList &skills, const std::string &titleId
|
||||||
else if (modified < base)
|
else if (modified < base)
|
||||||
state = "decreased";
|
state = "decreased";
|
||||||
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2);
|
MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2);
|
||||||
|
|
||||||
|
for (int i=0; i<2; ++i)
|
||||||
|
{
|
||||||
|
ToolTips::createSkillToolTip(skillWidgets[skillWidgets.size()-1-i], skillId);
|
||||||
|
}
|
||||||
|
|
||||||
skillWidgetMap[skillId] = widget;
|
skillWidgetMap[skillId] = widget;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,6 +358,8 @@ void ReviewDialog::updateScroller()
|
||||||
{
|
{
|
||||||
skillScrollerWidget->setScrollRange(std::max(clientHeight - skillClientWidget->getHeight(), 0));
|
skillScrollerWidget->setScrollRange(std::max(clientHeight - skillClientWidget->getHeight(), 0));
|
||||||
skillScrollerWidget->setScrollPage(std::max(skillClientWidget->getHeight() - lineHeight, 0));
|
skillScrollerWidget->setScrollPage(std::max(skillClientWidget->getHeight() - lineHeight, 0));
|
||||||
|
if (clientHeight != 0)
|
||||||
|
skillScrollerWidget->setTrackSize( (skillAreaWidget->getHeight() / float(clientHeight)) * skillScrollerWidget->getLineSize() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// widget controls
|
// widget controls
|
||||||
|
@ -363,3 +393,15 @@ void ReviewDialog::onBirthSignClicked(MyGUI::Widget* _sender)
|
||||||
{
|
{
|
||||||
eventActivateDialog(BIRTHSIGN_DIALOG);
|
eventActivateDialog(BIRTHSIGN_DIALOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ReviewDialog::onMouseWheel(MyGUI::Widget* _sender, int _rel)
|
||||||
|
{
|
||||||
|
if (skillScrollerWidget->getScrollPosition() - _rel*0.3 < 0)
|
||||||
|
skillScrollerWidget->setScrollPosition(0);
|
||||||
|
else if (skillScrollerWidget->getScrollPosition() - _rel*0.3 > skillScrollerWidget->getScrollRange()-1)
|
||||||
|
skillScrollerWidget->setScrollPosition(skillScrollerWidget->getScrollRange()-1);
|
||||||
|
else
|
||||||
|
skillScrollerWidget->setScrollPosition(skillScrollerWidget->getScrollPosition() - _rel*0.3);
|
||||||
|
|
||||||
|
onScrollChangePosition(skillScrollerWidget, skillScrollerWidget->getScrollPosition());
|
||||||
|
}
|
||||||
|
|
|
@ -68,6 +68,8 @@ namespace MWGui
|
||||||
void onClassClicked(MyGUI::Widget* _sender);
|
void onClassClicked(MyGUI::Widget* _sender);
|
||||||
void onBirthSignClicked(MyGUI::Widget* _sender);
|
void onBirthSignClicked(MyGUI::Widget* _sender);
|
||||||
|
|
||||||
|
void onMouseWheel(MyGUI::Widget* _sender, int _rel);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
void addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||||
void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2);
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "../mwbase/environment.hpp"
|
#include "../mwbase/environment.hpp"
|
||||||
|
|
||||||
#include "window_manager.hpp"
|
#include "window_manager.hpp"
|
||||||
|
#include "tooltips.hpp"
|
||||||
|
|
||||||
|
|
||||||
using namespace MWGui;
|
using namespace MWGui;
|
||||||
|
@ -442,32 +443,17 @@ void StatsWindow::updateSkillArea()
|
||||||
const ESM::Race* playerRace = store.races.find (MWBase::Environment::get().getWorld()->getPlayer().getRace());
|
const ESM::Race* playerRace = store.races.find (MWBase::Environment::get().getWorld()->getPlayer().getRace());
|
||||||
MyGUI::Widget* raceWidget;
|
MyGUI::Widget* raceWidget;
|
||||||
getWidget(raceWidget, "RaceText");
|
getWidget(raceWidget, "RaceText");
|
||||||
raceWidget->setUserString("Caption_CenteredCaption", playerRace->name);
|
ToolTips::createRaceToolTip(raceWidget, playerRace);
|
||||||
raceWidget->setUserString("Caption_CenteredCaptionText", playerRace->description);
|
|
||||||
getWidget(raceWidget, "Race_str");
|
getWidget(raceWidget, "Race_str");
|
||||||
raceWidget->setUserString("Caption_CenteredCaption", playerRace->name);
|
ToolTips::createRaceToolTip(raceWidget, playerRace);
|
||||||
raceWidget->setUserString("Caption_CenteredCaptionText", playerRace->description);
|
|
||||||
|
|
||||||
// class tooltip
|
// class tooltip
|
||||||
MyGUI::Widget* classWidget;
|
MyGUI::Widget* classWidget;
|
||||||
const ESM::Class& playerClass = MWBase::Environment::get().getWorld()->getPlayer().getClass();
|
const ESM::Class& playerClass = MWBase::Environment::get().getWorld()->getPlayer().getClass();
|
||||||
int spec = playerClass.data.specialization;
|
|
||||||
std::string specStr;
|
|
||||||
if (spec == 0)
|
|
||||||
specStr = "#{sSpecializationCombat}";
|
|
||||||
else if (spec == 1)
|
|
||||||
specStr = "#{sSpecializationMagic}";
|
|
||||||
else if (spec == 2)
|
|
||||||
specStr = "#{sSpecializationStealth}";
|
|
||||||
|
|
||||||
getWidget(classWidget, "ClassText");
|
getWidget(classWidget, "ClassText");
|
||||||
classWidget->setUserString("Caption_ClassName", playerClass.name);
|
ToolTips::createClassToolTip(classWidget, playerClass);
|
||||||
classWidget->setUserString("Caption_ClassDescription", playerClass.description);
|
|
||||||
classWidget->setUserString("Caption_ClassSpecialisation", "#{sSpecialization}: " + specStr);
|
|
||||||
getWidget(classWidget, "Class_str");
|
getWidget(classWidget, "Class_str");
|
||||||
classWidget->setUserString("Caption_ClassName", playerClass.name);
|
ToolTips::createClassToolTip(classWidget, playerClass);
|
||||||
classWidget->setUserString("Caption_ClassDescription", playerClass.description);
|
|
||||||
classWidget->setUserString("Caption_ClassSpecialisation", "#{sSpecialization}: " + specStr);
|
|
||||||
|
|
||||||
if (!mFactions.empty())
|
if (!mFactions.empty())
|
||||||
{
|
{
|
||||||
|
@ -534,61 +520,8 @@ void StatsWindow::updateSkillArea()
|
||||||
addGroup(mWindowManager.getGameSettingString("sBirthSign", "Sign"), coord1, coord2);
|
addGroup(mWindowManager.getGameSettingString("sBirthSign", "Sign"), coord1, coord2);
|
||||||
const ESM::BirthSign *sign = store.birthSigns.find(birthSignId);
|
const ESM::BirthSign *sign = store.birthSigns.find(birthSignId);
|
||||||
MyGUI::Widget* w = addItem(sign->name, coord1, coord2);
|
MyGUI::Widget* w = addItem(sign->name, coord1, coord2);
|
||||||
w->setUserString("ToolTipType", "Layout");
|
|
||||||
w->setUserString("ToolTipLayout", "BirthSignToolTip");
|
|
||||||
std::string image = sign->texture;
|
|
||||||
image.replace(image.size()-3, 3, "dds");
|
|
||||||
w->setUserString("ImageTexture_BirthSignImage", "textures\\" + image);
|
|
||||||
std::string text;
|
|
||||||
|
|
||||||
text += sign->name;
|
ToolTips::createBirthsignToolTip(w, birthSignId);
|
||||||
text += "\n#BF9959" + sign->description;
|
|
||||||
|
|
||||||
std::vector<std::string> abilities, powers, spells;
|
|
||||||
|
|
||||||
std::vector<std::string>::const_iterator it = sign->powers.list.begin();
|
|
||||||
std::vector<std::string>::const_iterator end = sign->powers.list.end();
|
|
||||||
for (; it != end; ++it)
|
|
||||||
{
|
|
||||||
const std::string &spellId = *it;
|
|
||||||
const ESM::Spell *spell = store.spells.search(spellId);
|
|
||||||
if (!spell)
|
|
||||||
continue; // Skip spells which cannot be found
|
|
||||||
ESM::Spell::SpellType type = static_cast<ESM::Spell::SpellType>(spell->data.type);
|
|
||||||
if (type != ESM::Spell::ST_Spell && type != ESM::Spell::ST_Ability && type != ESM::Spell::ST_Power)
|
|
||||||
continue; // We only want spell, ability and powers.
|
|
||||||
|
|
||||||
if (type == ESM::Spell::ST_Ability)
|
|
||||||
abilities.push_back(spellId);
|
|
||||||
else if (type == ESM::Spell::ST_Power)
|
|
||||||
powers.push_back(spellId);
|
|
||||||
else if (type == ESM::Spell::ST_Spell)
|
|
||||||
spells.push_back(spellId);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct{ const std::vector<std::string> &spells; std::string label; } categories[3] = {
|
|
||||||
{abilities, "sBirthsignmenu1"},
|
|
||||||
{powers, "sPowers"},
|
|
||||||
{spells, "sBirthsignmenu2"}
|
|
||||||
};
|
|
||||||
|
|
||||||
for (int category = 0; category < 3; ++category)
|
|
||||||
{
|
|
||||||
for (std::vector<std::string>::const_iterator it = categories[category].spells.begin(); it != categories[category].spells.end(); ++it)
|
|
||||||
{
|
|
||||||
if (it == categories[category].spells.begin())
|
|
||||||
{
|
|
||||||
text += std::string("\n#DDC79E") + std::string("#{") + categories[category].label + "}";
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string &spellId = *it;
|
|
||||||
|
|
||||||
const ESM::Spell *spell = store.spells.search(spellId);
|
|
||||||
text += "\n#BF9959" + spell->name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
w->setUserString("Caption_BirthSignText", text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a line separator if there are items above
|
// Add a line separator if there are items above
|
||||||
|
|
|
@ -65,6 +65,17 @@ void ToolTips::onFrame(float frameDuration)
|
||||||
|
|
||||||
IntSize tooltipSize;
|
IntSize tooltipSize;
|
||||||
|
|
||||||
|
// try to go 1 level up until there is a widget that has tooltip
|
||||||
|
// this is necessary because some skin elements are actually separate widgets
|
||||||
|
int i=0;
|
||||||
|
while (!focus->isUserString("ToolTipType"))
|
||||||
|
{
|
||||||
|
focus = focus->getParent();
|
||||||
|
if (!focus)
|
||||||
|
return;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
std::string type = focus->getUserString("ToolTipType");
|
std::string type = focus->getUserString("ToolTipType");
|
||||||
std::string text = focus->getUserString("ToolTipText");
|
std::string text = focus->getUserString("ToolTipText");
|
||||||
|
|
||||||
|
@ -78,6 +89,29 @@ void ToolTips::onFrame(float frameDuration)
|
||||||
mFocusObject = *focus->getUserData<MWWorld::Ptr>();
|
mFocusObject = *focus->getUserData<MWWorld::Ptr>();
|
||||||
tooltipSize = getToolTipViaPtr(false);
|
tooltipSize = getToolTipViaPtr(false);
|
||||||
}
|
}
|
||||||
|
else if (type == "Spell")
|
||||||
|
{
|
||||||
|
ToolTipInfo info;
|
||||||
|
const ESM::Spell *spell = MWBase::Environment::get().getWorld()->getStore().spells.find(focus->getUserString("Spell"));
|
||||||
|
info.caption = spell->name;
|
||||||
|
Widgets::SpellEffectList effects;
|
||||||
|
std::vector<ESM::ENAMstruct>::const_iterator end = spell->effects.list.end();
|
||||||
|
for (std::vector<ESM::ENAMstruct>::const_iterator it = spell->effects.list.begin(); it != end; ++it)
|
||||||
|
{
|
||||||
|
Widgets::SpellEffectParams params;
|
||||||
|
params.mEffectID = it->effectID;
|
||||||
|
params.mSkill = it->skill;
|
||||||
|
params.mAttribute = it->attribute;
|
||||||
|
params.mDuration = it->duration;
|
||||||
|
params.mMagnMin = it->magnMin;
|
||||||
|
params.mMagnMax = it->magnMax;
|
||||||
|
params.mRange = it->range;
|
||||||
|
params.mIsConstant = (spell->data.type == ESM::Spell::ST_Ability);
|
||||||
|
effects.push_back(params);
|
||||||
|
}
|
||||||
|
info.effects = effects;
|
||||||
|
tooltipSize = createToolTip(info);
|
||||||
|
}
|
||||||
else if (type == "Layout")
|
else if (type == "Layout")
|
||||||
{
|
{
|
||||||
// tooltip defined in the layout
|
// tooltip defined in the layout
|
||||||
|
@ -440,3 +474,150 @@ void ToolTips::setFocusObjectScreenCoords(float min_x, float min_y, float max_x,
|
||||||
mFocusToolTipX = (min_x + max_x) / 2;
|
mFocusToolTipX = (min_x + max_x) / 2;
|
||||||
mFocusToolTipY = min_y;
|
mFocusToolTipY = min_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ToolTips::createSkillToolTip(MyGUI::Widget* widget, int skillId)
|
||||||
|
{
|
||||||
|
if (skillId == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const std::string &skillNameId = ESMS::Skill::sSkillNameIds[skillId];
|
||||||
|
const ESM::Skill* skill = MWBase::Environment::get().getWorld()->getStore().skills.search(skillId);
|
||||||
|
assert(skill);
|
||||||
|
const ESM::Attribute* attr = MWBase::Environment::get().getWorld()->getStore().attributes.search(skill->data.attribute);
|
||||||
|
assert(attr);
|
||||||
|
std::string icon = "icons\\k\\" + ESM::Skill::sIconNames[skillId];
|
||||||
|
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
widget->setUserString("ToolTipLayout", "SkillNoProgressToolTip");
|
||||||
|
widget->setUserString("Caption_SkillNoProgressName", "#{"+skillNameId+"}");
|
||||||
|
widget->setUserString("Caption_SkillNoProgressDescription", skill->description);
|
||||||
|
widget->setUserString("Caption_SkillNoProgressAttribute", "#{sGoverningAttribute}: #{" + attr->name + "}");
|
||||||
|
widget->setUserString("ImageTexture_SkillNoProgressImage", icon);
|
||||||
|
widget->setUserString("ToolTipLayout", "SkillNoProgressToolTip");
|
||||||
|
widget->setUserString("ToolTipLayout", "SkillNoProgressToolTip");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolTips::createAttributeToolTip(MyGUI::Widget* widget, int attributeId)
|
||||||
|
{
|
||||||
|
if (attributeId == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const ESM::Attribute* attr = MWBase::Environment::get().getWorld()->getStore().attributes.search(attributeId);
|
||||||
|
assert(attr);
|
||||||
|
std::string icon = ESM::Attribute::attributeIcons[attributeId];
|
||||||
|
std::string name = ESM::Attribute::gmstAttributeIds[attributeId];
|
||||||
|
std::string desc = ESM::Attribute::gmstAttributeDescIds[attributeId];
|
||||||
|
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
widget->setUserString("ToolTipLayout", "AttributeToolTip");
|
||||||
|
widget->setUserString("Caption_AttributeName", "#{"+name+"}");
|
||||||
|
widget->setUserString("Caption_AttributeDescription", "#{"+desc+"}");
|
||||||
|
widget->setUserString("ImageTexture_AttributeImage", icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolTips::createSpecializationToolTip(MyGUI::Widget* widget, const std::string& name, int specId)
|
||||||
|
{
|
||||||
|
widget->setUserString("Caption_CenteredCaption", name);
|
||||||
|
std::string specText;
|
||||||
|
// get all skills of this specialisation
|
||||||
|
std::map<int, ESM::Skill> skills = MWBase::Environment::get().getWorld()->getStore().skills.list;
|
||||||
|
for (std::map<int, ESM::Skill>::const_iterator it = skills.begin();
|
||||||
|
it != skills.end(); ++it)
|
||||||
|
{
|
||||||
|
if (it->second.data.specialization == specId)
|
||||||
|
specText += std::string("\n#{") + ESM::Skill::sSkillNameIds[it->second.index] + "}";
|
||||||
|
}
|
||||||
|
widget->setUserString("Caption_CenteredCaptionText", specText);
|
||||||
|
widget->setUserString("ToolTipLayout", "TextWithCenteredCaptionToolTip");
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolTips::createBirthsignToolTip(MyGUI::Widget* widget, const std::string& birthsignId)
|
||||||
|
{
|
||||||
|
const ESM::BirthSign *sign = MWBase::Environment::get().getWorld()->getStore().birthSigns.find(birthsignId);
|
||||||
|
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
widget->setUserString("ToolTipLayout", "BirthSignToolTip");
|
||||||
|
std::string image = sign->texture;
|
||||||
|
image.replace(image.size()-3, 3, "dds");
|
||||||
|
widget->setUserString("ImageTexture_BirthSignImage", "textures\\" + image);
|
||||||
|
std::string text;
|
||||||
|
|
||||||
|
text += sign->name;
|
||||||
|
text += "\n#BF9959" + sign->description;
|
||||||
|
|
||||||
|
std::vector<std::string> abilities, powers, spells;
|
||||||
|
|
||||||
|
std::vector<std::string>::const_iterator it = sign->powers.list.begin();
|
||||||
|
std::vector<std::string>::const_iterator end = sign->powers.list.end();
|
||||||
|
for (; it != end; ++it)
|
||||||
|
{
|
||||||
|
const std::string &spellId = *it;
|
||||||
|
const ESM::Spell *spell = MWBase::Environment::get().getWorld()->getStore().spells.search(spellId);
|
||||||
|
if (!spell)
|
||||||
|
continue; // Skip spells which cannot be found
|
||||||
|
ESM::Spell::SpellType type = static_cast<ESM::Spell::SpellType>(spell->data.type);
|
||||||
|
if (type != ESM::Spell::ST_Spell && type != ESM::Spell::ST_Ability && type != ESM::Spell::ST_Power)
|
||||||
|
continue; // We only want spell, ability and powers.
|
||||||
|
|
||||||
|
if (type == ESM::Spell::ST_Ability)
|
||||||
|
abilities.push_back(spellId);
|
||||||
|
else if (type == ESM::Spell::ST_Power)
|
||||||
|
powers.push_back(spellId);
|
||||||
|
else if (type == ESM::Spell::ST_Spell)
|
||||||
|
spells.push_back(spellId);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct{ const std::vector<std::string> &spells; std::string label; } categories[3] = {
|
||||||
|
{abilities, "sBirthsignmenu1"},
|
||||||
|
{powers, "sPowers"},
|
||||||
|
{spells, "sBirthsignmenu2"}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int category = 0; category < 3; ++category)
|
||||||
|
{
|
||||||
|
for (std::vector<std::string>::const_iterator it = categories[category].spells.begin(); it != categories[category].spells.end(); ++it)
|
||||||
|
{
|
||||||
|
if (it == categories[category].spells.begin())
|
||||||
|
{
|
||||||
|
text += std::string("\n#DDC79E") + std::string("#{") + categories[category].label + "}";
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string &spellId = *it;
|
||||||
|
|
||||||
|
const ESM::Spell *spell = MWBase::Environment::get().getWorld()->getStore().spells.search(spellId);
|
||||||
|
text += "\n#BF9959" + spell->name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
widget->setUserString("Caption_BirthSignText", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolTips::createRaceToolTip(MyGUI::Widget* widget, const ESM::Race* playerRace)
|
||||||
|
{
|
||||||
|
widget->setUserString("Caption_CenteredCaption", playerRace->name);
|
||||||
|
widget->setUserString("Caption_CenteredCaptionText", playerRace->description);
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
widget->setUserString("ToolTipLayout", "TextWithCenteredCaptionToolTip");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolTips::createClassToolTip(MyGUI::Widget* widget, const ESM::Class& playerClass)
|
||||||
|
{
|
||||||
|
if (playerClass.name == "")
|
||||||
|
return;
|
||||||
|
|
||||||
|
int spec = playerClass.data.specialization;
|
||||||
|
std::string specStr;
|
||||||
|
if (spec == 0)
|
||||||
|
specStr = "#{sSpecializationCombat}";
|
||||||
|
else if (spec == 1)
|
||||||
|
specStr = "#{sSpecializationMagic}";
|
||||||
|
else if (spec == 2)
|
||||||
|
specStr = "#{sSpecializationStealth}";
|
||||||
|
|
||||||
|
widget->setUserString("Caption_ClassName", playerClass.name);
|
||||||
|
widget->setUserString("Caption_ClassDescription", playerClass.description);
|
||||||
|
widget->setUserString("Caption_ClassSpecialisation", "#{sSpecialization}: " + specStr);
|
||||||
|
widget->setUserString("ToolTipType", "Layout");
|
||||||
|
widget->setUserString("ToolTipLayout", "ClassToolTip");
|
||||||
|
}
|
||||||
|
|
|
@ -57,6 +57,15 @@ namespace MWGui
|
||||||
static std::string getCountString(const int value);
|
static std::string getCountString(const int value);
|
||||||
///< @return blank string if count is 1, or else " (value)"
|
///< @return blank string if count is 1, or else " (value)"
|
||||||
|
|
||||||
|
// these do not create an actual tooltip, but they fill in the data that is required so the tooltip
|
||||||
|
// system knows what to show in case this widget is hovered
|
||||||
|
static void createSkillToolTip(MyGUI::Widget* widget, int skillId);
|
||||||
|
static void createAttributeToolTip(MyGUI::Widget* widget, int attributeId);
|
||||||
|
static void createSpecializationToolTip(MyGUI::Widget* widget, const std::string& name, int specId);
|
||||||
|
static void createBirthsignToolTip(MyGUI::Widget* widget, const std::string& birthsignId);
|
||||||
|
static void createRaceToolTip(MyGUI::Widget* widget, const ESM::Race* playerRace);
|
||||||
|
static void createClassToolTip(MyGUI::Widget* widget, const ESM::Class& playerClass);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MyGUI::Widget* mDynamicToolTipBox;
|
MyGUI::Widget* mDynamicToolTipBox;
|
||||||
|
|
||||||
|
|
|
@ -301,8 +301,8 @@ void MWEffectList::createEffectWidgets(std::vector<MyGUI::WidgetPtr> &effects, M
|
||||||
{
|
{
|
||||||
effect = creator->createWidget<MWSpellEffect>("MW_EffectImage", coord, MyGUI::Align::Default);
|
effect = creator->createWidget<MWSpellEffect>("MW_EffectImage", coord, MyGUI::Align::Default);
|
||||||
effect->setWindowManager(mWindowManager);
|
effect->setWindowManager(mWindowManager);
|
||||||
it->mIsConstant = (flags & EF_Constant);
|
it->mIsConstant = (flags & EF_Constant) || it->mIsConstant;
|
||||||
it->mNoTarget = (flags & EF_NoTarget);
|
it->mNoTarget = (flags & EF_NoTarget) || it->mNoTarget;
|
||||||
effect->setSpellEffect(*it);
|
effect->setSpellEffect(*it);
|
||||||
effects.push_back(effect);
|
effects.push_back(effect);
|
||||||
if (effect->getRequestedWidth() > maxwidth)
|
if (effect->getRequestedWidth() > maxwidth)
|
||||||
|
|
|
@ -34,3 +34,14 @@ const std::string Attribute::gmstAttributeDescIds[Attribute::Length] = {
|
||||||
"sPerDesc",
|
"sPerDesc",
|
||||||
"sLucDesc"
|
"sLucDesc"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const std::string Attribute::attributeIcons[Attribute::Length] = {
|
||||||
|
"icons\\k\\attribute_strength.dds",
|
||||||
|
"icons\\k\\attribute_int.dds",
|
||||||
|
"icons\\k\\attribute_wilpower.dds",
|
||||||
|
"icons\\k\\attribute_agility.dds",
|
||||||
|
"icons\\k\\attribute_speed.dds",
|
||||||
|
"icons\\k\\attribute_endurance.dds",
|
||||||
|
"icons\\k\\attribute_personality.dds",
|
||||||
|
"icons\\k\\attribute_luck.dds"
|
||||||
|
};
|
||||||
|
|
|
@ -30,6 +30,7 @@ struct Attribute
|
||||||
static const AttributeID attributeIds[Length];
|
static const AttributeID attributeIds[Length];
|
||||||
static const std::string gmstAttributeIds[Length];
|
static const std::string gmstAttributeIds[Length];
|
||||||
static const std::string gmstAttributeDescIds[Length];
|
static const std::string gmstAttributeDescIds[Length];
|
||||||
|
static const std::string attributeIcons[Length];
|
||||||
|
|
||||||
Attribute(AttributeID id, const std::string &name, const std::string &description)
|
Attribute(AttributeID id, const std::string &name, const std::string &description)
|
||||||
: id(id)
|
: id(id)
|
||||||
|
|
|
@ -14,8 +14,11 @@
|
||||||
<Widget type="Widget" skin="" position="15 152 484 178" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="Widget" skin="" position="15 152 484 178" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
|
|
||||||
<Widget type="TextBox" skin="HeaderText" position="0 0 162 18" name="SpecializationT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="0 0 162 18" name="SpecializationT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Specialization:"/>
|
<Property key="Caption" value="#{sChooseClassMenu1}"/>
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="TextToolTip"/>
|
||||||
|
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp1}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="TextBox" skin="SandText" position="0 18 162 18" name="SpecializationName" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="SandText" position="0 18 162 18" name="SpecializationName" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
@ -23,16 +26,19 @@
|
||||||
|
|
||||||
<!-- Favorite Attributes -->
|
<!-- Favorite Attributes -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="0 41 162 18" name="FavoriteAttributesT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="0 41 162 18" name="FavoriteAttributesT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Favorite Attributes:"/>
|
<Property key="Caption" value="#{sChooseClassMenu2}"/>
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="TextToolTip"/>
|
||||||
|
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp2}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWAttribute" skin="MW_StatName" position="0 59 162 18" name="FavoriteAttribute0" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWAttribute" skin="MW_StatName" position="0 59 162 18" name="FavoriteAttribute0" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
<Widget type="MWAttribute" skin="MW_StatName" position="0 77 162 18" name="FavoriteAttribute1" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWAttribute" skin="MW_StatName" position="0 77 162 18" name="FavoriteAttribute1" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
|
|
||||||
<!-- Major Skills -->
|
<!-- Major Skills -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="162 0 162 18" name="MajorSkillT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="162 0 162 18" name="MajorSkillT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Major Skills:"/>
|
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
<Property key="Caption" value="#{sChooseClassMenu3}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWSkill" skin="MW_StatName" position="162 18 162 18" name="MajorSkill0" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWSkill" skin="MW_StatName" position="162 18 162 18" name="MajorSkill0" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
<Widget type="MWSkill" skin="MW_StatName" position="162 36 162 18" name="MajorSkill1" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWSkill" skin="MW_StatName" position="162 36 162 18" name="MajorSkill1" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
|
@ -42,7 +48,7 @@
|
||||||
|
|
||||||
<!-- Minor Skills -->
|
<!-- Minor Skills -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="325 0 162 18" name="MinorSkillT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="325 0 162 18" name="MinorSkillT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Minor Skills:"/>
|
<Property key="Caption" value="#{sChooseClassMenu4}"/>
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWSkill" skin="MW_StatName" position="325 18 162 18" name="MinorSkill0" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWSkill" skin="MW_StatName" position="325 18 162 18" name="MinorSkill0" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
|
@ -58,7 +64,7 @@
|
||||||
<Property key="Caption" value="#{sBack}"/>
|
<Property key="Caption" value="#{sBack}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_Button" position="434 265 42 23" name="OKButton">
|
<Widget type="Button" skin="MW_Button" position="434 265 42 23" name="OKButton">
|
||||||
<Property key="Caption" value="OK"/>
|
<Property key="Caption" value="#{sOK}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -12,17 +12,23 @@
|
||||||
|
|
||||||
<!-- Specialization -->
|
<!-- Specialization -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="0 0 156 18" name="SpecializationT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="0 0 156 18" name="SpecializationT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Specialization:"/>
|
<Property key="Caption" value="#{sChooseClassMenu1}"/>
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="TextToolTip"/>
|
||||||
|
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp1}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="TextBox" skin="SandText" position="0 18 156 18" name="SpecializationName" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="Button" skin="SandTextButton" position="0 18 156 18" name="SpecializationName" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<!-- Favorite Attributes -->
|
<!-- Favorite Attributes -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="0 41 156 18" name="FavoriteAttributesT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="0 41 156 18" name="FavoriteAttributesT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Favorite Attributes:"/>
|
<Property key="Caption" value="#{sChooseClassMenu2}"/>
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="TextToolTip"/>
|
||||||
|
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp2}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 59 156 18" name="FavoriteAttribute0" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 59 156 18" name="FavoriteAttribute0" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 77 156 18" name="FavoriteAttribute1" align="ALIGN_LEFT ALIGN_TOP" />
|
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 77 156 18" name="FavoriteAttribute1" align="ALIGN_LEFT ALIGN_TOP" />
|
||||||
|
@ -59,7 +65,7 @@
|
||||||
<Property key="Caption" value="#{sBack}"/>
|
<Property key="Caption" value="#{sBack}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_Button" position="417 158 42 23" name="OKButton">
|
<Widget type="Button" skin="MW_Button" position="417 158 42 23" name="OKButton">
|
||||||
<Property key="Caption" value="OK"/>
|
<Property key="Caption" value="#{sOK}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
|
|
||||||
<!-- Class text -->
|
<!-- Class text -->
|
||||||
<Widget type="EditBox" skin="SandText" position="32 152 265 40" name="ReflectT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="EditBox" skin="SandText" position="32 152 265 40" name="ReflectT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Your personality and past reflect a:"/>
|
|
||||||
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTER"/>
|
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTER"/>
|
||||||
<Property key="MultiLine" value="true"/>
|
<Property key="MultiLine" value="true"/>
|
||||||
<Property key="WordWrap" value="true"/>
|
<Property key="WordWrap" value="true"/>
|
||||||
|
<Property key="Static" value="true"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="TextBox" skin="SandText" position="32 192 265 23" name="ClassName" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="SandText" position="32 192 265 23" name="ClassName" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="[Class]"/>
|
<Property key="Caption" value="[Class]"/>
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
<Property key="Caption" value="#{sBack}"/>
|
<Property key="Caption" value="#{sBack}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_Button" position="277 219 42 23" name="OKButton">
|
<Widget type="Button" skin="MW_Button" position="277 219 42 23" name="OKButton">
|
||||||
<Property key="Caption" value="OK"/>
|
<Property key="Caption" value="#{sOK}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -17,27 +17,23 @@
|
||||||
<!-- Gender choice -->
|
<!-- Gender choice -->
|
||||||
<Widget type="Button" skin="MW_ScrollLeft" position="8 298 14 14" name="PrevGenderButton"/>
|
<Widget type="Button" skin="MW_ScrollLeft" position="8 298 14 14" name="PrevGenderButton"/>
|
||||||
<Widget type="TextBox" skin="HeaderText" position="14 298 227 14" name="GenderChoiceT">
|
<Widget type="TextBox" skin="HeaderText" position="14 298 227 14" name="GenderChoiceT">
|
||||||
<Property key="Caption" value="Change Sex"/>
|
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_ScrollRight" position="235 298 14 14" name="NextGenderButton"/>
|
<Widget type="Button" skin="MW_ScrollRight" position="235 298 14 14" name="NextGenderButton"/>
|
||||||
|
|
||||||
<!-- Face choice -->
|
<!-- Face choice -->
|
||||||
<Widget type="Button" skin="MW_ScrollLeft" position="8 320 14 14" name="PrevFaceButton"/>
|
<Widget type="Button" skin="MW_ScrollLeft" position="8 320 14 14" name="PrevFaceButton"/>
|
||||||
<Widget type="TextBox" skin="HeaderText" position="14 320 227 14" name="FaceChoiceT">
|
<Widget type="TextBox" skin="HeaderText" position="14 320 227 14" name="FaceChoiceT">
|
||||||
<Property key="Caption" value="Change Face"/>
|
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_ScrollRight" position="235 320 14 14" name="NextFaceButton"/>
|
<Widget type="Button" skin="MW_ScrollRight" position="235 320 14 14" name="NextFaceButton"/>
|
||||||
|
|
||||||
<!-- Hair choice -->
|
<!-- Hair choice -->
|
||||||
<Widget type="Button" skin="MW_ScrollLeft" position="8 342 14 14" name="PrevHairButton"/>
|
<Widget type="Button" skin="MW_ScrollLeft" position="8 342 14 14" name="PrevHairButton"/>
|
||||||
<Widget type="TextBox" skin="HeaderText" position="14 342 227 14" name="HairChoiceT">
|
<Widget type="TextBox" skin="HeaderText" position="14 342 227 14" name="HairChoiceT">
|
||||||
<Property key="Caption" value="Change Hair"/>
|
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_ScrollRight" position="235 342 14 14" name="NextHairButton"/>
|
<Widget type="Button" skin="MW_ScrollRight" position="235 342 14 14" name="NextHairButton"/>
|
||||||
|
|
||||||
<!-- Race -->
|
<!-- Race -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="261 16 132 18" name="RaceT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="261 16 132 18" name="RaceT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Race"/>
|
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="ListBox" skin="MW_List" position="264 39 132 161" name="RaceList">
|
<Widget type="ListBox" skin="MW_List" position="264 39 132 161" name="RaceList">
|
||||||
|
@ -45,15 +41,13 @@
|
||||||
|
|
||||||
<!-- Spell powers -->
|
<!-- Spell powers -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="261 200 132 18" name="SpellPowerT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="261 200 132 18" name="SpellPowerT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Specials"/>
|
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<!-- Spell power sub-widgets will be placed here, no skin to make it invisible -->
|
<!-- Spell power sub-widgets will be placed here, no skin to make it invisible -->
|
||||||
<Widget type="Widget" skin="" position="261 220 132 140" name="SpellPowerList" />
|
<Widget type="Widget" skin="" position="261 220 250 140" name="SpellPowerList" />
|
||||||
|
|
||||||
<!-- Skill bonus -->
|
<!-- Skill bonus -->
|
||||||
<Widget type="TextBox" skin="HeaderText" position="403 39 159 18" name="SkillsT" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="TextBox" skin="HeaderText" position="403 39 159 18" name="SkillsT" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="Caption" value="Skill Bonus"/>
|
|
||||||
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
<Property key="TextAlign" value="ALIGN_LEFT ALIGN_TOP"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<!-- Skill bonus sub-widgets will be placed here, no skin to make it invisible -->
|
<!-- Skill bonus sub-widgets will be placed here, no skin to make it invisible -->
|
||||||
|
|
|
@ -26,26 +26,83 @@
|
||||||
<!-- Player health, magicka and fatigue -->
|
<!-- Player health, magicka and fatigue -->
|
||||||
<Widget type="Widget" skin="MW_Box" position="8 144 244 64">
|
<Widget type="Widget" skin="MW_Box" position="8 144 244 64">
|
||||||
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Red" position="4 4 236 18" name="Health">
|
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Red" position="4 4 236 18" name="Health">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="HealthToolTip"/>
|
||||||
|
<UserString key="ImageTexture_HealthImage" value="icons\k\health.dds"/>
|
||||||
<Property key="Caption" value="#{sHealth}"/>
|
<Property key="Caption" value="#{sHealth}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Blue" position="4 22 236 18" name="Magicka">
|
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Blue" position="4 22 236 18" name="Magicka">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="HealthToolTip"/>
|
||||||
|
<UserString key="ImageTexture_HealthImage" value="icons\k\magicka.dds"/>
|
||||||
<Property key="Caption" value="#{sMagic}"/>
|
<Property key="Caption" value="#{sMagic}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Green" position="4 40 236 18" name="Fatigue">
|
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Green" position="4 40 236 18" name="Fatigue">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="HealthToolTip"/>
|
||||||
|
<UserString key="ImageTexture_HealthImage" value="icons\k\fatigue.dds"/>
|
||||||
<Property key="Caption" value="#{sFatigue}"/>
|
<Property key="Caption" value="#{sFatigue}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<!-- Player attributes -->
|
<!-- Player attributes -->
|
||||||
<Widget type="Widget" skin="MW_Box" position="8 214 244 154">
|
<Widget type="Widget" skin="MW_Box" position="8 214 244 154">
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 4 236 18" name="Attribute0" />
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 4 236 18" name="Attribute0">
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 22 236 18" name="Attribute1" />
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 40 236 18" name="Attribute2" />
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 58 236 18" name="Attribute3" />
|
<UserString key="Caption_AttributeName" value="#{sAttributeStrength}"/>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 76 236 18" name="Attribute4" />
|
<UserString key="Caption_AttributeDescription" value="#{sStrDesc}"/>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 94 236 18" name="Attribute5" />
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_strength.dds"/>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 112 236 18" name="Attribute6" />
|
</Widget>
|
||||||
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 130 236 18" name="Attribute7" />
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 22 236 18" name="Attribute1">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeIntelligence}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sIntDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_int.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 40 236 18" name="Attribute2">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeWillpower}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sWilDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_wilpower.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 58 236 18" name="Attribute3">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeAgility}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sAgiDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_agility.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 76 236 18" name="Attribute4">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeSpeed}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sSpdDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_speed.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 94 236 18" name="Attribute5">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeEndurance}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sEndDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_endurance.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 112 236 18" name="Attribute6">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributePersonality}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sPerDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_personality.dds"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="MWAttribute" skin="MW_StatNameValue" position="4 130 236 18" name="Attribute7">
|
||||||
|
<UserString key="ToolTipType" value="Layout"/>
|
||||||
|
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
|
||||||
|
<UserString key="Caption_AttributeName" value="#{sAttributeLuck}"/>
|
||||||
|
<UserString key="Caption_AttributeDescription" value="#{sLucDesc}"/>
|
||||||
|
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_luck.dds"/>
|
||||||
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<!-- Player skills, factions, birthsign and reputation -->
|
<!-- Player skills, factions, birthsign and reputation -->
|
||||||
|
@ -59,7 +116,7 @@
|
||||||
<Property key="Caption" value="#{sBack}"/>
|
<Property key="Caption" value="#{sBack}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="MW_Button" position="460 372 42 23" name="OKButton">
|
<Widget type="Button" skin="MW_Button" position="460 372 42 23" name="OKButton">
|
||||||
<Property key="Caption" value="OK"/>
|
<Property key="Caption" value="#{sOK}"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -11,13 +11,13 @@
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<!-- Specialization list -->
|
<!-- Specialization list -->
|
||||||
<Widget type="TextBox" skin="SandText" position="0 28 216 18" name="Specialization0" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="Button" skin="SandTextButton" position="0 28 216 18" name="Specialization0" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="TextBox" skin="SandText" position="0 46 216 18" name="Specialization1" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="Button" skin="SandTextButton" position="0 46 216 18" name="Specialization1" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="TextBox" skin="SandText" position="0 64 216 18" name="Specialization2" align="ALIGN_LEFT ALIGN_TOP">
|
<Widget type="Button" skin="SandTextButton" position="0 64 216 18" name="Specialization2" align="ALIGN_LEFT ALIGN_TOP">
|
||||||
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
<Property key="TextAlign" value="ALIGN_TOP ALIGN_HCENTRE"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 545 265" name="_Main">
|
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 545 265" name="_Main">
|
||||||
|
|
||||||
<!-- Edit box -->
|
<!-- Edit box -->
|
||||||
<Widget type="Widget" skin="MW_Box" position="14 14 516 70" name="TextBox" align="ALIGN_TOP ALIGN_HCENTER">
|
<Widget type="Widget" skin="" position="14 14 516 70" name="TextBox" align="ALIGN_TOP ALIGN_HCENTER">
|
||||||
<Widget type="TextBox" skin="SandText" position="4 4 508 62" name="Text" align="ALIGN_TOP ALIGN_HCENTER">
|
<Widget type="TextBox" skin="SandText" position="4 4 508 62" name="Text" align="ALIGN_TOP ALIGN_HCENTER">
|
||||||
<Property key="WordWrap" value="1" />
|
<Property key="WordWrap" value="1" />
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
|
@ -139,4 +139,33 @@
|
||||||
</Widget>
|
</Widget>
|
||||||
</Resource>
|
</Resource>
|
||||||
|
|
||||||
|
<Resource type="ResourceLayout" name="MW_StatNameValue" version="3.2.0">
|
||||||
|
<Widget type="Widget" skin="" position="0 0 200 18" name="Root">
|
||||||
|
<Property key="NeedMouse" value="true"/>
|
||||||
|
<Widget type="TextBox" skin="SandText" position = "0 0 160 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatName">
|
||||||
|
<Property key="NeedMouse" value="false"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="TextBox" skin="SandTextRight" position = "160 0 40 18" align = "ALIGN_RIGHT ALIGN_TOP" name = "StatValue">
|
||||||
|
<Property key="NeedMouse" value="false"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
</Resource>
|
||||||
|
|
||||||
|
<Resource type="ResourceLayout" name="MW_StatName" version="3.2.0">
|
||||||
|
<Widget type="Widget" skin="" position="0 0 200 18" name="Root">
|
||||||
|
<Property key="NeedMouse" value="true"/>
|
||||||
|
<Widget type="TextBox" skin="SandText" position="0 0 200 18" align="ALIGN_LEFT ALIGN_HSTRETCH" name="StatName">
|
||||||
|
<Property key="NeedMouse" value="false"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
</Resource>
|
||||||
|
|
||||||
|
<Resource type="ResourceLayout" name="MW_StatNameButton" version="3.2.0">
|
||||||
|
<Widget type="Widget" skin="" position="0 0 200 18" name="Root">
|
||||||
|
<Widget type="Button" skin="SandTextButton" position = "0 0 200 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatNameButton">
|
||||||
|
<Property key="NeedMouse" value="true"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
</Resource>
|
||||||
|
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -65,26 +65,45 @@
|
||||||
<BasisSkin type="SimpleText" offset = "0 0 16 16" align = "ALIGN_STRETCH"/>
|
<BasisSkin type="SimpleText" offset = "0 0 16 16" align = "ALIGN_STRETCH"/>
|
||||||
</Skin>
|
</Skin>
|
||||||
|
|
||||||
<Skin name = "MW_StatName" size = "200 18">
|
|
||||||
<Child type="TextBox" skin="SandText" offset = "0 0 200 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatName" />
|
|
||||||
</Skin>
|
|
||||||
|
|
||||||
<Skin name = "MW_StatNameC" size = "200 18">
|
<Skin name = "MW_StatNameC" size = "200 18">
|
||||||
<Child type="TextBoxC" skin="SandText" offset = "0 0 200 18" align = "LEFT HSTRETCH" name = "StatName" />
|
<Child type="TextBoxC" skin="SandText" offset = "0 0 200 18" align = "LEFT HSTRETCH" name = "StatName" />
|
||||||
</Skin>
|
</Skin>
|
||||||
|
|
||||||
<Skin name = "MW_StatNameValue" size = "200 18">
|
<Skin name = "SandTextButtonC" size = "16 16">
|
||||||
<Child type="TextBox" skin="SandText" offset = "0 0 160 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatName" />
|
<Property key="FontName" value = "Default" />
|
||||||
<Child type="TextBox" skin="SandTextRight" offset = "160 0 40 18" align = "ALIGN_RIGHT ALIGN_TOP" name = "StatValue" />
|
<Property key="TextAlign" value = "Top HCenter" />
|
||||||
|
<BasisSkin type="SimpleText" offset = "0 0 16 16" align = "ALIGN_STRETCH">
|
||||||
|
<State name="disabled" colour="0.5 0.5 0.5" shift="0"/>
|
||||||
|
<State name="normal" colour="0.75 0.6 0.35" shift="0"/>
|
||||||
|
<State name="highlighted" colour="0.85 0.76 0.60" shift="0"/>
|
||||||
|
<State name="pushed" colour="1 1 1" shift="0"/>
|
||||||
|
<State name="disabled_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="normal_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="highlighted_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="pushed_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
</BasisSkin>
|
||||||
|
</Skin>
|
||||||
|
|
||||||
|
<Skin name = "SandTextButton" size = "16 16">
|
||||||
|
<Property key="FontName" value = "Default" />
|
||||||
|
<Property key="TextAlign" value = "ALIGN_LEFT ALIGN_BOTTOM" />
|
||||||
|
<BasisSkin type="SimpleText" offset = "0 0 16 16" align = "ALIGN_STRETCH">
|
||||||
|
<State name="disabled" colour="0.5 0.5 0.5" shift="0"/>
|
||||||
|
<State name="normal" colour="0.75 0.6 0.35" shift="0"/>
|
||||||
|
<State name="highlighted" colour="0.85 0.76 0.60" shift="0"/>
|
||||||
|
<State name="pushed" colour="1 1 1" shift="0"/>
|
||||||
|
<State name="disabled_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="normal_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="highlighted_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
<State name="pushed_checked" colour="0.33 0.38 0.67" shift="0"/>
|
||||||
|
</BasisSkin>
|
||||||
</Skin>
|
</Skin>
|
||||||
|
|
||||||
<Skin name = "MW_StatNameButtonC" size = "200 18">
|
<Skin name = "MW_StatNameButtonC" size = "200 18">
|
||||||
<Child type="Button" skin="SandTextC" offset = "0 0 200 18" align = "LEFT HSTRETCH" name = "StatNameButton" />
|
<Child type="Button" skin="SandTextButtonC" offset = "0 0 200 18" align = "LEFT HSTRETCH" name = "StatNameButton" />
|
||||||
</Skin>
|
</Skin>
|
||||||
|
|
||||||
<Skin name = "MW_StatNameButton" size = "200 18">
|
|
||||||
<Child type="Button" skin="SandText" offset = "0 0 200 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatNameButton" />
|
|
||||||
</Skin>
|
|
||||||
|
|
||||||
<Skin name = "MW_StatNameValueButton" size = "200 18">
|
<Skin name = "MW_StatNameValueButton" size = "200 18">
|
||||||
<Child type="Button" skin="SandText" offset = "0 0 160 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatNameButton" />
|
<Child type="Button" skin="SandText" offset = "0 0 160 18" align = "ALIGN_LEFT ALIGN_HSTRETCH" name = "StatNameButton" />
|
||||||
|
|
|
@ -134,6 +134,31 @@
|
||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
|
<!-- Skill tooltip (without progress bar) -->
|
||||||
|
<Widget type="Widget" skin="HUD_Box_NoTransp" position="0 0 300 52" align="Stretch" name="SkillNoProgressToolTip">
|
||||||
|
<Property key="Visible" value="false"/>
|
||||||
|
|
||||||
|
<Widget type="ImageBox" skin="ImageBox" position="8 8 32 32" align="Left Top" name="SkillNoProgressImage"/>
|
||||||
|
|
||||||
|
<Widget type="TextBox" skin="NormalText" position="44 8 252 16" align="Left Top HStretch" name="SkillNoProgressName">
|
||||||
|
<Property key="TextAlign" value="Left"/>
|
||||||
|
<UserString key="AutoResizeHorizontal" value="true"/>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
<Widget type="TextBox" skin="SandText" position="44 24 252 16" align="Left Top HStretch" name="SkillNoProgressAttribute">
|
||||||
|
<Property key="TextAlign" value="Left"/>
|
||||||
|
<UserString key="AutoResizeHorizontal" value="true"/>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
<Widget type="EditBox" skin="SandText" position="8 44 284 0" align="Left Top Stretch" name="SkillNoProgressDescription">
|
||||||
|
<Property key="MultiLine" value="true"/>
|
||||||
|
<Property key="WordWrap" value="true"/>
|
||||||
|
<Property key="TextAlign" value="Left Top"/>
|
||||||
|
<UserString key="AutoResizeHorizontal" value="true"/>
|
||||||
|
<UserString key="AutoResizeVertical" value="true"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
<!-- Level tooltip -->
|
<!-- Level tooltip -->
|
||||||
<Widget type="Widget" skin="HUD_Box_NoTransp" position="0 0 300 58" align="Left Top" name="LevelToolTip">
|
<Widget type="Widget" skin="HUD_Box_NoTransp" position="0 0 300 58" align="Left Top" name="LevelToolTip">
|
||||||
<Property key="Visible" value="false"/>
|
<Property key="Visible" value="false"/>
|
||||||
|
|
Loading…
Reference in a new issue