OSDN Git Service

Merge branch 'master' into For2.2.2-Refactoring
[hengband/hengband.git] / src / world.c
1 #include "angband.h"
2 #include "world.h"
3
4 world_type world;
5 world_type *current_world_ptr = &world;
6
7 /*!
8  * @brief ゲーム時間が日中かどうかを返す /
9  * Whether daytime or not
10  * @return 日中ならばTRUE、夜ならばFALSE
11  */
12 bool is_daytime(void)
13 {
14         s32b len = TURNS_PER_TICK * TOWN_DAWN;
15         if ((current_world_ptr->game_turn % len) < (len / 2))
16                 return TRUE;
17         else
18                 return FALSE;
19 }
20
21 /*!
22  * @brief 現在の日数、時刻を返す /
23  * Extract day, hour, min
24  * @param day 日数を返すための参照ポインタ
25  * @param hour 時数を返すための参照ポインタ
26  * @param min 分数を返すための参照ポインタ
27  */
28 void extract_day_hour_min(int *day, int *hour, int *min)
29 {
30         const s32b A_DAY = TURNS_PER_TICK * TOWN_DAWN;
31         s32b turn_in_today = (current_world_ptr->game_turn + A_DAY / 4) % A_DAY;
32
33         switch (p_ptr->start_race)
34         {
35         case RACE_VAMPIRE:
36         case RACE_SKELETON:
37         case RACE_ZOMBIE:
38         case RACE_SPECTRE:
39                 *day = (current_world_ptr->game_turn - A_DAY * 3 / 4) / A_DAY + 1;
40                 break;
41         default:
42                 *day = (current_world_ptr->game_turn + A_DAY / 4) / A_DAY + 1;
43                 break;
44         }
45         *hour = (24 * turn_in_today / A_DAY) % 24;
46         *min = (1440 * turn_in_today / A_DAY) % 60;
47 }