diff --git a/source/director.cpp b/source/director.cpp index 5b1ba53..6da937e 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -880,7 +880,7 @@ void Director::runDemoGame() delete demoGame; } -void Director::run() +int Director::run() { // Bucle principal while (section->name != SECTION_PROG_QUIT) @@ -916,6 +916,9 @@ void Director::run() break; } } + + const int returnCode = section->options == SECTION_OPTIONS_QUIT_NORMAL ? 0 : 1; + return returnCode; } // Asigna variables a partir de dos cadenas diff --git a/source/director.h b/source/director.h index 0eeec8f..2f7c6b5 100644 --- a/source/director.h +++ b/source/director.h @@ -122,5 +122,5 @@ public: ~Director(); // Bucle principal - void run(); + int run(); }; \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 458c398..65a8457 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -18,12 +18,12 @@ int main(int argc, char *argv[]) Director *director = new Director(argc, argv); // Bucle principal - director->run(); + const int exit = director->run(); // Destruye el objeto Director delete director; std::cout << "\nGame end" << std::endl; - return 0; + return exit; } diff --git a/source/title.cpp b/source/title.cpp index 1007444..84a91b7 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -248,6 +248,7 @@ void Title::checkInput() if (input->checkInput(input_exit, DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { section->name = SECTION_PROG_QUIT; + section->options = SECTION_OPTIONS_QUIT_NORMAL; } // Comprueba si se ha pulsado la tecla 1 o 2 para definir los controladores @@ -272,6 +273,7 @@ void Title::checkInput() { case SERVICE_EXIT: section->name = SECTION_PROG_QUIT; + section->options = SECTION_OPTIONS_QUIT_SHUTDOWN; break; case SERVICE_SHADERS: