はじめに
この記事はテラリアというゲームでのMod開発に関する情報です。
サンプルコードや、公開されているコードを参考にMod開発をしている状況で、備忘録としてのまとめでもあり、記事投稿時点での知識で書いていますので、間違いもあるかもしれませんのでご注意ください。
テラリアでの世界の時間について
テラリアの世界での時間は double Terraria.Main.time
で取得できます。
テラリアでは 04:30 ~ 19:29 までが昼。19:30 ~ 04:29 までが夜して扱われており、timeはそれぞれのタイミングで 0 にリセットされます。
このため、昼か夜かの判断は、 bool Terraria.Main.dayTime
で行います。
個人的には24時間形式の方が時刻の判断はしやすいので、00:00 を 0 として判断するように変換を行うようにします。
なお、テラリアの世界では、現実の 1 秒を、 1分として世界が動いていますので、 time の値の 1 は、テラリアの世界での 1 秒です。
00:00 を 0 とした値にする
using Terraria;
:
public const double sec = 1;
public const double min = sec * 60;
public const double hour = min * 60;
public const double daytime = hour * 4 + min * 30;
public const double night = hour * 19 + min * 30;
public const double am12 = hour * 24;
public static double get24time()
{
double result = Main.time + (Main.dayTime ? daytime : night);
if (am12 < result)
result -= am12;
return result;
}
public static string getDisplay24Time()
{
string result = string.Empty;
double time = get24time;
result = $"{(int)(time / hour % 24):D2}:{(int)(time / min % 60):D2}";
return result;
}
コードにいまひとつな所もありますが、こんな感じで00:00からを0として時間を扱うようにすれば、時間別のイベントの判断などがしやすいのではないかと思います。
以上