mirror of
https://github.com/ACEmulator/ACE
synced 2026-08-17 12:26:06 -04:00
* Support QuestManager on Creatures * Update QuestManager.cs * Update QuestManager.cs * Update EmoteManager.cs * Update AdminCommands.cs * Add support for MyQuest and Decrement * Update EmoteManager.cs * Add qst stamp * switch to lazy load * adding support for Creature.QuestManager * numTimesCompleted * adding logging * Add support for %mqt * Support %mlqt usage * Update EmoteManager.cs
65 lines
2.5 KiB
C#
65 lines
2.5 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace ACE.Common.Extensions
|
|
{
|
|
public static class TimeSpanExtensions
|
|
{
|
|
public static string GetFriendlyString(this TimeSpan timeSpan)
|
|
{
|
|
// use datetime here?
|
|
// this probably won't work with numDays...
|
|
//var numYears = timeSpan.GetYears();
|
|
//var numMonths = timeSpan.GetMonths();
|
|
|
|
var numDays = timeSpan.ToString("%d");
|
|
var numHours = timeSpan.ToString("%h");
|
|
var numMinutes = timeSpan.ToString("%m");
|
|
var numSeconds = timeSpan.ToString("%s");
|
|
|
|
var sb = new StringBuilder();
|
|
|
|
// did retail display months/years?
|
|
|
|
//if (numYears > 0) sb.Append(numYears + "y ");
|
|
//if (numMonths > 0) sb.Append(numMonths + "mo ");
|
|
|
|
if (numDays != "0") sb.Append(numDays + "d ");
|
|
if (numHours != "0") sb.Append(numHours + "h ");
|
|
if (numMinutes != "0") sb.Append(numMinutes + "m ");
|
|
if (numSeconds != "0") sb.Append(numSeconds + "s ");
|
|
|
|
return sb.ToString().Trim();
|
|
}
|
|
|
|
public static string GetFriendlyLongString(this TimeSpan timeSpan)
|
|
{
|
|
var numDays = timeSpan.ToString("%d");
|
|
var numHours = timeSpan.ToString("%h");
|
|
var numMinutes = timeSpan.ToString("%m");
|
|
var numSeconds = timeSpan.ToString("%s");
|
|
|
|
var sb = new StringBuilder();
|
|
|
|
if (numDays != "0") sb.Append(numDays + $" day{((timeSpan.Days > 1) ? "s" : "")} ");
|
|
if (numHours != "0") sb.Append($"{((numDays != "0") ? ", " : "")}" + numHours + $" hour{((timeSpan.Hours > 1) ? "s" : "")} ");
|
|
if (numMinutes != "0") sb.Append($"{((numDays != "0" || numHours != "0") ? ", " : "")}" + numMinutes + $" minute{((timeSpan.Minutes > 1) ? "s" : "")} ");
|
|
if (numSeconds != "0") sb.Append($"{((numDays != "0" || numHours != "0" || numMinutes != "0") ? "and " : "")}" + numSeconds + $" second{((timeSpan.Seconds > 1) ? "s" : "")} ");
|
|
|
|
return sb.ToString().Trim();
|
|
}
|
|
|
|
public static uint SecondsPerMonth = 60 * 60 * 24 * 30; // 30-day estimate
|
|
public static uint SecondsPerYear = 60 * 60 * 24 * 365; // non-leap year
|
|
|
|
public static uint GetMonths(this TimeSpan timeSpan)
|
|
{
|
|
return (uint)timeSpan.TotalSeconds / SecondsPerMonth;
|
|
}
|
|
|
|
public static uint GetYears(this TimeSpan timeSpan)
|
|
{
|
|
return (uint)timeSpan.TotalSeconds / SecondsPerYear;
|
|
}
|
|
}
|
|
}
|