*/
#include "app/Application.h"
+#include "app/Arguments.h"
#include "app/Input.h"
#include "battle/BattleState.h"
#include "battle/Hero.h"
#include "sdl/InitSDL.h"
#include <cstdlib>
+#include <cstring>
#include <ctime>
#include <exception>
#include <iostream>
+#include <string>
#include <SDL.h>
#include <SDL_image.h>
using app::Application;
+using app::Arguments;
using app::Input;
using battle::BattleState;
using battle::Hero;
using std::cout;
using std::endl;
using std::exception;
+using std::string;
+using std::vector;
int main(int argc, char **argv) {
const int width = 800;
Stats::CreateTypeDescription();
common::TargetingMode::CreateTypeDescription();
+ Arguments args;
+ args.Read(argc, argv);
+
ParsedSource source;
- 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();
+
+ for (vector<char *>::const_iterator i(args.Infiles().begin()), end(args.Infiles().end()); i != end; ++i) {
+ Parser(*i, 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();