mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-04 03:40:14 +00:00
Merge remote-tracking branch 'potatoesmaster/sneak'
This commit is contained in:
commit
8f330e7e3c
@ -188,6 +188,7 @@ namespace MWBase
|
|||||||
virtual void setMinimapVisibility(bool visible) = 0;
|
virtual void setMinimapVisibility(bool visible) = 0;
|
||||||
virtual void setWeaponVisibility(bool visible) = 0;
|
virtual void setWeaponVisibility(bool visible) = 0;
|
||||||
virtual void setSpellVisibility(bool visible) = 0;
|
virtual void setSpellVisibility(bool visible) = 0;
|
||||||
|
virtual void setSneakVisibility(bool visible) = 0;
|
||||||
|
|
||||||
virtual void activateQuickKey (int index) = 0;
|
virtual void activateQuickKey (int index) = 0;
|
||||||
|
|
||||||
|
@ -84,6 +84,9 @@ namespace MWGui
|
|||||||
mSpellBoxBaseLeft = mSpellBox->getLeft();
|
mSpellBoxBaseLeft = mSpellBox->getLeft();
|
||||||
mSpellBox->eventMouseButtonClick += MyGUI::newDelegate(this, &HUD::onMagicClicked);
|
mSpellBox->eventMouseButtonClick += MyGUI::newDelegate(this, &HUD::onMagicClicked);
|
||||||
|
|
||||||
|
getWidget(mSneakBox, "SneakBox");
|
||||||
|
mSneakBoxBaseLeft = mSneakBox->getLeft();
|
||||||
|
|
||||||
getWidget(mEffectBox, "EffectBox");
|
getWidget(mEffectBox, "EffectBox");
|
||||||
mEffectBoxBaseRight = viewSize.width - mEffectBox->getRight();
|
mEffectBoxBaseRight = viewSize.width - mEffectBox->getRight();
|
||||||
|
|
||||||
@ -503,6 +506,12 @@ namespace MWGui
|
|||||||
updatePositions();
|
updatePositions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HUD::setSneakVisible(bool visible)
|
||||||
|
{
|
||||||
|
mSneakBox->setVisible(visible);
|
||||||
|
updatePositions();
|
||||||
|
}
|
||||||
|
|
||||||
void HUD::setEffectVisible(bool visible)
|
void HUD::setEffectVisible(bool visible)
|
||||||
{
|
{
|
||||||
mEffectBox->setVisible (visible);
|
mEffectBox->setVisible (visible);
|
||||||
@ -517,12 +526,18 @@ namespace MWGui
|
|||||||
|
|
||||||
void HUD::updatePositions()
|
void HUD::updatePositions()
|
||||||
{
|
{
|
||||||
int weapDx = 0, spellDx = 0;
|
int weapDx = 0, spellDx = 0, sneakDx = 0;
|
||||||
if (!mHealth->getVisible())
|
if (!mHealth->getVisible())
|
||||||
spellDx = weapDx = mWeapBoxBaseLeft - mHealthManaStaminaBaseLeft;
|
sneakDx = spellDx = weapDx = mWeapBoxBaseLeft - mHealthManaStaminaBaseLeft;
|
||||||
|
|
||||||
if (!mWeapBox->getVisible())
|
if (!mWeapBox->getVisible())
|
||||||
|
{
|
||||||
spellDx += mSpellBoxBaseLeft - mWeapBoxBaseLeft;
|
spellDx += mSpellBoxBaseLeft - mWeapBoxBaseLeft;
|
||||||
|
sneakDx = spellDx;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mSpellBox->getVisible())
|
||||||
|
sneakDx += mSneakBoxBaseLeft - mSpellBoxBaseLeft;
|
||||||
|
|
||||||
mWeaponVisible = mWeapBox->getVisible();
|
mWeaponVisible = mWeapBox->getVisible();
|
||||||
mSpellVisible = mSpellBox->getVisible();
|
mSpellVisible = mSpellBox->getVisible();
|
||||||
@ -531,6 +546,7 @@ namespace MWGui
|
|||||||
|
|
||||||
mWeapBox->setPosition(mWeapBoxBaseLeft - weapDx, mWeapBox->getTop());
|
mWeapBox->setPosition(mWeapBoxBaseLeft - weapDx, mWeapBox->getTop());
|
||||||
mSpellBox->setPosition(mSpellBoxBaseLeft - spellDx, mSpellBox->getTop());
|
mSpellBox->setPosition(mSpellBoxBaseLeft - spellDx, mSpellBox->getTop());
|
||||||
|
mSneakBox->setPosition(mSneakBoxBaseLeft - sneakDx, mSneakBox->getTop());
|
||||||
|
|
||||||
const MyGUI::IntSize& viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
const MyGUI::IntSize& viewSize = MyGUI::RenderManager::getInstance().getViewSize();
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ namespace MWGui
|
|||||||
void setHmsVisible(bool visible);
|
void setHmsVisible(bool visible);
|
||||||
void setWeapVisible(bool visible);
|
void setWeapVisible(bool visible);
|
||||||
void setSpellVisible(bool visible);
|
void setSpellVisible(bool visible);
|
||||||
|
void setSneakVisible(bool visible);
|
||||||
|
|
||||||
void setEffectVisible(bool visible);
|
void setEffectVisible(bool visible);
|
||||||
void setMinimapVisible(bool visible);
|
void setMinimapVisible(bool visible);
|
||||||
@ -51,7 +52,7 @@ namespace MWGui
|
|||||||
private:
|
private:
|
||||||
MyGUI::ProgressBar *mHealth, *mMagicka, *mStamina, *mEnemyHealth;
|
MyGUI::ProgressBar *mHealth, *mMagicka, *mStamina, *mEnemyHealth;
|
||||||
MyGUI::Widget* mHealthFrame;
|
MyGUI::Widget* mHealthFrame;
|
||||||
MyGUI::Widget *mWeapBox, *mSpellBox;
|
MyGUI::Widget *mWeapBox, *mSpellBox, *mSneakBox;
|
||||||
MyGUI::ImageBox *mWeapImage, *mSpellImage;
|
MyGUI::ImageBox *mWeapImage, *mSpellImage;
|
||||||
MyGUI::ProgressBar *mWeapStatus, *mSpellStatus;
|
MyGUI::ProgressBar *mWeapStatus, *mSpellStatus;
|
||||||
MyGUI::Widget *mEffectBox, *mMinimapBox;
|
MyGUI::Widget *mEffectBox, *mMinimapBox;
|
||||||
@ -70,7 +71,7 @@ namespace MWGui
|
|||||||
MyGUI::TextBox* mBatchCounter;
|
MyGUI::TextBox* mBatchCounter;
|
||||||
|
|
||||||
// bottom left elements
|
// bottom left elements
|
||||||
int mHealthManaStaminaBaseLeft, mWeapBoxBaseLeft, mSpellBoxBaseLeft;
|
int mHealthManaStaminaBaseLeft, mWeapBoxBaseLeft, mSpellBoxBaseLeft, mSneakBoxBaseLeft;
|
||||||
// bottom right elements
|
// bottom right elements
|
||||||
int mMinimapBoxBaseRight, mEffectBoxBaseRight;
|
int mMinimapBoxBaseRight, mEffectBoxBaseRight;
|
||||||
|
|
||||||
|
@ -834,6 +834,11 @@ namespace MWGui
|
|||||||
mHud->setEffectVisible (visible);
|
mHud->setEffectVisible (visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WindowManager::setSneakVisibility(bool visible)
|
||||||
|
{
|
||||||
|
mHud->setSneakVisible(visible);
|
||||||
|
}
|
||||||
|
|
||||||
void WindowManager::setDragDrop(bool dragDrop)
|
void WindowManager::setDragDrop(bool dragDrop)
|
||||||
{
|
{
|
||||||
mToolTips->setEnabled(!dragDrop);
|
mToolTips->setEnabled(!dragDrop);
|
||||||
|
@ -179,6 +179,7 @@ namespace MWGui
|
|||||||
virtual void setMinimapVisibility(bool visible);
|
virtual void setMinimapVisibility(bool visible);
|
||||||
virtual void setWeaponVisibility(bool visible);
|
virtual void setWeaponVisibility(bool visible);
|
||||||
virtual void setSpellVisibility(bool visible);
|
virtual void setSpellVisibility(bool visible);
|
||||||
|
virtual void setSneakVisibility(bool visible);
|
||||||
|
|
||||||
virtual void activateQuickKey (int index);
|
virtual void activateQuickKey (int index);
|
||||||
|
|
||||||
|
@ -123,6 +123,9 @@ namespace MWWorld
|
|||||||
MWWorld::Ptr ptr = getPlayer();
|
MWWorld::Ptr ptr = getPlayer();
|
||||||
|
|
||||||
MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Sneak, sneak);
|
MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Sneak, sneak);
|
||||||
|
|
||||||
|
// TODO show sneak indicator only when the player is not detected by any actor
|
||||||
|
MWBase::Environment::get().getWindowManager()->setSneakVisibility(sneak);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::yaw(float yaw)
|
void Player::yaw(float yaw)
|
||||||
|
@ -65,6 +65,17 @@
|
|||||||
</Widget>
|
</Widget>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
|
<!-- Sneak indicator box -->
|
||||||
|
<Widget type="Button" skin="" position="162 146 36 36" align="Left Bottom" name="SneakBox">
|
||||||
|
<Widget type="Widget" skin="HUD_Box" position="0 0 36 36">
|
||||||
|
<Property key="NeedMouse" value="false"/>
|
||||||
|
<Widget type="ImageBox" skin="ImageBox" position="2 2 32 32" align="Left Top" name="SneakImage">
|
||||||
|
<Property key="NeedMouse" value="false"/>
|
||||||
|
<Property key="ImageTexture" value="icons\k\stealth_sneak.dds"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
<!-- Spell effects box -->
|
<!-- Spell effects box -->
|
||||||
<Widget type="Widget" skin="HUD_Box_Transparent" position="199 168 20 20" align="Right Bottom" name="EffectBox">
|
<Widget type="Widget" skin="HUD_Box_Transparent" position="199 168 20 20" align="Right Bottom" name="EffectBox">
|
||||||
</Widget>
|
</Widget>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user