X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMain.cc;h=8b011638735b48061d32fdafcdbf8096095bbfaa;hp=070912e7ce1a0c7acb8fb7c3e1f75adf6cb151eb;hb=574af38ed616d1adfa5e6ce35f67cda1f707f89d;hpb=af88821a172c4dfd138b91b2a5148ae50b502fa2 diff --git a/src/Main.cc b/src/Main.cc index 070912e..8b01163 100644 --- a/src/Main.cc +++ b/src/Main.cc @@ -1,23 +1,23 @@ -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +/*] Copyright (c) 2009-2011, Charles McGarvey [***************************** **] All rights reserved. * -* vi:ts=4 sw=4 tw=75 -* * Distributable under the terms and conditions of the 2-clause BSD license; * see the file COPYING for a complete text of the license. * -**************************************************************************/ +*****************************************************************************/ +#if HAVE_CONFIG_H #include "config.h" +#endif -#include // atexit +#include // atexit #include #include #include #include -#if !defined(__WIN32) +#if PLATFORM_POSIX #include #else inline int isatty(int dummy) { return 0; } @@ -36,7 +36,6 @@ inline int isatty(int dummy) { return 0; } #include #include "Main.hh" -#include "version.h" Main::Main(moof::settings& settings) : @@ -54,7 +53,6 @@ Main::Main(moof::settings& settings) : #endif } - void Main::update(moof::scalar t, moof::scalar dt) { yoink.update(t, dt); @@ -79,35 +77,31 @@ void Main::handle_event(const moof::event& event) switch (event.type) { - case SDL_KEYUP: - - if (event.key.keysym.sym == SDLK_f) - { - moof::video::current()->toggle_fullscreen(); - } - else if (event.key.keysym.sym == SDLK_l) - { - moof::video::current()->toggle_cursor_captured(); - moof::video::current()->toggle_cursor_visible(); - } - else if (event.key.keysym.sym == SDLK_ESCAPE) - { - stop(); - } - break; - - case SDL_VIDEORESIZE: - - glViewport(0, 0, event.resize.w, event.resize.h); - break; - - case SDL_QUIT: - + case SDL_KEYUP: + if (event.key.keysym.sym == SDLK_f) + { + moof::video::current()->toggle_fullscreen(); + } + else if (event.key.keysym.sym == SDLK_l) + { + moof::video::current()->toggle_cursor_captured(); + moof::video::current()->toggle_cursor_visible(); + } + else if (event.key.keysym.sym == SDLK_ESCAPE) + { stop(); + } + break; + + case SDL_VIDEORESIZE: + glViewport(0, 0, event.resize.w, event.resize.h); + break; + + case SDL_QUIT: + stop(); } } - std::string Main::search_paths() { // Add search paths; they should be searched in this order: @@ -122,6 +116,8 @@ std::string Main::search_paths() path += ":"; } path += YOINK_DATADIR; + path += ":"; + path += "data"; return path; } @@ -136,7 +132,7 @@ std::string Main::config_paths() std::string path = moof::resource::find_file("yoinkrc"); -#if !defined(_WIN32) +#if PLATFORM_POSIX path += ":/etc/yoinkrc"; #endif path += ":$HOME/.yoinkrc"; @@ -151,7 +147,6 @@ std::string Main::config_paths() return path; } - void Main::setup_opengl() { glEnable(GL_TEXTURE_2D); @@ -186,130 +181,36 @@ void Main::setup_opengl() glLightfv(GL_LIGHT0, GL_SPECULAR, spec); } - void Main::print_usage() { std::cout << "Usage: " - << PACKAGE" [-h|--help] [-i|--info] [OPTION=VALUE]..." - << std::endl - << "The alien-smashing action game." << std::endl - << std::endl - << "Options:" << std::endl - << " -h, --help" << std::endl - << " show this help and exit" << std::endl - << " -i, --info" << std::endl - << " show version and build information" << std::endl - << " detail=1|2|3" << std::endl - << " the level of detail of game scenes" << std::endl - << " fullscreen=true|false" << std::endl - << " if true, uses the entire display" << std::endl - << " framerate=num" << std::endl - << " number of frames to draw per second" << std::endl - << std::endl - << "See documentation for more options." << std::endl; + << PACKAGE" [-h|--help] [-i|--info] [OPTION=VALUE]..." + << std::endl + << "The alien-smashing action game." << std::endl + << std::endl + << "Options:" << std::endl + << " -h, --help" << std::endl + << " show this help and exit" << std::endl + << " -i, --info" << std::endl + << " show version and build information" << std::endl + << " detail=1|2|3" << std::endl + << " the level of detail of game scenes" << std::endl + << " fullscreen=true|false" << std::endl + << " if true, uses the entire display" << std::endl + << " framerate=num" << std::endl + << " number of frames to draw per second" << std::endl + << std::endl + << "See documentation for more options." << std::endl; } - void Main::print_info(int argc, char* argv[]) { - bool color = (isatty(1) == 1); - - stlplus::env_vector environment; - - std::string assets; - assets.assign(YOINK_DATADIR); - if (!stlplus::file_readable(assets)) - { - assets += " "; - if (color) assets += "\033[1;91m"; - assets += "(no access)"; - if (color) assets += "\033[0m"; - } - - std::string datadir = environment["YOINK_DATADIR"]; - if (!datadir.empty()) - { - if (!stlplus::folder_readable(datadir)) - { - datadir += " "; - if (color) datadir += "\033[1;91m"; - datadir += "(no access)"; - if (color) datadir += "\033[0m"; - } - } - - std::string rc_file = environment["YOINKRC"]; - if (!rc_file.empty()) - { - if (!stlplus::file_readable(rc_file)) rc_file += " (no access)"; - } - - std::cout << " Executable: " << argv[0] << std::endl -#ifdef YOINK_GITHEAD - << " Commit: "YOINK_GITHEAD << std::endl -#endif - << " Version: " << PACKAGE_VERSION << std::endl - << " Built: " << COMPILE_TIME << std::endl - << " Compiler: " << COMPILER_STRING << std::endl - << " Assets: " << assets << std::endl - << "Build options: "; - -#if ENABLE_CLOCK_GETTIME - print_option("clock_gettime", true); -#else - print_option("clock_gettime", false); -#endif -#if DEBUG - print_option("debug", true); -#else - print_option("debug", false); -#endif -#if ENABLE_DOUBLE_PRECISION - print_option("double", true); -#else - print_option("double", false); -#endif -#if WITH_GTK - print_option("gtk", true); -#else - print_option("gtk", false); -#endif -#if ENABLE_HOTLOADING - print_option("hotload", true); -#else - print_option("hotload", false); -#endif -#if ENABLE_PROFILING - print_option("profile", true); +#if INCLUDE_CONFIG_FILE + extern char data_config_mk[]; + std::cout << data_config_mk; #else - print_option("profile", false); + std::cout << std::endl << "Configuration not included." << std::endl; #endif -#if WITH_QT4 - print_option("qt4", true); -#else - print_option("qt4", false); -#endif -#if ENABLE_THREADS - print_option("threads", true); -#else - print_option("threads", false); -#endif - std::cout << std::endl; - std::cout << " YOINKRC: " << rc_file << std::endl - << "YOINK_DATADIR: " << datadir << std::endl; -} - -void Main::print_option(const std::string& option, bool enabled) -{ - if (isatty(1) == 1) - { - if (enabled) std::cout << "\033[1;94m"; - else std::cout << "\033[1m"; - } - if (!enabled) std::cout << "-"; - std::cout << option; - if (isatty(1) == 1) std::cout << "\033[0m"; - std::cout << " "; } @@ -317,9 +218,9 @@ void hello() { if (isatty(1) == 1) std::cout << "\033[94m"; std::cout << std::endl << PACKAGE_STRING << std::endl - << "Compiled " << __TIME__ " " __DATE__ << std::endl - << "Send patches and bug reports to <" - PACKAGE_BUGREPORT << ">." << std::endl << moof::log::endl; + << "Compiled " << __TIME__" "__DATE__ << std::endl + << "Send patches and bug reports to <"PACKAGE_BUGREPORT">." + << std::endl << moof::log::endl; } void goodbye() @@ -331,8 +232,6 @@ void goodbye() int main(int argc, char* argv[]) { - moof::backend backend; - if (argc > 1) { std::string arg(argv[1]); @@ -351,6 +250,8 @@ int main(int argc, char* argv[]) hello(); atexit(goodbye); + moof::backend backend; + moof::resource::set_search_paths(Main::search_paths()); moof::settings settings(argc, argv, Main::config_paths()); @@ -361,7 +262,7 @@ int main(int argc, char* argv[]) try { - moof::image_handle icon(PACKAGE, "png"); + moof::image_handle icon("yoink", "png"); if (icon) icon->set_as_icon(); else moof::log_error("no icon loaded"); icon.unload(); @@ -376,18 +277,16 @@ int main(int argc, char* argv[]) catch (const std::exception& e) { moof::modal_dialog dialog(moof::modal_dialog::error, - PACKAGE_STRING, "unhandled exception", - e.what()); + PACKAGE_STRING, "unhandled exception", + e.what()); dialog.run(); } catch (const char* e) { moof::modal_dialog dialog(moof::modal_dialog::error, - PACKAGE_STRING, "unhandled exception", - e); + PACKAGE_STRING, "unhandled exception", e); dialog.run(); } - return 1; }