forked from teamnwah/openmw-tes3coop
Improved repair widget
This commit is contained in:
parent
1164c3f16e
commit
10d4cb15ad
6 changed files with 85 additions and 27 deletions
|
@ -30,6 +30,7 @@ namespace MWGui
|
|||
|
||||
Repair::Repair()
|
||||
: WindowBase("openmw_repair.layout")
|
||||
, mItemSelectionDialog(NULL)
|
||||
{
|
||||
getWidget(mRepairBox, "RepairBox");
|
||||
getWidget(mToolBox, "ToolBox");
|
||||
|
@ -39,9 +40,11 @@ Repair::Repair()
|
|||
getWidget(mCancelButton, "CancelButton");
|
||||
|
||||
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &Repair::onCancel);
|
||||
mRepairBox->eventItemClicked += MyGUI::newDelegate(this, &Repair::onRepairItem);
|
||||
|
||||
mRepairBox->eventItemClicked += MyGUI::newDelegate(this, &Repair::onRepairItem);
|
||||
mRepairBox->setDisplayMode(ItemChargeView::DisplayMode_Health);
|
||||
|
||||
mToolIcon->eventMouseButtonClick += MyGUI::newDelegate(this, &Repair::onSelectItem);
|
||||
}
|
||||
|
||||
void Repair::open()
|
||||
|
@ -83,6 +86,8 @@ void Repair::updateRepairView()
|
|||
|
||||
float quality = ref->mBase->mData.mQuality;
|
||||
|
||||
mToolIcon->setUserData(mRepair.getTool());
|
||||
|
||||
std::stringstream qualityStr;
|
||||
qualityStr << std::setprecision(3) << quality;
|
||||
|
||||
|
@ -93,6 +98,12 @@ void Repair::updateRepairView()
|
|||
mToolBox->setVisible(toolBoxVisible);
|
||||
mToolBox->setUserString("Hidden", toolBoxVisible ? "false" : "true");
|
||||
|
||||
if (!toolBoxVisible)
|
||||
{
|
||||
mToolIcon->setItem(MWWorld::Ptr());
|
||||
mToolIcon->clearUserStrings();
|
||||
}
|
||||
|
||||
mRepairBox->update();
|
||||
|
||||
Gui::Box* box = dynamic_cast<Gui::Box*>(mMainWidget);
|
||||
|
@ -103,6 +114,36 @@ void Repair::updateRepairView()
|
|||
center();
|
||||
}
|
||||
|
||||
void Repair::onSelectItem(MyGUI::Widget *sender)
|
||||
{
|
||||
delete mItemSelectionDialog;
|
||||
mItemSelectionDialog = new ItemSelectionDialog("#{sRepair}");
|
||||
mItemSelectionDialog->eventItemSelected += MyGUI::newDelegate(this, &Repair::onItemSelected);
|
||||
mItemSelectionDialog->eventDialogCanceled += MyGUI::newDelegate(this, &Repair::onItemCancel);
|
||||
mItemSelectionDialog->setVisible(true);
|
||||
mItemSelectionDialog->openContainer(MWMechanics::getPlayer());
|
||||
mItemSelectionDialog->setFilter(SortFilterItemModel::Filter_OnlyRepairTools);
|
||||
}
|
||||
|
||||
void Repair::onItemSelected(MWWorld::Ptr item)
|
||||
{
|
||||
mItemSelectionDialog->setVisible(false);
|
||||
|
||||
mToolIcon->setItem(item);
|
||||
mToolIcon->setUserString ("ToolTipType", "ItemPtr");
|
||||
mToolIcon->setUserData(item);
|
||||
|
||||
mRepair.setTool(item);
|
||||
|
||||
MWBase::Environment::get().getSoundManager()->playSound(item.getClass().getDownSoundId(item), 1, 1);
|
||||
updateRepairView();
|
||||
}
|
||||
|
||||
void Repair::onItemCancel()
|
||||
{
|
||||
mItemSelectionDialog->setVisible(false);
|
||||
}
|
||||
|
||||
void Repair::onCancel(MyGUI::Widget* /*sender*/)
|
||||
{
|
||||
exit();
|
||||
|
|
|
@ -3,11 +3,14 @@
|
|||
|
||||
#include "windowbase.hpp"
|
||||
|
||||
#include "itemselection.hpp"
|
||||
|
||||
#include "../mwmechanics/repair.hpp"
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
|
||||
class ItemSelectionDialog;
|
||||
class ItemWidget;
|
||||
class ItemChargeView;
|
||||
|
||||
|
@ -29,6 +32,8 @@ protected:
|
|||
|
||||
ItemWidget* mToolIcon;
|
||||
|
||||
ItemSelectionDialog* mItemSelectionDialog;
|
||||
|
||||
MyGUI::TextBox* mUsesLabel;
|
||||
MyGUI::TextBox* mQualityLabel;
|
||||
|
||||
|
@ -38,6 +43,11 @@ protected:
|
|||
|
||||
void updateRepairView();
|
||||
|
||||
void onSelectItem(MyGUI::Widget* sender);
|
||||
|
||||
void onItemSelected(MWWorld::Ptr item);
|
||||
void onItemCancel();
|
||||
|
||||
void onRepairItem(MyGUI::Widget* sender, const MWWorld::Ptr& ptr);
|
||||
void onCancel(MyGUI::Widget* sender);
|
||||
|
||||
|
|
|
@ -129,6 +129,8 @@ namespace MWGui
|
|||
if ((mFilter & Filter_OnlyChargedSoulstones) && (base.getTypeName() != typeid(ESM::Miscellaneous).name()
|
||||
|| base.getCellRef().getSoul() == ""))
|
||||
return false;
|
||||
if ((mFilter & Filter_OnlyRepairTools) && (base.getTypeName() != typeid(ESM::Repair).name()))
|
||||
return false;
|
||||
if ((mFilter & Filter_OnlyEnchantable) && (item.mFlags & ItemStack::Flag_Enchanted
|
||||
|| (base.getTypeName() != typeid(ESM::Armor).name()
|
||||
&& base.getTypeName() != typeid(ESM::Clothing).name()
|
||||
|
|
|
@ -41,6 +41,7 @@ namespace MWGui
|
|||
static const int Filter_OnlyUsableItems = (1<<4); // Only items with a Use action
|
||||
static const int Filter_OnlyRepairable = (1<<5);
|
||||
static const int Filter_OnlyRechargable = (1<<6);
|
||||
static const int Filter_OnlyRepairTools = (1<<7);
|
||||
|
||||
|
||||
private:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="Window" skin="MW_Dialog" position="0 0 380 285" layer="Windows" align="Center" name="_Main">
|
||||
<Widget type="Window" skin="MW_DialogNoTransp" position="0 0 380 285" layer="Windows" align="Center" name="_Main">
|
||||
|
||||
<Widget type="TextBox" skin="SandText" position="8 8 300 18" name="Label"/>
|
||||
|
||||
|
|
|
@ -1,26 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="VBox" skin="MW_Dialog" layer="Windows" position="0 0 329 253" align="Center" name="_Main">
|
||||
<Widget type="VBox" skin="MW_Dialog" layer="Windows" position="0 0 330 385" align="Center" name="_Main">
|
||||
<Property key="Padding" value="12"/>
|
||||
<Property key="Spacing" value="8"/>
|
||||
|
||||
<Widget type="HBox" name="ToolBox">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
|
||||
<Widget type="ItemWidget" skin="MW_ItemIconSmall" position="0 0 32 32" name="ToolIcon"/>
|
||||
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="UsesLabel">
|
||||
<Property key="Caption" value="#{sUses}"/>
|
||||
</Widget>
|
||||
<Widget type="Widget">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="QualityLabel">
|
||||
<Property key="Caption" value="#{sQuality}"/>
|
||||
<Property key="TextAlign" value="Right"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="Label">
|
||||
<Property key="Caption" value="#{sRepairServiceTitle}"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="ItemChargeView" skin="MW_ItemChargeView" align="Left Stretch" name="RepairBox">
|
||||
<UserString key="VStretch" value="true"/>
|
||||
|
@ -29,14 +16,31 @@
|
|||
|
||||
<Widget type="HBox">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<Widget type="Widget">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
|
||||
<Property key="Caption" value="#{sCancel}"/>
|
||||
</Widget>
|
||||
<Widget type="ItemWidget" skin="MW_ItemIconBox" position="0 0 44 44" name="ToolIcon">
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" name="ToolBox">
|
||||
<Widget type="VBox">
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="UsesLabel">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<Property key="Caption" value="#{sUses}"/>
|
||||
<Property key="TextAlign" value="Left"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="QualityLabel">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<Property key="Caption" value="#{sQuality}"/>
|
||||
<Property key="TextAlign" value="Left"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="Widget">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
|
||||
<Property key="Caption" value="#{sCancel}"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
</Widget>
|
||||
|
||||
</MyGUI>
|
||||
|
|
Loading…
Reference in a new issue