--- a/src/Application.cc Thu Jan 22 01:53:05 2009 +0200
+++ b/src/Application.cc Thu Jan 22 02:38:33 2009 +0200
@@ -28,6 +28,7 @@
ARG_VERSION = 0xff02,
ARG_TERRAIN_SEED = 0xff03,
ARG_TERRAIN_SIZE = 0xff04,
+ ARG_LOG_LEVEL = 0xff05,
};
@@ -90,6 +91,9 @@
args.add_group("General");
+ args.add_option(ARG_LOG_LEVEL, "log-level", "LEVEL",
+ "set maximum log level to one of FATAL/ERROR/WARN/INFO/DEBUG");
+
args.add_option(ARG_HELP, "help", "",
"display argument help and exit");
@@ -116,6 +120,10 @@
args.print_help();
return false;
+ case ARG_LOG_LEVEL:
+ engine.log_level = parse_arg_loglevel(args.get_argument(), "--log-level");
+ break;
+
#if NETWORK_ENABLED
case ARG_PORT:
net_port = args.get_argument();
@@ -218,6 +226,27 @@
return PixelDimensions(w, h);
}
+LogLevel Main::parse_arg_loglevel (const std::string &arg_val, const char *arg_name) {
+ // brute-force if-elseif
+ if (arg_val == "FATAL")
+ return FATAL;
+
+ else if (arg_val == "ERROR")
+ return ERROR;
+
+ else if (arg_val == "WARN")
+ return WARN;
+
+ else if (arg_val == "INFO")
+ return INFO;
+
+ else if (arg_val == "DEBUG")
+ return DEBUG;
+
+ else
+ throw ArgumentError(std::string() + "invalid log level for " + arg_name + ": " + arg_val);
+}
+
#if GRAPHICS_ENABLED
void Main::dump_display_modes (void) {
// get the list of display modes from graphics
@@ -271,7 +300,7 @@
return 0;
// our engine
- Engine engine;
+ Engine engine(this->engine);
// setup game unless client
if (net_connect.empty())