// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
-//
+//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
# include <config.h>
#endif
-#ifdef HAVE_WINDOWS_H
+#ifdef HAVE_WINDOWS_H
# include <windows.h>
#endif
static FGPanelAction *
readAction (const SGPropertyNode * node, float w_scale, float h_scale)
{
+ unsigned int i, j;
+ SGPropertyNode *binding;
+ vector<SGPropertyNode_ptr>bindings = node->getChildren("binding");
+
+ // button-less actions are fired initially
+ if (!node->hasValue("w") || !node->hasValue("h")) {
+ for (i = 0; i < bindings.size(); i++) {
+ SGBinding b(bindings[i], globals->get_props());
+ b.fire();
+ }
+ return 0;
+ }
+
string name = node->getStringValue("name");
int button = node->getIntValue("button");
FGPanelAction * action = new FGPanelAction(button, x, y, w, h, repeatable);
- vector<SGPropertyNode_ptr>bindings = node->getChildren("binding");
SGPropertyNode * dest = fgGetNode("/sim/bindings/panel", true);
- SGPropertyNode *binding;
- unsigned int i, j;
for (i = 0; i < bindings.size(); i++) {
SG_LOG(SG_INPUT, SG_INFO, "Reading binding "
<< bindings[i]->getStringValue("command"));
binding = dest->getChild("binding", j, true);
copyProperties(bindings[i], binding);
- action->addBinding(new FGBinding(binding), 0);
+ action->addBinding(new SGBinding(binding, globals->get_props()), 0);
}
if (node->hasChild("mod-up")) {
binding = dest->getChild("binding", j, true);
copyProperties(bindings[i], binding);
- action->addBinding(new FGBinding(binding), 1);
+ action->addBinding(new SGBinding(binding, globals->get_props()), 1);
}
}
const SGPropertyNode * trans_table = node->getNode("interpolation");
if (trans_table != 0) {
SG_LOG( SG_COCKPIT, SG_INFO, "Found interpolation table with "
- << trans_table->nChildren() << "children" );
- t->table = new SGInterpTable();
- for(int i = 0; i < trans_table->nChildren(); i++) {
- const SGPropertyNode * node = trans_table->getChild(i);
- if (!strcmp(node->getName(), "entry")) {
- double ind = node->getDoubleValue("ind", 0.0);
- double dep = node->getDoubleValue("dep", 0.0);
- SG_LOG( SG_COCKPIT, SG_INFO, "Adding interpolation entry "
- << ind << "==>" << dep );
- t->table->addEntry(ind, dep);
- } else {
- SG_LOG( SG_COCKPIT, SG_INFO, "Skipping " << node->getName()
- << " in interpolation" );
- }
- }
+ << trans_table->nChildren() << " children" );
+ t->table = new SGInterpTable(trans_table);
} else {
t->table = 0;
}
string type = node->getStringValue("type");
int w = node->getIntValue("w", -1);
int h = node->getIntValue("h", -1);
+ bool emissive = node->getBoolValue("emissive", false);
if (w != -1)
w = int(w * w_scale);
if (h != -1)
if (type == "texture") {
FGCroppedTexture texture = readTexture(node->getNode("texture"));
layer = new FGTexturedLayer(texture, w, h);
+ if (emissive) {
+ FGTexturedLayer *tl=(FGTexturedLayer*)layer;
+ tl->setEmissive(true);
+ }
+
}
// A group of sublayers.
tlayer->setPointSize(pointSize);
// Set the font.
- string fontName = node->getStringValue("font", "default");
+ string fontName = node->getStringValue("font", "Helvetica");
tlayer->setFontName(fontName);
const SGPropertyNode * chunk_group = node->getNode("chunks");
FGPanelInstrument * instrument = readInstrument(node);
if (instrument != 0)
panel->addInstrument(instrument);
- } else if(!strcmp(node->getName(), "special-instrument")) {
+ } else if (!strcmp(node->getName(), "special-instrument")) {
//cout << "Special instrument found in instruments section!\n";
const string name = node->getStringValue("name");
- if(name == "KLN89 GPS") {
+ if (name == "KLN89 GPS") {
//cout << "Special instrument is KLN89\n";
int x = node->getIntValue("x", -1);
// Warning - hardwired size!!!
RenderArea2D* instrument = new RenderArea2D(158, 40, 158, 40, x, y);
- // FIXME: shift-F3 (panel reload) kill's us here due to duplicate subsystem!
- KLN89* gps = new KLN89(instrument);
- panel->addInstrument(gps);
- globals->add_subsystem("kln89", gps);
- //gps->init(); // init seems to get called automagically.
+ KLN89* gps = (KLN89*)globals->get_subsystem("kln89");
+ if (gps == NULL) {
+ gps = new KLN89(instrument);
+ globals->add_subsystem("kln89", gps);
+ }
+ //gps->init(); // init seems to get called automagically.
+ FGSpecialInstrument* gpsinst = new FGSpecialInstrument(gps);
+ panel->addInstrument(gpsinst);
} else {
SG_LOG( SG_COCKPIT, SG_WARN, "Unknown special instrument found" );
}