4 #include <boost/shared_ptr.hpp>
8 #include "cmd/script/mission.h"
16 extern vector< boost::shared_ptr<Faction> >
factions;
20 initial_time =
mission->getGametime();
21 initial_star_time = NULL;
26 if (initial_star_time != NULL)
27 delete[] initial_star_time;
28 initial_time =
mission->getGametime();
29 initial_star_time =
new double[
factions.size()];
30 for (
unsigned int i = 0; i <
factions.size(); i++)
31 initial_star_time[i] = time;
38 double time_since_server_started =
mission->getGametime()-initial_time;
40 if (initial_star_time == NULL)
41 return time_since_server_started;
43 return initial_star_time[
faction]+time_since_server_started;
50 if (initial_star_time == NULL)
53 return initial_star_time[
faction] - initial_time;
64 if (initial_star_time != NULL)
66 delete[] initial_star_time;
67 initial_star_time = 0;
68 initial_time =
mission->getGametime();
69 initial_star_time =
new double[
factions.size()];
70 double init_time = this->ConvertTrekDate( date );
72 for (
unsigned int i = 0; i <
factions.size(); i++)
73 initial_star_time[i] = init_time;
84 unsigned int days, hours, minutes, seconds;
88 days = (
unsigned int) date/2880000;
90 date = (
unsigned int) date%2880000;
92 hours = (
unsigned int) date/28800;
94 date = (
unsigned int) date%28800;
96 minutes = (
unsigned int) date/480;
99 seconds = (
unsigned int) date%480;
102 unsigned int hhmm = (hours*100+minutes);
104 sprintf( cdate,
"%d.%.4d:%.3d", days, hhmm, seconds );
105 return string( cdate );
108 string StarDate::ConvertTrekDate(
double date )
110 unsigned int days, hours, minutes;
113 days = (
unsigned int) date/2880000;
114 date = (
unsigned int) date%2880000;
115 hours = (
unsigned int) date/28800;
116 date = (
unsigned int) date%28800;
117 minutes = (
unsigned int) date/480;
119 unsigned int hhmm = (hours*100+minutes);
121 sprintf( cdate,
"%d.%.4d", days, hhmm );
122 return string( cdate );
126 double StarDate::ConvertTrekDate(
string date )
128 unsigned int days, hours, minutes, tmphrs, seconds, nb, pos;
131 pos = date.find(
"." );
132 date.replace( pos, 1,
"a" );
133 if ( ( nb = sscanf( date.c_str(),
"%da%4d:%3d", &days, &tmphrs, &seconds ) ) != 3 )
139 minutes = tmphrs%100;
141 res = days*2880000+hours*28800+minutes*480+seconds;
160 float StarDate::GetFloatFromTrekDate(
int faction )
164 sscanf( cur_date.c_str(),
"%f", &float_date );