mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-13 12:14:18 +01:00
Fix some issues with customization drawing, add tooltips.
This commit is contained in:
parent
4abc509102
commit
e43a17a3c6
4 changed files with 44 additions and 30 deletions
|
|
@ -23,10 +23,12 @@ public partial class CustomizationDrawer
|
||||||
if (_withApply)
|
if (_withApply)
|
||||||
{
|
{
|
||||||
using var disabled = ImRaii.Disabled(_locked);
|
using var disabled = ImRaii.Disabled(_locked);
|
||||||
if (UiHelpers.DrawCheckbox("##applyGender", "Apply gender of this design.", ChangeApply.HasFlag(CustomizeFlag.Gender), out var applyGender, _locked))
|
if (UiHelpers.DrawCheckbox("##applyGender", "Apply gender of this design.", ChangeApply.HasFlag(CustomizeFlag.Gender),
|
||||||
|
out var applyGender, _locked))
|
||||||
ChangeApply = applyGender ? ChangeApply | CustomizeFlag.Gender : ChangeApply & ~CustomizeFlag.Gender;
|
ChangeApply = applyGender ? ChangeApply | CustomizeFlag.Gender : ChangeApply & ~CustomizeFlag.Gender;
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
if (UiHelpers.DrawCheckbox("##applyClan", "Apply clan of this design.", ChangeApply.HasFlag(CustomizeFlag.Clan), out var applyClan, _locked))
|
if (UiHelpers.DrawCheckbox("##applyClan", "Apply clan of this design.", ChangeApply.HasFlag(CustomizeFlag.Clan), out var applyClan,
|
||||||
|
_locked))
|
||||||
ChangeApply = applyClan ? ChangeApply | CustomizeFlag.Clan : ChangeApply & ~CustomizeFlag.Clan;
|
ChangeApply = applyClan ? ChangeApply | CustomizeFlag.Clan : ChangeApply & ~CustomizeFlag.Clan;
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +39,8 @@ public partial class CustomizationDrawer
|
||||||
|
|
||||||
private void DrawGenderSelector()
|
private void DrawGenderSelector()
|
||||||
{
|
{
|
||||||
using var disabled = ImRaii.Disabled(_locked || _lockedRedraw);
|
using (var disabled = ImRaii.Disabled(_locked || _lockedRedraw))
|
||||||
|
{
|
||||||
var icon = _customize.Gender switch
|
var icon = _customize.Gender switch
|
||||||
{
|
{
|
||||||
Gender.Male when _customize.Race is Race.Hrothgar => FontAwesomeIcon.MarsDouble,
|
Gender.Male when _customize.Race is Race.Hrothgar => FontAwesomeIcon.MarsDouble,
|
||||||
|
|
@ -46,21 +49,24 @@ public partial class CustomizationDrawer
|
||||||
_ => FontAwesomeIcon.Question,
|
_ => FontAwesomeIcon.Question,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!ImGuiUtil.DrawDisabledButton(icon.ToIconString(), _framedIconSize, string.Empty,
|
if (ImGuiUtil.DrawDisabledButton(icon.ToIconString(), _framedIconSize, string.Empty,
|
||||||
icon is not FontAwesomeIcon.Mars and not FontAwesomeIcon.Venus, true))
|
icon is not FontAwesomeIcon.Mars and not FontAwesomeIcon.Venus, true))
|
||||||
return;
|
|
||||||
|
|
||||||
Changed |= _service.ChangeGender(ref _customize, icon is FontAwesomeIcon.Mars ? Gender.Female : Gender.Male);
|
Changed |= _service.ChangeGender(ref _customize, icon is FontAwesomeIcon.Mars ? Gender.Female : Gender.Male);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_lockedRedraw && ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||||
|
ImGui.SetTooltip(
|
||||||
|
"The gender can not be changed as this requires a redraw of the character, which is not supported for this actor.");
|
||||||
|
}
|
||||||
|
|
||||||
private void DrawRaceCombo()
|
private void DrawRaceCombo()
|
||||||
{
|
{
|
||||||
using var disabled = ImRaii.Disabled(_locked || _lockedRedraw);
|
using (var disabled = ImRaii.Disabled(_locked || _lockedRedraw))
|
||||||
|
{
|
||||||
ImGui.SetNextItemWidth(_raceSelectorWidth);
|
ImGui.SetNextItemWidth(_raceSelectorWidth);
|
||||||
using var combo = ImRaii.Combo("##subRaceCombo", _service.ClanName(_customize.Clan, _customize.Gender));
|
using (var combo = ImRaii.Combo("##subRaceCombo", _service.ClanName(_customize.Clan, _customize.Gender)))
|
||||||
if (!combo)
|
{
|
||||||
return;
|
if (combo)
|
||||||
|
|
||||||
foreach (var subRace in Enum.GetValues<SubRace>().Skip(1)) // Skip Unknown
|
foreach (var subRace in Enum.GetValues<SubRace>().Skip(1)) // Skip Unknown
|
||||||
{
|
{
|
||||||
if (ImGui.Selectable(_service.ClanName(subRace, _customize.Gender), subRace == _customize.Clan))
|
if (ImGui.Selectable(_service.ClanName(subRace, _customize.Gender), subRace == _customize.Clan))
|
||||||
|
|
@ -68,3 +74,8 @@ public partial class CustomizationDrawer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_lockedRedraw && ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||||
|
ImGui.SetTooltip("The race can not be changed as this requires a redraw of the character, which is not supported for this actor.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
using System;
|
using System.Numerics;
|
||||||
using System.Numerics;
|
|
||||||
using Glamourer.Customization;
|
using Glamourer.Customization;
|
||||||
using ImGuiNET;
|
using ImGuiNET;
|
||||||
using OtterGui;
|
using OtterGui;
|
||||||
using OtterGui.Raii;
|
using OtterGui.Raii;
|
||||||
using Penumbra.GameData.Enums;
|
|
||||||
|
|
||||||
namespace Glamourer.Gui.Customization;
|
namespace Glamourer.Gui.Customization;
|
||||||
|
|
||||||
|
|
@ -41,6 +39,9 @@ public partial class CustomizationDrawer
|
||||||
using (var group = ImRaii.Group())
|
using (var group = ImRaii.Group())
|
||||||
{
|
{
|
||||||
DataInputInt(current, npc);
|
DataInputInt(current, npc);
|
||||||
|
if (_lockedRedraw && ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||||
|
ImGui.SetTooltip(
|
||||||
|
"The face can not be changed as this requires a redraw of the character, which is not supported for this actor.");
|
||||||
|
|
||||||
if (_withApply)
|
if (_withApply)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ public partial class CustomizationDrawer
|
||||||
if (_currentIndex is CustomizeIndex.Face && _set.Race is Race.Hrothgar && value is > 4 and < 9)
|
if (_currentIndex is CustomizeIndex.Face && _set.Race is Race.Hrothgar && value is > 4 and < 9)
|
||||||
value -= 4;
|
value -= 4;
|
||||||
|
|
||||||
|
using var group = ImRaii.Group();
|
||||||
using var disabled = ImRaii.Disabled(_locked || _currentIndex is CustomizeIndex.Face && _lockedRedraw);
|
using var disabled = ImRaii.Disabled(_locked || _currentIndex is CustomizeIndex.Face && _lockedRedraw);
|
||||||
ImGui.SetNextItemWidth(_inputIntSizeNoButtons);
|
ImGui.SetNextItemWidth(_inputIntSizeNoButtons);
|
||||||
if (ImGui.InputInt("##text", ref value, 0, 0))
|
if (ImGui.InputInt("##text", ref value, 0, 0))
|
||||||
|
|
@ -134,6 +135,7 @@ public partial class CustomizationDrawer
|
||||||
: Math.Clamp(tmp - 1, 0, _currentCount - 1));
|
: Math.Clamp(tmp - 1, 0, _currentCount - 1));
|
||||||
UpdateValue(newValue);
|
UpdateValue(newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGuiUtil.HoverTooltip($"Input Range: [1, {_currentCount}]\n"
|
ImGuiUtil.HoverTooltip($"Input Range: [1, {_currentCount}]\n"
|
||||||
+ "Hold Control to force updates with invalid/unknown options at your own risk.");
|
+ "Hold Control to force updates with invalid/unknown options at your own risk.");
|
||||||
}
|
}
|
||||||
|
|
@ -145,11 +147,12 @@ public partial class CustomizationDrawer
|
||||||
var tmp = _currentByte != CustomizeValue.Zero;
|
var tmp = _currentByte != CustomizeValue.Zero;
|
||||||
if (_withApply)
|
if (_withApply)
|
||||||
{
|
{
|
||||||
switch (UiHelpers.DrawMetaToggle(_currentIndex.ToDefaultName(), string.Empty, tmp, _currentApply, out var newValue,
|
switch (UiHelpers.DrawMetaToggle(_currentIndex.ToDefaultName(),
|
||||||
|
$"This attribute will be {(_currentApply ? tmp ? "enabled." : "disabled." : "kept as is.")}", tmp, _currentApply,
|
||||||
|
out var newValue,
|
||||||
out var newApply, _locked))
|
out var newApply, _locked))
|
||||||
{
|
{
|
||||||
case DataChange.Item:
|
case DataChange.Item:
|
||||||
ChangeApply = newApply ? ChangeApply | _currentFlag : ChangeApply & ~_currentFlag;
|
|
||||||
_customize.Set(idx, newValue ? CustomizeValue.Max : CustomizeValue.Zero);
|
_customize.Set(idx, newValue ? CustomizeValue.Max : CustomizeValue.Zero);
|
||||||
Changed |= _currentFlag;
|
Changed |= _currentFlag;
|
||||||
break;
|
break;
|
||||||
|
|
@ -157,6 +160,7 @@ public partial class CustomizationDrawer
|
||||||
ChangeApply = newApply ? ChangeApply | _currentFlag : ChangeApply & ~_currentFlag;
|
ChangeApply = newApply ? ChangeApply | _currentFlag : ChangeApply & ~_currentFlag;
|
||||||
break;
|
break;
|
||||||
case DataChange.Item | DataChange.ApplyItem:
|
case DataChange.Item | DataChange.ApplyItem:
|
||||||
|
ChangeApply = newApply ? ChangeApply | _currentFlag : ChangeApply & ~_currentFlag;
|
||||||
_customize.Set(idx, newValue ? CustomizeValue.Max : CustomizeValue.Zero);
|
_customize.Set(idx, newValue ? CustomizeValue.Max : CustomizeValue.Zero);
|
||||||
Changed |= _currentFlag;
|
Changed |= _currentFlag;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@ public partial class CustomizationDrawer : IDisposable
|
||||||
private CustomizeFlag _initialApply;
|
private CustomizeFlag _initialApply;
|
||||||
private bool _locked = false;
|
private bool _locked = false;
|
||||||
private bool _lockedRedraw = false;
|
private bool _lockedRedraw = false;
|
||||||
private Vector2 _defaultSpacing;
|
|
||||||
private Vector2 _spacing;
|
private Vector2 _spacing;
|
||||||
private Vector2 _iconSize;
|
private Vector2 _iconSize;
|
||||||
private Vector2 _framedIconSize;
|
private Vector2 _framedIconSize;
|
||||||
|
|
@ -157,7 +156,7 @@ public partial class CustomizationDrawer : IDisposable
|
||||||
Functions.IteratePairwise(_set.Order[CharaMakeParams.MenuType.ColorPicker], DrawColorPicker, ImGui.SameLine);
|
Functions.IteratePairwise(_set.Order[CharaMakeParams.MenuType.ColorPicker], DrawColorPicker, ImGui.SameLine);
|
||||||
|
|
||||||
Functions.IteratePairwise(_set.Order[CharaMakeParams.MenuType.Checkmark], DrawCheckbox,
|
Functions.IteratePairwise(_set.Order[CharaMakeParams.MenuType.Checkmark], DrawCheckbox,
|
||||||
() => ImGui.SameLine(_comboSelectorSize - _framedIconSize.X + _spacing.X));
|
() => ImGui.SameLine(_comboSelectorSize - _framedIconSize.X + ImGui.GetStyle().WindowPadding.X));
|
||||||
return Changed != 0 || ChangeApply != _initialApply;
|
return Changed != 0 || ChangeApply != _initialApply;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -197,7 +196,6 @@ public partial class CustomizationDrawer : IDisposable
|
||||||
|
|
||||||
private void UpdateSizes()
|
private void UpdateSizes()
|
||||||
{
|
{
|
||||||
_defaultSpacing = ImGui.GetStyle().ItemSpacing;
|
|
||||||
_spacing = ImGui.GetStyle().ItemSpacing with { X = ImGui.GetStyle().ItemInnerSpacing.X };
|
_spacing = ImGui.GetStyle().ItemSpacing with { X = ImGui.GetStyle().ItemInnerSpacing.X };
|
||||||
_iconSize = new Vector2(ImGui.GetTextLineHeight() * 2 + ImGui.GetStyle().ItemSpacing.Y + 2 * ImGui.GetStyle().FramePadding.Y);
|
_iconSize = new Vector2(ImGui.GetTextLineHeight() * 2 + ImGui.GetStyle().ItemSpacing.Y + 2 * ImGui.GetStyle().FramePadding.Y);
|
||||||
_framedIconSize = _iconSize + 2 * ImGui.GetStyle().FramePadding;
|
_framedIconSize = _iconSize + 2 * ImGui.GetStyle().FramePadding;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue