diff --git a/Craftimizer/Plugin/SimulatorWindow.cs b/Craftimizer/Plugin/SimulatorWindow.cs index 79d5575..85d93ea 100644 --- a/Craftimizer/Plugin/SimulatorWindow.cs +++ b/Craftimizer/Plugin/SimulatorWindow.cs @@ -40,7 +40,7 @@ public class SimulatorWindow : Window if (ImGui.ImageButton(action.GetIcon(ClassJob.Carpenter).ImGuiHandle, new Vector2(ImGui.GetFontSize() * 2))) Simulation.Execute(action); if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled)) - ImGui.SetTooltip(action.GetName(ClassJob.Carpenter)); + ImGui.SetTooltip(action.Tooltip); ImGui.EndDisabled(); if (++i % 5 != 0) ImGui.SameLine(); @@ -84,7 +84,7 @@ public class SimulatorWindow : Window i = 0; foreach(var action in Simulation.ActionHistory) { - ImGui.Image(action.GetIcon(ClassJob.Carpenter).ImGuiHandle, new Vector2(ImGui.GetFontSize() * 1.5f)); + ImGui.Image(action.GetIcon(ClassJob.Carpenter).ImGuiHandle, new Vector2(ImGui.GetFontSize() * 2f)); if (ImGui.IsItemHovered()) ImGui.SetTooltip(action.GetName(ClassJob.Carpenter)); if (++i % 5 != 0) diff --git a/Craftimizer/Simulator/Actions/BaseAction.cs b/Craftimizer/Simulator/Actions/BaseAction.cs index e68c7a9..7b9416e 100644 --- a/Craftimizer/Simulator/Actions/BaseAction.cs +++ b/Craftimizer/Simulator/Actions/BaseAction.cs @@ -3,6 +3,7 @@ using ImGuiScene; using Lumina.Excel.GeneratedSheets; using System; using System.Linq; +using System.Text; using Action = Lumina.Excel.GeneratedSheets.Action; namespace Craftimizer.Simulator.Actions; @@ -111,4 +112,28 @@ public abstract class BaseAction Simulation.IncreaseQuality(Efficiency); } } + + public virtual string Tooltip + { + get + { + var builder = new StringBuilder(); + builder.AppendLine(GetName(ClassJob.Carpenter)); + if (!CanUse) + builder.AppendLine($"Cannot Use"); + builder.AppendLine($"Level {Level}"); + builder.AppendLine($"CP Cost: {CPCost}"); + if (DurabilityCost != 0) + builder.AppendLine($"Durability Cost: {DurabilityCost}"); + if (IncreasesProgress) + builder.AppendLine($"+{Simulation.CalculateProgressGain(Efficiency)} Progress"); + if (IncreasesQuality) + builder.AppendLine($"+{Simulation.CalculateQualityGain(Efficiency)} Quality"); + if (!IncreasesStepCount) + builder.AppendLine($"Does Not Increase Step Count"); + if (SuccessRate != 1f) + builder.AppendLine($"{SuccessRate * 100}%% Success Rate"); + return builder.ToString(); + } + } } diff --git a/Craftimizer/Simulator/Actions/BaseBuffAction.cs b/Craftimizer/Simulator/Actions/BaseBuffAction.cs index b6bf56e..2d6fa2d 100644 --- a/Craftimizer/Simulator/Actions/BaseBuffAction.cs +++ b/Craftimizer/Simulator/Actions/BaseBuffAction.cs @@ -1,4 +1,5 @@ using System; +using System.Text; namespace Craftimizer.Simulator.Actions; @@ -19,4 +20,16 @@ public abstract class BaseBuffAction : BaseAction Simulation.RemoveEffect(effect); Simulation.AddEffect(Effect, EffectDuration); } + + public override string Tooltip { + get + { + var builder = new StringBuilder(base.Tooltip); + builder.AppendLine($"Effect: {Effect.Status().Name}"); + builder.AppendLine($"Duration: {EffectDuration} steps"); + foreach(var effect in ConflictingEffects) + builder.AppendLine($"Conflicts with: {effect.Status().Name}"); + return builder.ToString(); + } + } }