157 lines
3.9 KiB
Plaintext
157 lines
3.9 KiB
Plaintext
//
|
|
//
|
|
// ALFA NESS
|
|
// Time functions v1.1
|
|
//
|
|
// Do NOT Modify this File
|
|
// See 'spawn__readme' for Instructions
|
|
//
|
|
//
|
|
//::///////////////////////////////////////////////
|
|
//:: Time Conversion Functions
|
|
//:: spawn_timefuncs
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
These functions allow Calendar y/m/d/h/m/s to
|
|
be converted to seconds of real time which can be used as
|
|
a basis for time comparisons. Time is reckoned
|
|
in seconds from the NWN Epoch - 1340 DR.
|
|
|
|
Note that HoursToRealSeconds() is equivalent to the Bioware function
|
|
HoursToSeconds(); it is included for completeness.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Cereborn
|
|
//:: Created On: November 22, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
int CLOCK_DEBUG = FALSE;
|
|
|
|
int SPAWN_EPOCH = 1340;
|
|
|
|
void clockDebug(string str)
|
|
{
|
|
if (CLOCK_DEBUG)
|
|
{
|
|
SendMessageToAllDMs(str);
|
|
object oPC = GetFirstPC();
|
|
if (! GetIsDM(oPC))
|
|
SendMessageToPC(oPC, str);
|
|
WriteTimestampedLogEntry(str);
|
|
}
|
|
}
|
|
|
|
// Get the current time (elapsed since the Epoch) in real seconds
|
|
int GetCurrentRealSeconds();
|
|
|
|
// Convert a calendar (game) time to real seconds
|
|
int CalendarToRealSeconds(int year, int month, int day, int hour, int minute,
|
|
int second);
|
|
|
|
// Returns number of real seconds in the # of specified (game) years
|
|
int YearsToRealSeconds(int years);
|
|
|
|
// Returns number of real seconds in the # of specified (game) months
|
|
int MonthsToRealSeconds(int months);
|
|
|
|
// Returns number of real seconds in the # of specified (game) days
|
|
int DaysToRealSeconds(int days);
|
|
|
|
// Returns number of real seconds in the # of specified (game) hours
|
|
int HoursToRealSeconds(int hours);
|
|
|
|
int YearsToRealSeconds(int years)
|
|
{
|
|
return MonthsToRealSeconds(years*12);
|
|
}
|
|
|
|
int MonthsToRealSeconds(int months)
|
|
{
|
|
return DaysToRealSeconds(months*28);
|
|
}
|
|
|
|
int DaysToRealSeconds(int days)
|
|
{
|
|
return FloatToInt(HoursToSeconds(days*24));
|
|
}
|
|
|
|
int HoursToRealSeconds(int hours)
|
|
{
|
|
return FloatToInt(HoursToSeconds(hours));
|
|
}
|
|
|
|
int CalendarToRealSeconds(int year, int month, int day, int hour, int minute,
|
|
int second)
|
|
{
|
|
if (year < SPAWN_EPOCH)
|
|
year = SPAWN_EPOCH;
|
|
if (month < 1)
|
|
month = 1;
|
|
if (day < 1)
|
|
day = 1;
|
|
|
|
return (YearsToRealSeconds(year-SPAWN_EPOCH) +
|
|
MonthsToRealSeconds(month-1) +
|
|
DaysToRealSeconds(day-1) +
|
|
FloatToInt(HoursToSeconds(hour)) +
|
|
(minute*60) +
|
|
second);
|
|
}
|
|
|
|
|
|
int GetCurrentRealSeconds()
|
|
{
|
|
//clockDebug("Converting " + IntToString(GetCalendarYear()) + " " +
|
|
// IntToString(GetCalendarMonth()) + " " +
|
|
// IntToString(GetCalendarDay()) + " " +
|
|
// IntToString(GetTimeHour()) + " " +
|
|
// IntToString(GetTimeMinute()) + " " +
|
|
// IntToString(GetTimeSecond()));
|
|
|
|
return CalendarToRealSeconds(GetCalendarYear(), GetCalendarMonth(),
|
|
GetCalendarDay(), GetTimeHour(), GetTimeMinute(), GetTimeSecond());
|
|
}
|
|
|
|
string RealSecondsToString(int nRealSeconds)
|
|
{
|
|
int nMod;
|
|
int nRem;
|
|
string sDateTime = "";
|
|
|
|
nMod = nRealSeconds / YearsToRealSeconds(1);
|
|
nRem = nRealSeconds % YearsToRealSeconds(1);
|
|
|
|
sDateTime = IntToString(nMod + SPAWN_EPOCH);
|
|
|
|
nMod = nRem / MonthsToRealSeconds(1);
|
|
nRem = nRem % MonthsToRealSeconds(1);
|
|
|
|
sDateTime += " " + IntToString(nMod+1);
|
|
|
|
nMod = nRem / DaysToRealSeconds(1);
|
|
nRem = nRem % DaysToRealSeconds(1);
|
|
|
|
sDateTime += " " + IntToString(nMod+1);
|
|
|
|
nMod = nRem / FloatToInt(HoursToSeconds(1));
|
|
nRem = nRem % FloatToInt(HoursToSeconds(1));
|
|
|
|
sDateTime += " " + IntToString(nMod) + ":";
|
|
|
|
nMod = nRem / 60;
|
|
nRem = nRem % 60;
|
|
|
|
if (nMod < 10)
|
|
sDateTime += "0" + IntToString(nMod) + ":";
|
|
else
|
|
sDateTime += IntToString(nMod) + ":";
|
|
|
|
if (nRem < 10)
|
|
sDateTime += "0" + IntToString(nRem);
|
|
else
|
|
sDateTime += IntToString(nRem);
|
|
|
|
return sDateTime;
|
|
}
|
|
|