X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fclock.cxx;h=e5778d5385e20633ac4c266e9cb7b73cd059bb5e;hb=f3dd7c363cbb333b6ab99b44f6a237cb7852d420;hp=b850d18ebd03caceec12fbc425d6578eaf82985f;hpb=0ab2a40c2a2c75d117744f63a1bd74ccc7ea3a4e;p=flightgear.git diff --git a/src/Instrumentation/clock.cxx b/src/Instrumentation/clock.cxx index b850d18eb..e5778d538 100644 --- a/src/Instrumentation/clock.cxx +++ b/src/Instrumentation/clock.cxx @@ -5,6 +5,9 @@ // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif #include "clock.hxx" #include @@ -17,6 +20,9 @@ Clock::Clock ( SGPropertyNode *node ) _gmt_time_sec(0), _offset_sec(0), _indicated_sec(0), + _indicated_min(0), + _indicated_hour(0), + _local_hour(0), _standstill_offset(0), name("clock"), num(0) @@ -49,6 +55,7 @@ Clock::Clock () _standstill_offset(0) { _indicated_string[0] = '\0'; + _indicated_short_string[0] = '\0'; } Clock::~Clock () @@ -65,9 +72,12 @@ Clock::init () _serviceable_node = node->getChild("serviceable", 0, true); _offset_node = node->getChild("offset-sec", 0, true); _sec_node = node->getChild("indicated-sec", 0, true); + _min_node = node->getChild("indicated-min", 0, true); + _hour_node = node->getChild("indicated-hour", 0, true); + _lhour_node = node->getChild("local-hour", 0, true); _string_node = node->getChild("indicated-string", 0, true); - - _serviceable_node->setBoolValue(true); + _string_node1 = node->getChild("indicated-short-string", 0, true); + _string_node2 = node->getChild("local-short-string", 0, true); } void @@ -86,6 +96,12 @@ Clock::update (double delta_time_sec) int min = t->tm_min; int sec = t->tm_sec; + // compute local time zone hour + int tzoffset_hours = globals->get_time_params()->get_local_offset() / 3600; + int lhour = hour + tzoffset_hours; + if ( lhour < 0 ) { lhour += 24; } + if ( lhour >= 24 ) { lhour -= 24; } + long gmt = (hour * 60 + min) * 60 + sec; int offset = _offset_node->getLongValue(); @@ -124,7 +140,20 @@ Clock::update (double delta_time_sec) sprintf(_indicated_string, "%02d:%02d:%02d", hour, min, sec); _string_node->setStringValue(_indicated_string); + sprintf(_indicated_short_string, "%02d:%02d", hour, min); + _string_node1->setStringValue(_indicated_short_string); + sprintf(_local_short_string, "%02d:%02d", lhour, min); + _string_node2->setStringValue(_local_short_string); _is_serviceable = true; + + _indicated_min = min; + _min_node->setLongValue(_indicated_min); + _indicated_hour = hour; + _hour_node->setLongValue(_indicated_hour); + _local_hour = lhour; + _lhour_node->setLongValue(_local_hour); + + }