-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTextChange.cs
More file actions
59 lines (53 loc) · 2.06 KB
/
TextChange.cs
File metadata and controls
59 lines (53 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using HarmonyLib;
using static Date;
namespace WidgetTimeViewer
{
/// <summary>
/// Date.GetText()メソッドをパッチしてウィジェットの時間表示を改善する
/// </summary>
[HarmonyPatch(typeof(Date), nameof(Date.GetText), typeof(TextFormat))]
internal static class DateTextPatch
{
/// <summary>
/// ウィジェット用の時間テキストを独自フォーマットで上書きする
/// </summary>
/// <param name="__instance">Dateインスタンス</param>
/// <param name="format">テキストフォーマット種別</param>
/// <param name="__result">出力される結果文字列</param>
/// <returns>元メソッドの実行をスキップするかどうか</returns>
private static bool Prefix(Date __instance, TextFormat format, ref string __result)
{
if (format != TextFormat.Widget)
{
return true;
}
string formattedDate = FormatDate(__instance);
string formattedTime = FormatTime(__instance);
string lang = EClass.core.config.lang;
__result = lang == "JP"
? $"{formattedDate} {__instance.hour}時{__instance.min}分"
: $"{formattedDate} {formattedTime}";
return false;
}
/// <summary>
/// 日付部分をフォーマットする
/// </summary>
private static string FormatDate(Date instance)
{
return "dateYearMonthDay".lang(
instance.year.ToString() ?? "",
instance.month.ToString() ?? "",
instance.day.ToString() ?? "",
instance.hour.ToString()
);
}
/// <summary>
/// 時刻部分をフォーマットする (HH:MM形式)
/// </summary>
private static string FormatTime(Date instance)
{
string minute = instance.min < 10 ? $"0{instance.min}" : instance.min.ToString();
return $"{instance.hour}:{minute}";
}
}
}