9659f7a7d1
Made-with: Cursor
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
|
using FFXIVClientStructs.FFXIV.Client.Game.Fate;
|
|
using Lumina.Extensions;
|
|
using Mappy.Classes;
|
|
using Mappy.Extensions;
|
|
|
|
namespace Mappy.Modules;
|
|
|
|
public class FateModule : ModuleBase
|
|
{
|
|
public override unsafe bool ProcessMarker(MarkerInfo markerInfo)
|
|
{
|
|
if (markerInfo.MarkerType is not MarkerType.Fate) return false;
|
|
|
|
var fateData = FateManager.Instance()->Fates.FirstOrNull(fate => fate.Value->FateId == markerInfo.DataId);
|
|
if (fateData is null) return false;
|
|
|
|
var fate = fateData.Value;
|
|
var timeRemaining = fate.GetTimeRemaining();
|
|
|
|
markerInfo.PrimaryText = () => $"Lv. {fate.Value->Level} {fate.Value->Name}";
|
|
|
|
// Don't show additional information for any fate that is preparing
|
|
if (fate.Value->State is FateState.Preparing) return true;
|
|
|
|
if (timeRemaining >= TimeSpan.Zero) {
|
|
markerInfo.SecondaryText = () => $"Time Remaining {timeRemaining:mm\\:ss}\nProgress {fate.Value->Progress}%";
|
|
|
|
if (timeRemaining.TotalSeconds <= 300) {
|
|
markerInfo.RadiusColor = fate.GetColor();
|
|
markerInfo.RadiusOutlineColor = fate.GetColor();
|
|
}
|
|
}
|
|
else {
|
|
markerInfo.SecondaryText = () => $"Progress {fate.Value->Progress}%";
|
|
}
|
|
|
|
return true;
|
|
}
|
|
} |