LoginSignup
0
0

More than 5 years have passed since last update.

【Terraria】テラリアでのゲーム時間を24時間形式で管理する

Posted at

はじめに

この記事はテラリアというゲームでの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として時間を扱うようにすれば、時間別のイベントの判断などがしやすいのではないかと思います。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0