Skip to content

Commit b094dc3

Browse files
committed
Script API: add DateTime.Milliseconds, meaning ms in second (0-999)
1 parent cb7ea33 commit b094dc3

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

Editor/AGS.Editor/Resources/agsdefns.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2420,7 +2420,9 @@ builtin managed struct DateTime {
24202420
readonly import attribute int Minute;
24212421
/// Gets the Second (0-59) component of the time.
24222422
readonly import attribute int Second;
2423-
/// Gets the raw time value, useful for calculating elapsed time periods.
2423+
/// Gets the Milliseconds (0-999) component of the time.
2424+
readonly import attribute int Milliseconds;
2425+
/// Gets the raw time value (in seconds), useful for calculating elapsed time periods.
24242426
readonly import attribute int RawTime;
24252427
};
24262428

Engine/ac/datetime.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ int DateTime_GetSecond(ScriptDateTime *sdt) {
8080
return sdt->Second();
8181
}
8282

83+
int DateTime_GetMilliseconds(ScriptDateTime *sdt) {
84+
return sdt->Milliseconds();
85+
}
86+
8387
int DateTime_GetRawTime(ScriptDateTime *sdt) {
8488
return sdt->RawTime();
8589
}
@@ -146,6 +150,12 @@ RuntimeScriptValue Sc_DateTime_GetSecond(void *self, const RuntimeScriptValue *p
146150
API_OBJCALL_INT(ScriptDateTime, DateTime_GetSecond);
147151
}
148152

153+
RuntimeScriptValue Sc_DateTime_GetMilliseconds(void *self, const RuntimeScriptValue *params, int32_t param_count)
154+
{
155+
API_OBJCALL_INT(ScriptDateTime, DateTime_GetMilliseconds);
156+
}
157+
158+
149159
// int (ScriptDateTime *sdt)
150160
RuntimeScriptValue Sc_DateTime_GetRawTime(void *self, const RuntimeScriptValue *params, int32_t param_count)
151161
{
@@ -161,6 +171,7 @@ void RegisterDateTimeAPI()
161171

162172
{ "DateTime::get_DayOfMonth", API_FN_PAIR(DateTime_GetDayOfMonth) },
163173
{ "DateTime::get_Hour", API_FN_PAIR(DateTime_GetHour) },
174+
{ "DateTime::get_Milliseconds", API_FN_PAIR(DateTime_GetMilliseconds) },
164175
{ "DateTime::get_Minute", API_FN_PAIR(DateTime_GetMinute) },
165176
{ "DateTime::get_Month", API_FN_PAIR(DateTime_GetMonth) },
166177
{ "DateTime::get_RawTime", API_FN_PAIR(DateTime_GetRawTime) },

Engine/ac/dynobj/scriptdatetime.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ void ScriptDateTime::SetTime(const ClockTimePoint &time)
8282
}
8383

8484
_rawtime = static_cast<int32_t>(rawtime);
85+
_msSinceSecond = std::chrono::duration_cast<std::chrono::milliseconds>(time.time_since_epoch()).count() % 1000;
8586
_hour = newtime->tm_hour;
8687
_minute = newtime->tm_min;
8788
_second = newtime->tm_sec;
@@ -104,6 +105,8 @@ void ScriptDateTime::Serialize(const void* /*address*/, Stream *out)
104105
out->WriteInt32(_minute);
105106
out->WriteInt32(_second);
106107
out->WriteInt32(_rawtime);
108+
// v3.6.3.3
109+
out->WriteInt32(_msSinceSecond);
107110
}
108111

109112
void ScriptDateTime::Unserialize(int index, Stream *in, size_t /*data_sz*/)
@@ -115,5 +118,7 @@ void ScriptDateTime::Unserialize(int index, Stream *in, size_t /*data_sz*/)
115118
_minute = in->ReadInt32();
116119
_second = in->ReadInt32();
117120
_rawtime = in->ReadInt32();
121+
// v3.6.3.3
122+
_msSinceSecond = in->ReadInt32();
118123
ccRegisterUnserializedObject(index, this, this);
119124
}

Engine/ac/dynobj/scriptdatetime.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ struct ScriptDateTime final : AGSCCDynamicObject
5050
inline int Hour() const { return _hour; }
5151
inline int Minute() const { return _minute; }
5252
inline int Second() const { return _second; }
53+
inline int Milliseconds() const { return _msSinceSecond; }
5354

5455
private:
5556
int _year = 0, _month = 0, _day = 0;
5657
int _hour = 0, _minute = 0, _second = 0;
58+
int _msSinceSecond = 0;
5759
int _rawtime = -1;
5860

5961
void SetTime(const ClockTimePoint &time);

0 commit comments

Comments
 (0)