Example #1
0
        private void SetTextRenderMode(AddonNamePlate *thisPtr, NumberArrayData *numbers)
        {
            var disableFixedFontResolution = numbers->IntArray[3];

            if (disableFixedFontResolution != thisPtr->BakePlate.DisableFixedFontResolution)
            {
                if (disableFixedFontResolution != 0)
                {
                    thisPtr->BakePlate.DisableFixedFontResolution = 1;
                    for (int i = 0; i < 50; i++)
                    {
                        var npObj = thisPtr->NamePlateObjectArray[i];
                        atkTextNodeToggleFixedFontResolutionFunc(npObj.NameText, 0);
                        atkTextNodeToggleFontCacheFunc(npObj.NameText, 0);
                    }
                }
                else
                {
                    thisPtr->BakePlate.DisableFixedFontResolution = 0;
                    for (int i = 0; i < 50; i++)
                    {
                        var npObj = thisPtr->NamePlateObjectArray[i];
                        atkTextNodeToggleFixedFontResolutionFunc(npObj.NameText, 1);
                        atkTextNodeToggleFontCacheFunc(npObj.NameText, 1);
                    }
                    numbers->SetValue(1, 1); // force bake
                }
            }
        }
    public static void DrawArrayDataTable(NumberArrayData *array)
    {
        if (ImGui.BeginTable("numbersTable", 6, ImGuiTableFlags.Borders | ImGuiTableFlags.RowBg))
        {
            ImGui.TableSetupColumn("#", ImGuiTableColumnFlags.WidthFixed, 50);
            ImGui.TableSetupColumn("Integer");
            ImGui.TableSetupColumn("Shorts");
            ImGui.TableSetupColumn("Bytes");
            ImGui.TableSetupColumn("Hex");
            ImGui.TableSetupColumn("Float");
            ImGui.TableHeadersRow();

            for (var i = 0; i < array->AtkArrayData.Size; i++)
            {
                ImGui.TableNextColumn();
                DebugManager.ClickToCopyText($"{i.ToString().PadLeft(array->AtkArrayData.Size.ToString().Length, '0')}", $"{(ulong)&array->IntArray[i]:X}");
                ImGui.TableNextColumn();
                ImGui.Text($"{array->IntArray[i]}");
                ImGui.TableNextColumn();

                {
                    var a  = (short *)&array->IntArray[i];
                    var w  = ImGui.GetContentRegionAvail().X;
                    var bX = ImGui.GetCursorPosX();
                    for (var bi = 0; bi < 2; bi++)
                    {
                        ImGui.SetCursorPosX(bX + (w / 2) * bi);
                        ImGui.Text(ImGui.GetIO().KeyShift ? $"{a[bi]:X4}" : $"{a[bi]}");
                        if (bi != 1)
                        {
                            ImGui.SameLine();
                        }
                    }
                }


                ImGui.TableNextColumn();

                {
                    var a  = (byte *)&array->IntArray[i];
                    var w  = ImGui.GetContentRegionAvail().X;
                    var bX = ImGui.GetCursorPosX();
                    for (var bi = 0; bi < 4; bi++)
                    {
                        ImGui.SetCursorPosX(bX + (w / 4) * bi);
                        ImGui.Text(ImGui.GetIO().KeyShift ? $"{a[bi]:X2}" : $"{a[bi]}");
                        if (bi != 3)
                        {
                            ImGui.SameLine();
                        }
                    }
                }


                ImGui.TableNextColumn();

                var hexText = $"{array->IntArray[i]:X}";
                ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
                ImGui.TextDisabled("00000000"[..(8 - hexText.Length)]);
    public override unsafe void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
    {
        var c = GetTooltipString(stringArrayData, DurabilityPercent);

        if (c == null || c.TextValue.StartsWith("?"))
        {
            return;
        }
        SetTooltipString(stringArrayData, DurabilityPercent, (Item.Condition / 300f).ToString(Config.TrailingZero ? "F2" : "0.##") + "%");
    }
    public override void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
    {
        if (Config.HideHotkeysOnTooltip)
        {
            return;
        }
        var seStr = GetTooltipString(stringArrayData, ControlsDisplay);

        if (seStr == null)
        {
            return;
        }
        if (seStr.TextValue.Contains('\n'))
        {
            return;
        }
        var split = seStr.TextValue.Split(new[] { weirdTabChar }, StringSplitOptions.None);

        if (split.Length > 0)
        {
            seStr.Payloads.Clear();
            seStr.Payloads.Add(new TextPayload(string.Join("\n", split)));
        }

        if (Config.CopyHotkeyEnabled)
        {
            seStr.Payloads.Add(new TextPayload($"\n{string.Join("+", Config.CopyHotkey.Select(k => k.GetKeyName()))}  Copy item name"));
        }
        if (Config.TeamcraftLinkHotkeyEnabled)
        {
            seStr.Payloads.Add(new TextPayload($"\n{string.Join("+", Config.TeamcraftLinkHotkey.Select(k => k.GetKeyName()))}  View on Teamcraft"));
        }
        if (Config.GardlandToolsLinkHotkeyEnabled)
        {
            seStr.Payloads.Add(new TextPayload($"\n{string.Join("+", Config.GardlandToolsLinkHotkey.Select(k => k.GetKeyName()))}  View on Garland Tools"));
        }
        if (Config.GamerEscapeLinkHotkeyEnabled)
        {
            seStr.Payloads.Add(new TextPayload($"\n{string.Join("+", Config.GamerEscapeLinkHotkey.Select(k => k.GetKeyName()))}  View on Gamer Escape"));
        }
        if (Config.ErionesLinkHotkeyEnabled)
        {
            seStr.Payloads.Add(new TextPayload($"\n{string.Join("+", Config.ErionesLinkHotkey.Select(k => k.GetKeyName()))}  View on Eriones (JP)"));
        }


        SetTooltipString(stringArrayData, ControlsDisplay, seStr);
    }
Example #5
0
        public override unsafe void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
        {
            var id = Service.GameGui.HoveredItem;

            if (id < 2000000)
            {
                id %= 500000;

                var item = itemSheet.GetRow((uint)id);
                if (item != null && item.Desynth > 0)
                {
                    var classJobOffset = 2 * (int)(item.ClassJobRepair.Row - 8);
                    var desynthLevel   = *(ushort *)(Common.PlayerStaticAddress + (0x6A6 + classJobOffset)) / 100f;
                    var desynthDelta   = item.LevelItem.Row - desynthLevel;

                    var useDescription = desynthesisInDescription.Contains(item.ItemSearchCategory.Row);

                    var seStr = GetTooltipString(stringArrayData, useDescription ? ItemDescription : ExtractableProjectableDesynthesizable);

                    if (seStr != null && seStr.Payloads.Count > 0)
                    {
                        if (seStr.Payloads.Last() is TextPayload textPayload)
                        {
                            if (Config.Delta)
                            {
                                textPayload.Text = textPayload.Text.Replace($"{item.LevelItem.Row},00", $"{item.LevelItem.Row} ({desynthDelta:+#;-#}");
                                textPayload.Text = textPayload.Text.Replace($"{item.LevelItem.Row}.00", $"{item.LevelItem.Row} ({desynthDelta:+#;-#})");
                            }
                            else
                            {
                                textPayload.Text = textPayload.Text.Replace($"{item.LevelItem.Row},00", $"{item.LevelItem.Row} ({desynthLevel:F0})");
                                textPayload.Text = textPayload.Text.Replace($"{item.LevelItem.Row}.00", $"{item.LevelItem.Row} ({desynthLevel:F0})");
                            }
                            SetTooltipString(stringArrayData, useDescription ? ItemDescription : ExtractableProjectableDesynthesizable, seStr);
                        }
                    }
                }
            }
        }
    public override unsafe void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
    {
        var seStr = GetTooltipString(stringArrayData, ItemUiCategory);

        if (seStr == null)
        {
            return;
        }
        if (seStr.TextValue.EndsWith("]"))
        {
            return;
        }
        var id = Service.GameGui.HoveredItem;

        if (id < 2000000)
        {
            id %= 500000;
        }
        seStr.Payloads.Add(new UIForegroundPayload(3));
        seStr.Payloads.Add(new TextPayload($"   ["));
        if (Config.Hex == false || Config.Both)
        {
            seStr.Payloads.Add(new TextPayload($"{id}"));
        }
        if (Config.Hex)
        {
            if (Config.Both)
            {
                seStr.Payloads.Add(new TextPayload(" - "));
            }
            seStr.Payloads.Add(new TextPayload($"0x{id:X}"));
        }
        seStr.Payloads.Add(new TextPayload($"]"));
        seStr.Payloads.Add(new UIForegroundPayload(0));
        SetTooltipString(stringArrayData, ItemUiCategory, seStr);
    }
Example #7
0
    public override unsafe void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
    {
        if (!(Config.Delta || Config.Total == false))
        {
            Config.Total = true;                                           // Config invalid check
        }
        try {
            var item = itemSheet.GetRow(Item.ItemId);
            if (item == null)
            {
                return;
            }
            if (item.MateriaSlotCount == 0)
            {
                return;
            }
            var itemLevel = itemLevelSheet.GetRow(item.LevelItem.Row);
            if (itemLevel == null)
            {
                return;
            }
            var baseParams        = new Dictionary <uint, ExtendedBaseParam>();
            var baseParamDeltas   = new Dictionary <uint, int>();
            var baseParamOriginal = new Dictionary <uint, int>();
            var baseParamLimits   = new Dictionary <uint, int>();
            foreach (var bp in item.BaseParam)
            {
                if (bp.Value == 0 || bp.BaseParam.Row == 0)
                {
                    continue;
                }
                baseParamDeltas.Add(bp.BaseParam.Row, 0);
                baseParamOriginal.Add(bp.BaseParam.Row, bp.Value);
                if (bp.BaseParam.Value != null)
                {
                    baseParamLimits.Add(bp.BaseParam.Row, (int)Math.Ceiling(itemLevel.BaseParam[bp.BaseParam.Row] * (bp.BaseParam.Value.EquipSlotCategoryPct[item.EquipSlotCategory.Row] / 100f)));
                    baseParams.Add(bp.BaseParam.Row, bp.BaseParam.Value);
                }
            }

            if (Item.IsHQ)
            {
                foreach (var bp in item.BaseParamSpecial)
                {
                    if (bp.Value == 0 || bp.BaseParam.Row == 0)
                    {
                        continue;
                    }
                    if (baseParamOriginal.ContainsKey(bp.BaseParam.Row))
                    {
                        baseParamOriginal[bp.BaseParam.Row] += bp.Value;
                    }
                }
            }

            if (baseParamDeltas.Count == 0)
            {
                return;
            }

            foreach (var(materiaId, level) in Item.Materia())
            {
                if (level >= 10)
                {
                    continue;
                }
                var materia = materiaSheet.GetRow(materiaId);
                if (materia == null)
                {
                    continue;
                }
                if (materia.BaseParam.Row == 0)
                {
                    continue;
                }
                if (materia.BaseParam.Value == null)
                {
                    continue;
                }
                if (!baseParamDeltas.ContainsKey(materia.BaseParam.Row))
                {
                    var bp = Service.Data.Excel.GetSheet <ExtendedBaseParam>()?.GetRow(materia.BaseParam.Row);
                    if (bp == null)
                    {
                        continue;
                    }
                    baseParams.Add(materia.BaseParam.Row, bp);
                    baseParamDeltas.Add(materia.BaseParam.Row, materia.Value[level]);
                    baseParamOriginal.Add(materia.BaseParam.Row, 0);
                    baseParamLimits.Add(materia.BaseParam.Row, (int)Math.Ceiling(itemLevel.BaseParam[materia.BaseParam.Row] * (bp.EquipSlotCategoryPct[item.EquipSlotCategory.Row] / 100f)));
                    continue;
                }
                baseParamDeltas[materia.BaseParam.Row] += materia.Value[level];
            }
            foreach (var bp in baseParamDeltas)
            {
                var param = baseParams[bp.Key];
                if (bp.Value == 0)
                {
                    continue;
                }
                var hasApplied = false;
                foreach (var field in Fields().Take(numberArrayData->IntArray[21]))
                {
                    var data = GetTooltipString(stringArrayData, field);
                    if (data == null)
                    {
                        continue;
                    }
                    if (data.TextValue.Contains(param.Name))
                    {
                        hasApplied = true;
                        if (data.TextValue.EndsWith("]"))
                        {
                            continue;
                        }
                        ApplyMateriaDifference(data, baseParamDeltas[param.RowId], baseParamOriginal[param.RowId], baseParamLimits[param.RowId]);
                        SetTooltipString(stringArrayData, field, data);
                    }
                }

                if (!hasApplied)
                {
                    var baseParamLines = numberArrayData->IntArray[21];
                    if (baseParamLines < 8)
                    {
                        var seString = new SeString();
                        seString.Payloads.Add(new TextPayload(param.Name));
                        seString.Payloads.Add(new TextPayload($" +{baseParamOriginal[param.RowId]}"));
                        ApplyMateriaDifference(seString, baseParamDeltas[param.RowId], baseParamOriginal[param.RowId], baseParamLimits[param.RowId]);

                        SetTooltipString(stringArrayData, (TooltipTweaks.ItemTooltipField)(37 + baseParamLines), seString);
                        numberArrayData->IntArray[21] += 1;
                    }
                }
            }
        } catch (Exception ex) {
            SimpleLog.Error(ex);
        }
    }
Example #8
0
 public virtual unsafe void OnGenerateItemTooltip(NumberArrayData *numberArrayData, StringArrayData *stringArrayData)
 {
 }