mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-28 21:07:59 +03:00
Merge branch 'topicHighlighting' into 'master'
Topic Highlighting Mouse Over Fix See merge request OpenMW/openmw!4113
This commit is contained in:
commit
cb009db4bb
5 changed files with 105 additions and 13 deletions
|
@ -794,18 +794,32 @@ namespace MWGui
|
||||||
if (!Settings::gui().mColorTopicEnable)
|
if (!Settings::gui().mColorTopicEnable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const MyGUI::Colour& specialColour = Settings::gui().mColorTopicSpecific;
|
|
||||||
const MyGUI::Colour& oldColour = Settings::gui().mColorTopicExhausted;
|
|
||||||
|
|
||||||
for (const std::string& keyword : mKeywords)
|
for (const std::string& keyword : mKeywords)
|
||||||
{
|
{
|
||||||
int flag = MWBase::Environment::get().getDialogueManager()->getTopicFlag(ESM::RefId::stringRefId(keyword));
|
int flag = MWBase::Environment::get().getDialogueManager()->getTopicFlag(ESM::RefId::stringRefId(keyword));
|
||||||
MyGUI::Button* button = mTopicsList->getItemWidget(keyword);
|
MyGUI::Button* button = mTopicsList->getItemWidget(keyword);
|
||||||
|
const auto oldCaption = button->getCaption();
|
||||||
|
const MyGUI::IntSize oldSize = button->getSize();
|
||||||
|
|
||||||
|
bool changed = false;
|
||||||
if (flag & MWBase::DialogueManager::TopicType::Specific)
|
if (flag & MWBase::DialogueManager::TopicType::Specific)
|
||||||
button->getSubWidgetText()->setTextColour(specialColour);
|
{
|
||||||
|
button->changeWidgetSkin("MW_ListLine_Specific");
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
else if (flag & MWBase::DialogueManager::TopicType::Exhausted)
|
else if (flag & MWBase::DialogueManager::TopicType::Exhausted)
|
||||||
button->getSubWidgetText()->setTextColour(oldColour);
|
{
|
||||||
|
button->changeWidgetSkin("MW_ListLine_Exhausted");
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changed)
|
||||||
|
{
|
||||||
|
button->setCaption(oldCaption);
|
||||||
|
button->getSubWidgetText()->setWordWrap(true);
|
||||||
|
button->getSubWidgetText()->setTextAlign(MyGUI::Align::Left);
|
||||||
|
button->setSize(oldSize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,11 @@ namespace Settings
|
||||||
SettingValue<bool> mKeyboardNavigation{ mIndex, "GUI", "keyboard navigation" };
|
SettingValue<bool> mKeyboardNavigation{ mIndex, "GUI", "keyboard navigation" };
|
||||||
SettingValue<bool> mColorTopicEnable{ mIndex, "GUI", "color topic enable" };
|
SettingValue<bool> mColorTopicEnable{ mIndex, "GUI", "color topic enable" };
|
||||||
SettingValue<MyGUI::Colour> mColorTopicSpecific{ mIndex, "GUI", "color topic specific" };
|
SettingValue<MyGUI::Colour> mColorTopicSpecific{ mIndex, "GUI", "color topic specific" };
|
||||||
|
SettingValue<MyGUI::Colour> mColorTopicSpecificOver{ mIndex, "GUI", "color topic specific over" };
|
||||||
|
SettingValue<MyGUI::Colour> mColorTopicSpecificPressed{ mIndex, "GUI", "color topic specific pressed" };
|
||||||
SettingValue<MyGUI::Colour> mColorTopicExhausted{ mIndex, "GUI", "color topic exhausted" };
|
SettingValue<MyGUI::Colour> mColorTopicExhausted{ mIndex, "GUI", "color topic exhausted" };
|
||||||
|
SettingValue<MyGUI::Colour> mColorTopicExhaustedOver{ mIndex, "GUI", "color topic exhausted over" };
|
||||||
|
SettingValue<MyGUI::Colour> mColorTopicExhaustedPressed{ mIndex, "GUI", "color topic exhausted pressed" };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,8 +157,8 @@ color topic specific
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
:Type: RGBA floating point
|
:Type: RGBA floating point
|
||||||
:Range: 0.0 to 1.0
|
:Range: 0.0 to 1.0 for each channel
|
||||||
:Default: empty
|
:Default: 0.45 0.5 0.8 1 (blue)
|
||||||
|
|
||||||
This setting overrides the colour of dialogue topics that have a response unique to the actors speaking.
|
This setting overrides the colour of dialogue topics that have a response unique to the actors speaking.
|
||||||
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
|
@ -166,15 +166,67 @@ The alpha value is currently ignored.
|
||||||
|
|
||||||
A topic response is considered unique if its Actor filter field contains the speaking actor's object ID and hasn't yet been read.
|
A topic response is considered unique if its Actor filter field contains the speaking actor's object ID and hasn't yet been read.
|
||||||
|
|
||||||
|
color topic specific over
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
:Type: RGBA floating point
|
||||||
|
:Range: 0.0 to 1.0 for each channel
|
||||||
|
:Default: 0.6 0.6 0.85 1 (blue)
|
||||||
|
|
||||||
|
This setting provides an "over" colour to dialogue topics that meet the color topic specific criteria.
|
||||||
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
|
The alpha value is currently ignored.
|
||||||
|
|
||||||
|
A dialogue topic is considered "over" if it is the active GUI element through keyboard or mouse events.
|
||||||
|
|
||||||
|
color topic specific pressed
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
:Type: RGBA floating point
|
||||||
|
:Range: 0.0 to 1.0 for each channel
|
||||||
|
:Default: 0.3 0.35 0.75 1 (blue)
|
||||||
|
|
||||||
|
This setting provides an "pressed" colour to dialogue topics that meet the color topic specific criteria.
|
||||||
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
|
The alpha value is currently ignored.
|
||||||
|
|
||||||
|
A dialogue topic is considered "pressed" if it is the active GUI element and it receives a sustained keyboard or mouse event.
|
||||||
|
|
||||||
color topic exhausted
|
color topic exhausted
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
:Type: RGBA floating point
|
:Type: RGBA floating point
|
||||||
:Range: 0.0 to 1.0
|
:Range: 0.0 to 1.0 for each channel
|
||||||
:Default: empty
|
:Default: 0.3 0.3 0.3 1 (grey)
|
||||||
|
|
||||||
This setting overrides the colour of dialogue topics which have been "exhausted" by the player.
|
This setting overrides the colour of dialogue topics which have been "exhausted" by the player.
|
||||||
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
The alpha value is currently ignored.
|
The alpha value is currently ignored.
|
||||||
|
|
||||||
A topic is considered "exhausted" if the response the player is about to see has already been seen.
|
A topic is considered "exhausted" if the response the player is about to see has already been seen.
|
||||||
|
|
||||||
|
color topic exhausted over
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
:Type: RGBA floating point
|
||||||
|
:Range: 0.0 to 1.0 for each channel
|
||||||
|
:Default: 0.55 0.55 0.55 1 (grey)
|
||||||
|
|
||||||
|
This setting provides an "over" colour to dialogue topics that meet the color topic exhausted criteria.
|
||||||
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
|
The alpha value is currently ignored.
|
||||||
|
|
||||||
|
A dialogue topic is considered "over" if it is the active GUI element through keyboard or mouse events.
|
||||||
|
|
||||||
|
color topic exhausted pressed
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
:Type: RGBA floating point
|
||||||
|
:Range: 0.0 to 1.0 for each channel
|
||||||
|
:Default: 0.45 0.45 0.45 1 (grey)
|
||||||
|
|
||||||
|
This setting provides a "pressed" colour to dialogue topics that meet the color topic exhausted criteria.
|
||||||
|
The value is composed of four floating point values representing the red, green, blue and alpha channels.
|
||||||
|
The alpha value is currently ignored.
|
||||||
|
|
||||||
|
A dialogue topic is considered "pressed" if it is the active GUI element and it receives a sustained keyboard or mouse event.
|
||||||
|
|
|
@ -124,6 +124,28 @@
|
||||||
</BasisSkin>
|
</BasisSkin>
|
||||||
</Resource>
|
</Resource>
|
||||||
|
|
||||||
|
<Resource type="ResourceSkin" name="MW_ListLine_Specific" size="5 5">
|
||||||
|
<Property key="FontName" value="Default"/>
|
||||||
|
<Property key="TextAlign" value="Left VCenter"/>
|
||||||
|
|
||||||
|
<BasisSkin type="SimpleText" offset="2 0 1 5" align="Stretch">
|
||||||
|
<State name="normal" colour="#{setting=GUI,color topic specific}"/>
|
||||||
|
<State name="highlighted" colour="#{setting=GUI,color topic specific over}"/>
|
||||||
|
<State name="pushed" colour="#{setting=GUI,color topic specific pressed}"/>
|
||||||
|
</BasisSkin>
|
||||||
|
</Resource>
|
||||||
|
|
||||||
|
<Resource type="ResourceSkin" name="MW_ListLine_Exhausted" size="5 5">
|
||||||
|
<Property key="FontName" value="Default"/>
|
||||||
|
<Property key="TextAlign" value="Left VCenter"/>
|
||||||
|
|
||||||
|
<BasisSkin type="SimpleText" offset="2 0 1 5" align="Stretch">
|
||||||
|
<State name="normal" colour="#{setting=GUI,color topic exhausted}"/>
|
||||||
|
<State name="highlighted" colour="#{setting=GUI,color topic exhausted over}"/>
|
||||||
|
<State name="pushed" colour="#{setting=GUI,color topic exhausted pressed}"/>
|
||||||
|
</BasisSkin>
|
||||||
|
</Resource>
|
||||||
|
|
||||||
<Resource type="ResourceLayout" name="MW_List" size="516 516" align="Left Top">
|
<Resource type="ResourceLayout" name="MW_List" size="516 516" align="Left Top">
|
||||||
<Widget type="Widget" position="0 0 516 516" name="Root">
|
<Widget type="Widget" position="0 0 516 516" name="Root">
|
||||||
<Property key="NeedKey" value="true"/>
|
<Property key="NeedKey" value="true"/>
|
||||||
|
|
|
@ -218,14 +218,14 @@ keyboard navigation = true
|
||||||
color topic enable = false
|
color topic enable = false
|
||||||
|
|
||||||
# The color of dialogue topic keywords that gives unique actor responses
|
# The color of dialogue topic keywords that gives unique actor responses
|
||||||
# Format R G B A or empty for no special formatting
|
|
||||||
# Default to blue
|
|
||||||
color topic specific = 0.45 0.5 0.8 1
|
color topic specific = 0.45 0.5 0.8 1
|
||||||
|
color topic specific over = 0.6 0.6 0.85 1
|
||||||
|
color topic specific pressed = 0.3 0.35 0.75 1
|
||||||
|
|
||||||
# The color of dialogue topic keywords that gives already read responses
|
# The color of dialogue topic keywords that gives already read responses
|
||||||
# Format R G B A or empty for no special formatting
|
|
||||||
# Default to grey
|
|
||||||
color topic exhausted = 0.3 0.3 0.3 1
|
color topic exhausted = 0.3 0.3 0.3 1
|
||||||
|
color topic exhausted over = 0.55 0.55 0.55 1
|
||||||
|
color topic exhausted pressed = 0.45 0.45 0.45 1
|
||||||
|
|
||||||
[HUD]
|
[HUD]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue