Introduced FileSystem and Out classes
[openstranded.git] / src / main.cc
blob3114356913de4f2918b08906ae64b35fa1c48b5f
2 #include "eal/engine.hh"
3 #include "settings.hh"
4 #include "kingdom.hh"
5 #include "map.hh"
6 #include "output.hh"
7 #include "filesystem.hh"
8 #ifdef HAVE_IRRLICHT
9 #include "eal/irrlicht/engine.hh"
10 #endif
11 #ifdef HAVE_HORDE3D
12 #include "eal/horde3d/engine.hh"
13 #endif
15 #include <iostream>
17 int
18 main (int argc, char **argv)
20 // Get mod
21 std::string mod = "standard";
22 if (argc > 1)
24 mod = argv[1];
26 FileSystem::setModName(mod);
28 // Setup core services
29 Out::setConsoleFlags(Out::FATAL | Out::ERROR | Out::WARNING | Out::DEBUG);
30 Out::setLoggingFlags(Out::NONE);
31 Out::setLogFile("openstranded.log");
33 GlobalSettings settings("settings.cfg");
34 settings.readConfigFile();
35 settings.setModName(mod);
36 try
38 // Start engine
39 std::string renderer = settings.getRenderer();
40 #if !defined(HAVE_IRRLICHT) && defined(HAVE_HORDE3D)
41 renderer = "Horde3D";
42 #endif
43 #if defined(HAVE_IRRLICHT) && !defined(HAVE_HORDE3D)
44 renderer = "Irrlicht";
45 #endif
46 if ((renderer != "Irrlicht") && (renderer != "Horde3D"))
47 renderer = "Irrlicht";
48 eal::Engine *engine = 0;
49 if (renderer == "Horde3D")
51 #ifdef HAVE_HORDE3D
52 engine = new eal::Horde3DEngine;
53 #endif
55 else if (renderer == "Irrlicht")
57 #ifdef HAVE_IRRLICHT
58 engine = new eal::IrrlichtEngine;
59 #endif
61 if (!engine)
62 throw std::string("No renderer available!");
64 Kingdom::initKingdomList(mod);
66 engine->init(&settings);
67 // Load map
68 FileInfo *mapFileInfo = FileSystem::getMapFileInfo("adventure/map02");
69 std::string filename = mapFileInfo->path;
70 delete mapFileInfo;
71 Map map;
72 map.load(filename);
73 while (true)
75 if (!eal::Engine::get()->update()) break;
78 catch (std::string e)
80 std::cerr << "Error: " << e << "\n";
81 return -1;
83 catch (...)
85 std::cerr << "Error: Unknown exception.\n";
86 return -1;
88 Kingdom::uninitKingdomList();
89 return 0;