aboutsummaryrefslogtreecommitdiff
path: root/ch_time/api.md
blob: 946d02827ee9ba6cc72bb1e903371c43205a73e5 (plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# Veřejné funkce

## Nastavení a callbacky

  ch_time.get_time_shift() -> int
  ch_time.set_time_shift(new_shift)

Získá/nastaví časový posun v sekundách, který se přičítá k výstupu os.time() k získání správné aktuální časové známky.
Výchozí posun je 0.

  ch_time.get_time_speed_during_day()
  ch_time.set_time_speed_during_day(new_value)

Získá/nastaví rychlost plynutí herního času během dne. Hodnota může být nil, v takovém případě se při úsvitu rychlost času nemění.
Výchozí hodnota je nil.

    ch_time.get_time_speed_during_night()
    ch_time.set_time_speed_during_night(new_value)

Získá/nastaví rychlost plynutí herního času během noci. Hodnota může být nil, v takovém případě se při soumraku rychlost času nemění.
Výchozí hodnota je nil.

  ch_time.get_rwtime_callback()
  ch_time.set_rwtime_callback(new_callback)

Získá/nastaví callback volaný pro získání aktuálního železničního času. Je-li nil, železniční čas není dostupný. Výchozí hodnota je nil.
Callback se bude volat bez parametrů a musí vracet tabulku v tomto formátu:

{
    secs = int, -- železniční čas v číselné formě (to_secs())
    string = string, -- železniční čas v textové formě bez cyklu (jen minuty a sekundy)
    string_extended = string, -- železniční čas v úplné textové formě (tzn. včetně cyklu)
}

## Třída "Cas"

Objekty této třídy vrací funkce ch_time.aktualni_cas() a ch_time.na_strukturu(). Reprezentují konkrétní časový okamžik
v kombinaci s příslušným místním a UTC časem.

  Cas:den_v_tydnu_cislo() -> int

Vrací den v týdnu jako číslo od 1 (pondělí) do 7 (neděle)

  Cas:den_v_tydnu_nazev() -> string

Vrací název dne v týdnu malými písmeny ("pondělí" až "neděle")

  Cas:nazev_mesice(pad) -> string

pad musí být 1, nebo 2. Vrací název měsíce v uvedeném pádě.

  Cas:den_v_roce() -> int

Vrací den v roce (1366)

  Cas:posun_cislo() -> int

Vrací posun místního času proti UTC v počtu hodin.

  Cas:posun_text() -> string

Vrací posun místního času proti UTC v textovém formátu "+HH:MM".

  Cas:znamka32() -> int

Vrací celý počet sekund od 1. 1. 2020 UTC (může být záporný), v rozsahu typu int32_t.

  Cas:YYYY_MM_DD() -> string

Vrací místní čas ve formátu "YYYY-MM-DD".

  Cas:YYYY_MM_DD_HH_MM_SS() -> string

Vrací místní čas ve formátu "YYYY-MM-DD HH:MM:SS".

  Cas:YYYY_MM_DD_HH_MM_SS_ZZZ() -> string

Vrací místní čas ve formátu "YYYY-MM-DD HH:MM:SS +HH:MM".

  Cas:YYYY_MM_DD_HH_MM_SSZZZ() -> string

Vrací místní čas ve formátu "YYYY-MM-DD HH:MM:SS+HH:MM".

  Cas:YYYY_MM_DDTHH_MM_SSZZZ() -> string

Vrací místní čas ve formátu "YYYY-MM-DDTHH:MM:SS+HH:MM" (tzn. zcela bez mezer).

  Cas:HH_MM_SS()

Vrací místní čas ve formátu "HH:MM:SS".

  Cas:UTC_YYYY_MM_DD()

Vrací UTC čas ve formátu "YYYY-MM-DD".

  Cas:UTC_YYYY_MM_DD_HH_MM_SS()

Vrací UTC čas ve formátu "YYYY-MM-DD HH:MM:SS".

  Cas:za_n_sekund(n)

Vrací nový objekt třídy Cas reprezentující časový okamžik o n sekund později než tento objekt;
n může být záporné, v takovém případě bude okamžik o -n sekund dříve.

## Funkce pro práci s reálným časem

  ch_time.aktualni_cas()

Vrací objekt třídy Cas reprezentující aktuální čas. V podstatě jde o synonymum k ch_time.na_strukturu(nil).

  ch_time.time() -> int

Vrací hodnotu os.time() posunutou o posun zadaný funkcí ch_time.set_time_shift(new_shift).

  ch_time.na_strukturu(time)

Vrací objekt třídy Cas reprezentující zadaný čas (ve stejném formátu jako výstup ch_time.time()).
Kromě metod nabízí ještě následující datové prvky:

{
  time = int, -- původní zadaná časová známka
  utc = table, -- struktura vrácená příkazem os.date() reprezentující UTC čas; prvky jsou např.: year, month, day, hour, min, sec, yday
  lt = lt, -- struktura vrácená příkazem os.date() reprezentující místní čas
  rok = int, -- rok (místní)
  mesic = int, -- měsíc 112 (místní)
  den = int, -- den 131 (místní)
  hodina = int, -- hodina 023 (místní)
  minuta = int, -- minuta 059 (místní)
  sekunda = int, -- sekunda 059 (místní)
  je_letni_cas = bool, -- indikátor, zda místní čas je letní
}

  ch_time.znamka32(time)

Vrátí časovou známku v rozsahu typu 'int32_t' jako počet sekund od 1. 1. 2020 UTC.
Rozsah je od 1951-12-13 20:45:53 UTC do 2088-01-19 03:14:07 UTC.
Není-li zadaná časová známka (nil), použije aktuální čas.

## Funkce pro práci s herním časem

  ch_time.herni_cas() -> table

Vrací herní čas ve struktuře s následujícími prvky:

{
	day_count = int -- návratová hodnota funkce minetest.get_day_count()
	timeofday = float -- hodnota podle funkce minetest.get_timeofday()
	hodina = int (0..23) -- hodina ve hře (celá)
	minuta = int (0..59) -- minuta ve hře (celá)
	sekunda = int (0..59) -- sekunda ve hře (celá)
	daynight_ratio = float
	natural_light = int (0..15)
	time_speed = float -- návratová hodnota core.settings:get("time_speed")
}

  ch_time.herni_cas_nastavit(h, m, s) -> table

Nastaví herní čas na zadanou hodnotu uvedenou ve formátu hodin, minut a sekund.
Vrací výstup ch_time.herni_cas() po provedení nastavení.
Součástí nastavení může být změna rychlosti plynutí času.

# Příkazy v četu

## /posunčasu

Syntaxe:

``/posunčasu <celé_číslo>``

Nastaví posun času, volá funkci ch_time.set_time_shift(). Účinek je okamžitý.
Vyžaduje právo *server*.

## /čas

Syntaxe:

``/čas [utc|utc+|m[ístní]|m[ístní]+|h[erní]|h[erní]+|ž[elezniční]|ž[elezniční]+]``

Vypíše požadovaný druh času. Není-li druh zadán, vypíše herní čas.