public bool RevertMod(EqpManipulation m) { #if USE_EQP if (Manipulations.Remove(m)) { var def = ExpandedEqpFile.GetDefault(m.SetId); var manip = new EqpManipulation(def, m.Slot, m.SetId); return(manip.Apply(File !)); } #endif return(false); }
public static void DrawNew(Mod.Editor editor, Vector2 iconSize) { ImGui.TableNextColumn(); CopyToClipboardButton("Copy all current EQP manipulations to clipboard.", iconSize, editor.Meta.Eqp.Select(m => (MetaManipulation) m)); ImGui.TableNextColumn(); var canAdd = editor.Meta.CanAdd(_new); var tt = canAdd ? "Stage this edit." : "This entry is already edited."; var defaultEntry = ExpandedEqpFile.GetDefault(_new.SetId); if (ImGuiUtil.DrawDisabledButton(FontAwesomeIcon.Plus.ToIconString(), iconSize, tt, !canAdd, true)) { editor.Meta.Add(_new with { Entry = defaultEntry }); } // Identifier ImGui.TableNextColumn(); if (IdInput("##eqpId", IdWidth, _new.SetId, out var setId, ExpandedEqpGmpBase.Count - 1)) { _new = _new with { SetId = setId }; } ImGuiUtil.HoverTooltip("Model Set ID"); ImGui.TableNextColumn(); if (EqpEquipSlotCombo("##eqpSlot", _new.Slot, out var slot)) { _new = _new with { Slot = slot }; } ImGuiUtil.HoverTooltip("Equip Slot"); // Values ImGui.TableNextColumn(); using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, new Vector2(3 * ImGuiHelpers.GlobalScale, ImGui.GetStyle().ItemSpacing.Y)); foreach (var flag in Eqp.EqpAttributes[_new.Slot]) { var value = defaultEntry.HasFlag(flag); Checkmark("##eqp", flag.ToLocalName(), value, value, out _); ImGui.SameLine(); } ImGui.NewLine(); }
// Deserialize and check Eqp Entries and add them to the list if they are non-default. private void DeserializeEqpEntry(MetaFileInfo metaFileInfo, byte[]?data) { // Eqp can only be valid for equipment. if (data == null || !metaFileInfo.EquipSlot.IsEquipment()) { return; } var value = Eqp.FromSlotAndBytes(metaFileInfo.EquipSlot, data); var def = new EqpManipulation(ExpandedEqpFile.GetDefault(metaFileInfo.PrimaryId), metaFileInfo.EquipSlot, metaFileInfo.PrimaryId); var manip = new EqpManipulation(value, metaFileInfo.EquipSlot, metaFileInfo.PrimaryId); if (def.Entry != manip.Entry) { MetaManipulations.Add(manip); } }
public static void Draw(EqpManipulation meta, Mod.Editor editor, Vector2 iconSize) { DrawMetaButtons(meta, editor, iconSize); // Identifier ImGui.TableNextColumn(); ImGui.SetCursorPosX(ImGui.GetCursorPosX() + ImGui.GetStyle().FramePadding.X); ImGui.TextUnformatted(meta.SetId.ToString()); ImGuiUtil.HoverTooltip("Model Set ID"); var defaultEntry = ExpandedEqpFile.GetDefault(meta.SetId); ImGui.TableNextColumn(); ImGui.SetCursorPosX(ImGui.GetCursorPosX() + ImGui.GetStyle().FramePadding.X); ImGui.TextUnformatted(meta.Slot.ToName()); ImGuiUtil.HoverTooltip("Equip Slot"); // Values ImGui.TableNextColumn(); using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, new Vector2(3 * ImGuiHelpers.GlobalScale, ImGui.GetStyle().ItemSpacing.Y)); var idx = 0; foreach (var flag in Eqp.EqpAttributes[meta.Slot]) { using var id = ImRaii.PushId(idx++); var defaultValue = defaultEntry.HasFlag(flag); var currentValue = meta.Entry.HasFlag(flag); if (Checkmark("##eqp", flag.ToLocalName(), currentValue, defaultValue, out var value)) { editor.Meta.Change(meta with { Entry = value ? meta.Entry | flag : meta.Entry & ~flag }); } ImGui.SameLine(); } ImGui.NewLine(); }