]> git.mxchange.org Git - flightgear.git/commitdiff
Added code to support a richer switch definition syntax. Currently we only
authorcurt <curt>
Mon, 17 Nov 2003 21:10:47 +0000 (21:10 +0000)
committercurt <curt>
Mon, 17 Nov 2003 21:10:47 +0000 (21:10 +0000)
support an attached property name and an intial state, but this can easily
be extended to configure a switch to be a circuit breaker with a max rating,
etc.

src/Systems/electrical.cxx
src/Systems/electrical.hxx

index 8e6cbc2b90d42eee8eeb325056a40ea0f37c986d..41396cc51b5c55f7e675b9d89c30c53f1da0a639 100644 (file)
@@ -132,6 +132,33 @@ FGElectricalOutput::FGElectricalOutput ( SGPropertyNode *node ) {
 }  
 
 
+FGElectricalSwitch::FGElectricalSwitch( SGPropertyNode *node ) :
+    switch_node( NULL ),
+    rating_amps( 0.0f ),
+    circuit_breaker( false )
+{
+    bool initial_state = true;
+    int i;
+    for ( i = 0; i < node->nChildren(); ++i ) {
+        SGPropertyNode *child = node->getChild(i);
+        string cname = child->getName();
+        string cval = child->getStringValue();
+        if ( cname == "prop" ) {
+            switch_node = fgGetNode( cval.c_str(), true );
+            cout << "switch node = " << cval << endl;
+        } else if ( cname == "initial-state" ) {
+            if ( cval == "off" || cval == "false" ) {
+                initial_state = false;
+            }
+            cout << "initial state = " << initial_state << endl;
+        }            
+    }
+
+    switch_node->setBoolValue( initial_state );
+    cout << "  value = " << switch_node->getBoolValue() << endl;
+}
+
+
 FGElectricalConnector::FGElectricalConnector ( SGPropertyNode *node,
                                                FGElectricalSystem *es ) {
     kind = FG_CONNECTOR;
@@ -179,28 +206,14 @@ FGElectricalConnector::FGElectricalConnector ( SGPropertyNode *node,
         } else if ( cname == "switch" ) {
             // set default value of switch to true
             // cout << "Switch = " << child->getStringValue() << endl;
-            fgSetBool( child->getStringValue(), true );
-            FGElectricalSwitch s( fgGetNode(child->getStringValue(), true),
-                                  100.0f,
-                                  false );
+            FGElectricalSwitch s( child );
+            // FGElectricalSwitch s( fgGetNode(child->getStringValue(), true),
+            //                       100.0f,
+            //                       false );
+            // fgSetBool( child->getStringValue(), true );
             add_switch( s );
         }
     }
-
-    // do a 2nd pass to pick up starting switch value if specified
-    for ( i = 0; i < node->nChildren(); ++i ) {
-        SGPropertyNode *child = node->getChild(i);
-        string cname = child->getName();
-        string cval = child->getStringValue();
-        // cout << "  " << cname << " = " << cval << endl;
-        if ( cname == "initial-state" ) {
-            if ( cval == "off" ) {
-                set_switches( false );
-            } else {
-                set_switches( true );
-            }
-        }
-    }
 }  
 
 
index 16a86ba8e5c6650eb19a1413449a08a898f6b3a1..1a04342227caebe4485ccbc14c215707b5e88ae4 100644 (file)
@@ -178,11 +178,7 @@ private:
 
 public:
 
-    FGElectricalSwitch( SGPropertyNode *node, float rate, bool cb ) {
-        switch_node = node;
-        rating_amps = rate;
-        circuit_breaker = cb;
-    }
+    FGElectricalSwitch( SGPropertyNode *node );
 
     ~FGElectricalSwitch() { };