OSDN Git Service

Since struct dirent only holds the last element in the path, build the full path...
[hengband/hengband.git] / src / world / world.c
1 #include "world/world.h"
2 #include "player/player-race-types.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 player_ptr プレーヤーへの参照ポインタ
25  * @param day 日数を返すための参照ポインタ
26  * @param hour 時数を返すための参照ポインタ
27  * @param min 分数を返すための参照ポインタ
28  */
29 void extract_day_hour_min(player_type *player_ptr, int *day, int *hour, int *min)
30 {
31         const s32b A_DAY = TURNS_PER_TICK * TOWN_DAWN;
32         s32b turn_in_today = (current_world_ptr->game_turn + A_DAY / 4) % A_DAY;
33
34         switch (player_ptr->start_race)
35         {
36         case RACE_VAMPIRE:
37         case RACE_SKELETON:
38         case RACE_ZOMBIE:
39         case RACE_SPECTRE:
40                 *day = (current_world_ptr->game_turn - A_DAY * 3 / 4) / A_DAY + 1;
41                 break;
42         default:
43                 *day = (current_world_ptr->game_turn + A_DAY / 4) / A_DAY + 1;
44                 break;
45         }
46         *hour = (24 * turn_in_today / A_DAY) % 24;
47         *min = (1440 * turn_in_today / A_DAY) % 60;
48 }
49
50 /*!
51  * @brief 実ゲームプレイ時間を更新する
52  */
53 void update_playtime(void)
54 {
55     if (current_world_ptr->start_time != 0) {
56         u32b tmp = (u32b)time(NULL);
57         current_world_ptr->play_time += (tmp - current_world_ptr->start_time);
58         current_world_ptr->start_time = tmp;
59     }
60 }