From ae5cf05827d6122f9cec7bbe279ecf671b5fcf41 Mon Sep 17 00:00:00 2001 From: curt Date: Thu, 17 Nov 2005 22:07:27 +0000 Subject: [PATCH] Clock also able to report local time. --- src/Instrumentation/clock.cxx | 19 +++++++++++++++++-- src/Instrumentation/clock.hxx | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Instrumentation/clock.cxx b/src/Instrumentation/clock.cxx index 736beff38..6a584bb58 100644 --- a/src/Instrumentation/clock.cxx +++ b/src/Instrumentation/clock.cxx @@ -19,6 +19,7 @@ Clock::Clock ( SGPropertyNode *node ) _indicated_sec(0), _indicated_min(0), _indicated_hour(0), + _local_hour(0), _standstill_offset(0), name("clock"), num(0) @@ -70,8 +71,10 @@ Clock::init () _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); _string_node1 = node->getChild("indicated-short-string", 0, true); + _string_node2 = node->getChild("local-short-string", 0, true); } void @@ -90,6 +93,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(); @@ -130,12 +139,18 @@ Clock::update (double delta_time_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; + _indicated_min = min; _min_node->setLongValue(_indicated_min); - _indicated_hour = hour; + _indicated_hour = hour; _hour_node->setLongValue(_indicated_hour); + _local_hour = lhour; + _lhour_node->setLongValue(_local_hour); + + } diff --git a/src/Instrumentation/clock.hxx b/src/Instrumentation/clock.hxx index 19c72af9c..b9d0a7da2 100644 --- a/src/Instrumentation/clock.hxx +++ b/src/Instrumentation/clock.hxx @@ -50,8 +50,10 @@ private: long _indicated_sec; long _indicated_min; long _indicated_hour; + long _local_hour; char _indicated_string[16]; char _indicated_short_string[16]; + char _local_short_string[16]; long _standstill_offset; string name; @@ -61,9 +63,11 @@ private: SGPropertyNode_ptr _offset_node; SGPropertyNode_ptr _sec_node; SGPropertyNode_ptr _hour_node; + SGPropertyNode_ptr _lhour_node; SGPropertyNode_ptr _min_node; SGPropertyNode_ptr _string_node; SGPropertyNode_ptr _string_node1; + SGPropertyNode_ptr _string_node2; };