Skip to content

Commit

Permalink
Textures: Un-merge save buttons, make ignore unselectable
Browse files Browse the repository at this point in the history
  • Loading branch information
Exter-N committed Aug 25, 2023
1 parent 87c5164 commit 9fa3a89
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 22 deletions.
8 changes: 3 additions & 5 deletions Penumbra/Import/Textures/CombinedTexture.Manipulation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ public partial class CombinedTexture
{
private enum CombineOp
{
LeftMultiply = -4,
LeftCopy = -3,
RightCopy = -2,
Invalid = -1,
Over = 0,
Under = 1,
LeftMultiply = 2,
RightMultiply = 3,
CopyChannels = 4,
}
Expand All @@ -47,17 +47,15 @@ private enum Channels
{
"Overlay over Input",
"Input over Overlay",
"Ignore Overlay",
"Replace Input",
"Copy Channels",
};

private static readonly IReadOnlyList<string> CombineOpTooltips = new string[]
{
"Standard composition.\nApply the overlay over the input.",
"Standard composition, reversed.\nApply the input over the overlay.",
"Use only the input, and ignore the overlay.",
"Completely replace the input with the overlay.",
"Standard composition, reversed.\nApply the input over the overlay ; can be used to fix some wrong imports.",
"Completely replace the input with the overlay.\nCan be used to select the destination file as input and the source file as overlay.",
"Replace some input channels with those from the overlay.\nUseful for Multi maps.",
};

Expand Down
43 changes: 26 additions & 17 deletions Penumbra/UI/AdvancedWindow/ModEditWindow.Textures.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,23 +127,14 @@ private void DrawOutputChild(Vector2 size, Vector2 imageSize)
}

ImGui.SameLine();
if (ImGui.Button("Save as TEX, DDS or PNG", buttonSize2))
{
var fileName = Path.GetFileNameWithoutExtension(_left.Path.Length > 0 ? _left.Path : _right.Path);
_fileDialog.OpenSavePicker("Save Texture as TEX, DDS or PNG...", "Textures{.png,.dds,.tex},.tex,.dds,.png", fileName, ".tex",
(a, b) =>
{
if (a)
{
_center.SaveAs(null, _textures, b, (CombinedTexture.TextureSaveType)_currentSaveAs, _addMipMaps);
if (b == _left.Path)
AddReloadTask(_left.Path, false);
else if (b == _right.Path)
AddReloadTask(_right.Path, true);
}
}, _mod!.ModPath.FullName, _forceTextureStartPath);
_forceTextureStartPath = false;
}
if (ImGui.Button("Save as TEX", buttonSize2))
OpenSaveAsDialog(".tex");

if (ImGui.Button("Export as PNG", buttonSize2))
OpenSaveAsDialog(".png");
ImGui.SameLine();
if (ImGui.Button("Export as DDS", buttonSize2))
OpenSaveAsDialog(".dds");

ImGui.NewLine();

Expand Down Expand Up @@ -206,6 +197,24 @@ private void DrawOutputChild(Vector2 size, Vector2 imageSize)
_center.Draw(_textures, imageSize);
}

private void OpenSaveAsDialog(string defaultExtension)
{
var fileName = Path.GetFileNameWithoutExtension(_left.Path.Length > 0 ? _left.Path : _right.Path);
_fileDialog.OpenSavePicker("Save Texture as TEX, DDS or PNG...", "Textures{.png,.dds,.tex},.tex,.dds,.png", fileName, defaultExtension,
(a, b) =>
{
if (a)
{
_center.SaveAs(null, _textures, b, (CombinedTexture.TextureSaveType)_currentSaveAs, _addMipMaps);
if (b == _left.Path)
AddReloadTask(_left.Path, false);
else if (b == _right.Path)
AddReloadTask(_right.Path, true);
}
}, _mod!.ModPath.FullName, _forceTextureStartPath);
_forceTextureStartPath = false;
}

private void AddReloadTask(string path, bool right)
{
_center.SaveTask.ContinueWith(t =>
Expand Down

0 comments on commit 9fa3a89

Please sign in to comment.