summaryrefslogtreecommitdiff
path: root/src/PowderToySDL.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-06 15:53:59 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-06 15:53:59 (GMT)
commit72d98036a55847dfe13562f4517a1e352deb3b99 (patch)
treea098eac821046a4977fbfd6e1b0e16160d80ef83 /src/PowderToySDL.cpp
parent1b1963932e6c6647bdc029d244dce27ff66e12cb (diff)
downloadpowder-72d98036a55847dfe13562f4517a1e352deb3b99.zip
powder-72d98036a55847dfe13562f4517a1e352deb3b99.tar.gz
Parsing commandline arguments
Diffstat (limited to 'src/PowderToySDL.cpp')
-rw-r--r--src/PowderToySDL.cpp68
1 files changed, 66 insertions, 2 deletions
diff --git a/src/PowderToySDL.cpp b/src/PowderToySDL.cpp
index a43bd01..8fb9ea0 100644
--- a/src/PowderToySDL.cpp
+++ b/src/PowderToySDL.cpp
@@ -1,5 +1,7 @@
#ifdef USE_SDL
+#include <map>
+#include <string>
#include <time.h>
#include "SDL.h"
#ifdef WIN32
@@ -22,6 +24,7 @@
#include "interface/Label.h"
#include "simulation/SaveRenderer.h"
#include "client/Client.h"
+#include "Misc.h"
#include "game/GameController.h"
#include "game/GameView.h"
@@ -128,6 +131,67 @@ SDL_Surface * SDLOpen()
return surface;
}
+std::map<std::string, std::string> readArguments(int argc, char * argv[])
+{
+ std::map<std::string, std::string> arguments;
+
+ //Defaults
+ arguments["scale"] = "";
+ arguments["proxy"] = "";
+ arguments["nohud"] = "false";
+ arguments["sound"] = "false";
+ arguments["kiosk"] = "false";
+ arguments["scripts"] = "false";
+ arguments["open"] = "";
+ arguments["ddir"] = "";
+ arguments["ptsave"] = "";
+
+ for (int i=1; i<argc; i++)
+ {
+ if (!strncmp(argv[i], "scale:", 6) && argv[i]+6)
+ {
+ arguments["scale"] = std::string(argv[i]+6);
+ }
+ else if (!strncmp(argv[i], "proxy:", 6) && argv[i]+6)
+ {
+ arguments["proxy"] = std::string(argv[i]+6);
+ }
+ else if (!strncmp(argv[i], "nohud", 5))
+ {
+ arguments["nohud"] = "true";
+ }
+ else if (!strncmp(argv[i], "kiosk", 5))
+ {
+ arguments["kiosk"] = "true";
+ }
+ else if (!strncmp(argv[i], "sound", 5))
+ {
+ arguments["sound"] = "true";
+ }
+ else if (!strncmp(argv[i], "scripts", 8))
+ {
+ arguments["scripts"] = "true";
+ }
+ else if (!strncmp(argv[i], "open", 5) && i+1<argc)
+ {
+ arguments["open"] = std::string(argv[i+1]);;
+ i++;
+ }
+ else if (!strncmp(argv[i], "ddir", 5) && i+1<argc)
+ {
+ arguments["ddir"] = std::string(argv[i+1]);
+ i++;
+ }
+ else if (!strncmp(argv[i], "ptsave", 7) && i+1<argc)
+ {
+ arguments["ptsave"] = std::string(argv[i+1]);
+ i++;
+ break;
+ }
+ }
+ return arguments;
+}
+
int main(int argc, char * argv[])
{
int elapsedTime = 0, currentTime = 0, lastTime = 0, currentFrame = 0;
@@ -135,6 +199,8 @@ int main(int argc, char * argv[])
float fps = 0, delta = 1.0f, inputScale = 1.0f;
float currentWidth = XRES+BARSIZE, currentHeight = YRES+MENUSIZE;
+ std::map<std::string, std::string> arguments = readArguments(argc, argv);
+
sdl_scrn = SDLOpen();
#ifdef OGLI
SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
@@ -151,8 +217,6 @@ int main(int argc, char * argv[])
GameController * gameController = new GameController();
engine->ShowWindow(gameController->GetView());
- //new ErrorMessage("Error", "This is a test error message");
-
SDL_Event event;
while(engine->Running())
{