}
SGPath config = globals->resolve_maybe_aircraft_path(pathNode->getStringValue());
-
- SG_LOG( SG_ALL, SG_INFO, "Reading property-rule configuration from " << config.str() );
-
- try {
- SGPropertyNode_ptr root = new SGPropertyNode();
- readProperties( config.str(), root );
-
- SG_LOG( SG_AUTOPILOT, SG_INFO, "adding property-rule subsystem " << apName );
- FGXMLAutopilot::Autopilot * ap = new FGXMLAutopilot::Autopilot( autopilotNodes[i], root );
- ap->set_name( apName );
- set_subsystem( apName, ap );
- _autopilotNames.push_back( apName );
-
- } catch (const sg_exception& e) {
- SG_LOG( SG_AUTOPILOT, SG_ALERT, "Failed to load property-rule configuration: "
- << config.str() << ":" << e.getMessage() );
- continue;
+ if (config.isNull())
+ {
+ SG_LOG( SG_ALL, SG_ALERT, "Cannot find property-rule configuration file '" << pathNode->getStringValue() << "'." );
+ }
+ else
+ {
+ SG_LOG( SG_ALL, SG_INFO, "Reading property-rule configuration from " << config.str() );
+
+ try {
+ SGPropertyNode_ptr root = new SGPropertyNode();
+ readProperties( config.str(), root );
+
+ SG_LOG( SG_AUTOPILOT, SG_INFO, "adding property-rule subsystem " << apName );
+ FGXMLAutopilot::Autopilot * ap = new FGXMLAutopilot::Autopilot( autopilotNodes[i], root );
+ ap->set_name( apName );
+ set_subsystem( apName, ap );
+ _autopilotNames.push_back( apName );
+
+ } catch (const sg_exception& e) {
+ SG_LOG( SG_AUTOPILOT, SG_ALERT, "Failed to load property-rule configuration: "
+ << config.str() << ":" << e.getMessage() );
+ continue;
+ }
}
}
}
const int MAXNEST = 10;
SGPath path(globals->resolve_maybe_aircraft_path(file));
+ if (path.isNull())
+ {
+ SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot find configuration file '" << file << "'.");
+ return 0x2;
+ }
if (!level) {
SG_LOG(SG_INPUT, TREE, endl << "load " << file);
int ret = 0;
ifstream input(path.c_str());
if (!input.good()) {
- SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot read configuration from " << path.str());
+ SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot read configuration from '" << path.c_str() << "'");
return 0x4;
}
std::string icao = arg->getStringValue("icao");
if (icao.empty()) {
if (file.isRelative()) {
- file = globals->resolve_maybe_aircraft_path(file.str());
+ SGPath absPath = globals->resolve_maybe_aircraft_path(file.str());
+ if (!absPath.isNull())
+ file = absPath;
+ else
+ {
+ SG_LOG(SG_IO, SG_ALERT, "loadxml: Cannot find XML property file '"
+ << file.str() << "'.");
+ return false;
+ }
}
} else {
if (!XMLLoader::findAirportData(icao, file.str(), file)) {
fgSetString("/sim/startup/program-name", namestring);
delete[] namestring;
- SGPath tpath( globals->get_fg_root() );
- if (splash_texture == NULL || !strcmp(splash_texture, "")) {
+ SGPath tpath;
+ if (splash_texture && strcmp(splash_texture, "")) {
+ tpath = globals->resolve_maybe_aircraft_path(splash_texture);
+ if (tpath.isNull())
+ {
+ SG_LOG( SG_GENERAL, SG_ALERT, "Cannot find splash screen file '" << splash_texture
+ << "'. Using default." );
+ }
+ }
+
+ if (tpath.isNull()) {
+ // no splash screen specified - select random image
+ tpath = globals->get_fg_root();
// load in the texture data
int num = (int)(sg_random() * 5.0 + 1.0);
char num_str[5];
tpath.append( "Textures/Splash" );
tpath.concat( num_str );
tpath.concat( ".png" );
- } else {
- tpath = globals->resolve_maybe_aircraft_path(splash_texture);
}
-
+
osg::Texture2D* splashTexture = new osg::Texture2D;
splashTexture->setImage(osgDB::readImageFile(tpath.c_str()));
if (!p.isAbsolute() || !p.exists())
{
p = globals->resolve_maybe_aircraft_path(file);
+ if (p.isNull())
+ {
+ SG_LOG(SG_NASAL, SG_ALERT, "Cannot find Nasal script '" <<
+ file << "' for module '" << module << "'.");
+ }
}
- ok &= loadModule(p, module);
+ ok &= p.isNull() ? false : loadModule(p, module);
j++;
}