X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMainLayer.cc;fp=src%2FMainLayer.cc;h=0000000000000000000000000000000000000000;hp=ad2dbbc5f22d9a607f69327783032eee338c4236;hb=987971a961454d97082c6448fdc0bbeb540281bb;hpb=be9ebc1104574e5e81e19c5caba0c23b54df826d diff --git a/src/MainLayer.cc b/src/MainLayer.cc deleted file mode 100644 index ad2dbbc..0000000 --- a/src/MainLayer.cc +++ /dev/null @@ -1,360 +0,0 @@ - -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ - -#include // atexit, getenv -#include -#include -#include // access - -#include -#include -#include -#include -#include -#include -#include - -#include "ErrorHandler.hh" -#include "GameLayer.hh" -#include "MainLayer.hh" -#include "TitleLayer.hh" - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include "version.h" - - -MainLayer::MainLayer() -{ - mDispatchHandler = Mf::engine.addHandler("video.newcontext", - boost::bind(&MainLayer::contextRecreated, this)); - setupGL(); -} - -void MainLayer::pushedOntoEngine() -{ - //Mf::Scalar coeff[] = {0.0, 1.0}; - //Mf::Lerp interp(coeff, 0.25); - - //Mf::LayerP gameLayer = GameLayer::alloc(); - //Mf::Transition::Ptr transition = - //Mf::Transition::alloc(gameLayer, Mf::LayerP(), interp); - //engine->push(transition); - //engine->push(GameLayer::alloc()); - Mf::engine.push(TitleLayer::alloc()); -} - - -void MainLayer::update(Mf::Scalar t, Mf::Scalar dt) -{ - if (Mf::engine.getSize() == 1) - { - // this is the only layer left on the stack - //Mf::engine.push(TitleLayer::alloc()); - Mf::engine.clear(); - } -} - -void MainLayer::draw(Mf::Scalar alpha) const -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -bool MainLayer::handleEvent(const Mf::Event& event) -{ - switch (event.type) - { - case SDL_KEYUP: - if (event.key.keysym.sym == SDLK_ESCAPE) - { - Mf::engine.clear(); - } - else if (event.key.keysym.sym == SDLK_f) - { - Mf::engine.getVideo()->toggleFull(); - } - else if (event.key.keysym.sym == SDLK_l) - { - Mf::VideoP video = Mf::engine.getVideo(); - video->toggleCursorGrab(); - video->toggleCursorVisible(); - } - break; - - case SDL_VIDEORESIZE: - glViewport(0, 0, event.resize.w, event.resize.h); - break; - - case SDL_QUIT: - Mf::engine.clear(); - break; - } - - return false; -} - - -void MainLayer::setupGL() -{ - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - - glEnable(GL_LINE_SMOOTH); - glEnable(GL_POLYGON_SMOOTH); - glShadeModel(GL_SMOOTH); - - //glEnable(GL_BLEND); - //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GREATER, 0.0); - - glClearColor(0.0, 0.0, 0.0, 1.0); - - //glMatrixMode(GL_PROJECTION); - //glLoadIdentity(); - //Mf::Scalar ratio = Mf::engine.getVideo()->getWidth() / - //Mf::engine.getVideo()->getHeight(); - //gluPerspective(60.0, ratio, 1.0, 250.0); - - //glMatrixMode(GL_MODELVIEW); -} - -void MainLayer::contextRecreated() -{ - // whenever the context is destroyed and a new one created, it probably - // won't contain our state so we need to set that up again - setupGL(); -} - - - -void printUsage() -{ - 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 - << " maxfps=num" << std::endl - << " the maximum number of frames per second" << std::endl - << std::endl - << "See documentation for more options." << std::endl; -} - -void printInfo(int argc, char* argv[]) -{ - std::string assets; - std::string datadir; - std::string config; - - assets.assign(YOINK_DATADIR); - int accessible = access(assets.c_str(), R_OK); - if (accessible != 0) assets += " (no access)"; - - char* temp = getenv("YOINK_DATADIR"); - if (temp) - { - datadir = temp; - accessible = access(temp, R_OK); - if (accessible != 0) datadir += " (no access)"; - } - - temp = getenv("YOINKRC"); - if (temp) - { - config = temp; - accessible = access(temp, R_OK); - if (accessible != 0) config += " (no access)"; - } - - std::cout << " Executable: " << argv[0] << std::endl - << " Version: "VERSION << std::endl - << " Built: " << COMPILE_TIME << std::endl - << " Compiler: "COMPILER_STRING << std::endl - << " Assets: " << assets << std::endl - << "Build options: " -#ifdef NDEBUG - << "-" -#endif - << "debug " -#ifndef USE_DOUBLE_PRECISION - << "-" -#endif - << "double-precision " -#ifndef USE_GTK - << "-" -#endif - << "gtk " -#ifndef PROFILING_ENABLED - << "-" -#endif - << "profile " -#ifndef USE_QT4 - << "-" -#endif - << "qt4 " -#ifndef USE_THREADS - << "-" -#endif - << "threads" << std::endl - << " YOINKRC: " << config << std::endl - << "YOINK_DATADIR: " << datadir << std::endl; -} - -void goodbye() -{ - std::cout << std::endl << "Goodbye..." << std::endl << std::endl; -} - - -int main(int argc, char* argv[]) -{ - if (argc > 1) - { - std::string arg(argv[1]); - if (arg == "-h" || arg == "--help") - { - printUsage(); - return 0; - } - else if (arg == "-i" || arg == "--info") - { - printInfo(argc, argv); - return 0; - } - } - - - std::cout << std::endl << PACKAGE_STRING << std::endl - << "Compiled " << __TIME__ " " __DATE__ << std::endl - << "Send patches and bug reports to <" - PACKAGE_BUGREPORT << ">." << std::endl << std::endl; - - atexit(goodbye); - - - // make sure the engine started up okay - const Mf::Error& error = Mf::engine.getError(); - if (error.isError()) - { - Mf::ModalDialog dialog; - dialog.title = PACKAGE_STRING; - dialog.text1 = "Uh oh!"; - dialog.text2 = getErrorString(error); - dialog.type = Mf::ModalDialog::CRITICAL; - dialog.run(); - - // openal errors are not fatal - if (error.code() != Mf::Error::OPENAL_INIT) return 1; - } - - - // Add search paths; they should be searched in this order: - // 1. YOINK_DATADIR (environment) - // 2. YOINK_DATADIR (configure) - - char* dataDir = getenv("YOINK_DATADIR"); - if (dataDir) - { - Mf::Resource::addSearchPath(dataDir); - } - - Mf::Resource::addSearchPath(YOINK_DATADIR); - - - // Build the list of config files to search for, in this order: - // 1. YOINK_DATADIR/yoinkrc - // 2. /etc/yoinkrc (not for Windows) - // 3. $HOME/.yoinkrc - // 4. YOINKRC (environment) - - std::string configFiles = Mf::Resource::getPath("yoinkrc"); -#if !defined(_WIN32) && !defined(__WIN32__) - configFiles += ":/etc/yoinkrc"; -#endif - configFiles += ":$HOME/.yoinkrc"; - - char* configFile = getenv("YOINKRC"); - if (configFile) - { - configFiles += ":"; - configFiles += configFile; - } - - Mf::Settings& settings = Mf::Settings::getInstance(); - settings.loadFromFile(configFiles); - settings.parseArgs(argc, argv); - - Mf::Log::Level logLevel; - if (settings.get("loglevel", logLevel)) Mf::Log::setLevel(logLevel); - - Mf::engine.initWithSettings(settings); - - std::string iconFile = Mf::Resource::getPath(PACKAGE".png"); - - - try - { - Mf::engine.setVideo(Mf::Video::alloc(PACKAGE_STRING, iconFile)); - Mf::engine.push(MainLayer::alloc()); - - Mf::engine.run(); - } - catch (const Mf::Error& error) - { - Mf::ModalDialog dialog; - dialog.title = PACKAGE_STRING; - dialog.text1 = "Unhandled Exception"; - dialog.text2 = getErrorString(error); - dialog.type = Mf::ModalDialog::CRITICAL; - dialog.run(); - - return 1; - } - - return 0; -} - - -/** vim: set ts=4 sw=4 tw=80: *************************************************/ -