]> git.localhorst.tv Git - l2e.git/blobdiff - src/main.cpp
removed some leftover lines from linker branch
[l2e.git] / src / main.cpp
index 97706269dcedf978f7ee12d9a90f79763ad6f67c..8f19f435bfa25c3335222094c0ff01342d5066d4 100644 (file)
@@ -26,7 +26,6 @@
 #include "graphics/Menu.h"
 #include "graphics/SimpleAnimation.h"
 #include "graphics/Sprite.h"
-#include "loader/Compiler.h"
 #include "loader/Interpreter.h"
 #include "loader/ParsedSource.h"
 #include "loader/Parser.h"
@@ -36,6 +35,7 @@
 #include "sdl/InitSDL.h"
 
 #include <cstdlib>
+#include <cstring>
 #include <ctime>
 #include <exception>
 #include <iostream>
@@ -63,7 +63,6 @@ using graphics::Gauge;
 using graphics::Menu;
 using graphics::SimpleAnimation;
 using graphics::Sprite;
-using loader::Compiler;
 using loader::Interpreter;
 using loader::ParsedSource;
 using loader::Parser;
@@ -113,34 +112,36 @@ int main(int argc, char **argv) {
                ParsedSource source;
 
                for (vector<char *>::const_iterator i(args.Infiles().begin()), end(args.Infiles().end()); i != end; ++i) {
-                       string filePath(*i);
-                       switch (filePath[filePath.size() - 1]) {
-                               case 'o':
-                                       // TODO: load object file
-                                       break;
-                               case 's':
-                                       Parser(filePath, source).Parse();
-                                       break;
-                               default:
-                                       throw std::runtime_error("don't know what to do with " + filePath);
-                       }
+                       Parser(*i, source).Parse();
                }
 
-//             Parser("test-data/test.l2s", source).Parse();
-//             Parser("test-data/ikaris.l2s", source).Parse();
-//             Parser("test-data/items.l2s", source).Parse();
-//             Parser("test-data/spells.l2s", source).Parse();
-//             Parser("test-data/constants.l2s", source).Parse();
+               switch (args.DetectRunLevel()) {
+                       case Arguments::WRITE:
+                       {
+                               int length(std::strlen(args.OutfilePath()));
+                               switch (args.OutfilePath()[length - 1]) {
+                                       case 'h': {
+                                               std::ofstream outstream(args.OutfilePath());
+                                               source.WriteHeader(outstream);
+                                               break;
+                                       }
+                                       default: {
+                                               throw std::runtime_error(string("don't know how to write file ") + args.OutfilePath());
+                                       }
+                               }
+                               return 0;
+                       }
+                       case Arguments::DUMP: {
+                               std::cout << source << std::endl;
+                               return 0;
+                       }
+                       case Arguments::PLAY:
+                               break;
+               }
 
                Interpreter intp(source);
                intp.ReadSource();
 
-               if (args.OutfileSet()) {
-                       std::ofstream testOut(args.OutfilePath());
-                       Compiler(intp).Write(testOut);
-                       return 0;
-               }
-
                int battleResId(TypeDescription::GetTypeId("BattleResources"));
                int heroId(TypeDescription::GetTypeId("Hero"));
                int itemId(TypeDescription::GetTypeId("Item"));