From 3754f5713224024aa778456d3ecc7d39b5b483a2 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Mon, 29 Jul 2024 09:27:00 +0200 Subject: [PATCH] Reinstate spacebar heating --- .../AdvancedWindow/ModEditWindow.Materials.cs | 58 +++++++++++++++++++ Penumbra/UI/AdvancedWindow/ModEditWindow.cs | 1 + 2 files changed, 59 insertions(+) diff --git a/Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.cs b/Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.cs index c3483c35..5a8fb13a 100644 --- a/Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.cs +++ b/Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.cs @@ -1,4 +1,5 @@ using Dalamud.Interface; +using Dalamud.Interface.Utility; using ImGuiNET; using OtterGui; using OtterGui.Raii; @@ -188,4 +189,61 @@ public partial class ModEditWindow if (t) Widget.DrawHexViewer(file.AdditionalData); } + + private void DrawMaterialReassignmentTab() + { + if (_editor.Files.Mdl.Count == 0) + return; + + using var tab = ImRaii.TabItem("Material Reassignment"); + if (!tab) + return; + + ImGui.NewLine(); + MaterialSuffix.Draw(_editor, ImGuiHelpers.ScaledVector2(175, 0)); + + ImGui.NewLine(); + using var child = ImRaii.Child("##mdlFiles", -Vector2.One, true); + if (!child) + return; + + using var table = ImRaii.Table("##files", 4, ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit, -Vector2.One); + if (!table) + return; + + var iconSize = ImGui.GetFrameHeight() * Vector2.One; + foreach (var (info, idx) in _editor.MdlMaterialEditor.ModelFiles.WithIndex()) + { + using var id = ImRaii.PushId(idx); + ImGui.TableNextColumn(); + if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Save.ToIconString(), iconSize, + "Save the changed mdl file.\nUse at own risk!", !info.Changed, true)) + info.Save(_editor.Compactor); + + ImGui.TableNextColumn(); + if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Recycle.ToIconString(), iconSize, + "Restore current changes to default.", !info.Changed, true)) + info.Restore(); + + ImGui.TableNextColumn(); + ImGui.TextUnformatted(info.Path.FullName[(Mod!.ModPath.FullName.Length + 1)..]); + ImGui.TableNextColumn(); + ImGui.SetNextItemWidth(400 * UiHelpers.Scale); + var tmp = info.CurrentMaterials[0]; + if (ImGui.InputText("##0", ref tmp, 64)) + info.SetMaterial(tmp, 0); + + for (var i = 1; i < info.Count; ++i) + { + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.TableNextColumn(); + ImGui.SetNextItemWidth(400 * UiHelpers.Scale); + tmp = info.CurrentMaterials[i]; + if (ImGui.InputText($"##{i}", ref tmp, 64)) + info.SetMaterial(tmp, i); + } + } + } } diff --git a/Penumbra/UI/AdvancedWindow/ModEditWindow.cs b/Penumbra/UI/AdvancedWindow/ModEditWindow.cs index 79a8ae34..e915a879 100644 --- a/Penumbra/UI/AdvancedWindow/ModEditWindow.cs +++ b/Penumbra/UI/AdvancedWindow/ModEditWindow.cs @@ -179,6 +179,7 @@ public partial class ModEditWindow : Window, IDisposable, IUiService DrawSwapTab(); _modMergeTab.Draw(); DrawDuplicatesTab(); + DrawMaterialReassignmentTab(); DrawQuickImportTab(); _modelTab.Draw(); _materialTab.Draw();