#include "ErrorHandler.hh"
#include "GameLayer.hh"
-#include "MainLayer.hh"
+#include "Main.hh"
#include "TitleLayer.hh"
#if HAVE_CONFIG_H
#include "version.h"
-MainLayer::MainLayer()
+Main::Main()
{
- mDispatchHandler = Mf::engine.addHandler("video.newcontext",
- boost::bind(&MainLayer::contextRecreated, this));
+ mDispatchHandler = Mf::core.addHandler("video.newcontext",
+ boost::bind(&Main::contextRecreated));
setupGL();
}
-void MainLayer::pushedOntoEngine()
+void Main::addedToCore()
{
//Mf::Scalar coeff[] = {0.0, 1.0};
//Mf::Lerp interp(coeff, 0.25);
//Mf::LayerP gameLayer = GameLayer::alloc();
//Mf::Transition<Mf::Lerp>::Ptr transition =
//Mf::Transition<Mf::Lerp>::alloc(gameLayer, Mf::LayerP(), interp);
- //engine->push(transition);
- //engine->push(GameLayer::alloc());
- Mf::engine.push(TitleLayer::alloc());
+ //core.push(transition);
+ //core.push(GameLayer::alloc());
+ Mf::core.push(TitleLayer::alloc());
}
-void MainLayer::update(Mf::Scalar t, Mf::Scalar dt)
+void Main::update(Mf::Scalar t, Mf::Scalar dt)
{
- if (Mf::engine.getSize() == 1)
+ if (Mf::core.getSize() == 1)
{
// this is the only layer left on the stack
- //Mf::engine.push(TitleLayer::alloc());
- Mf::engine.clear();
+ //Mf::core.push(TitleLayer::alloc());
+ Mf::core.clear();
}
}
-void MainLayer::draw(Mf::Scalar alpha) const
+void Main::draw(Mf::Scalar alpha) const
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
}
-bool MainLayer::handleEvent(const Mf::Event& event)
+bool Main::handleEvent(const Mf::Event& event)
{
switch (event.type)
{
case SDL_KEYUP:
if (event.key.keysym.sym == SDLK_ESCAPE)
{
- Mf::engine.clear();
+ Mf::core.clear();
}
else if (event.key.keysym.sym == SDLK_f)
{
- Mf::engine.getVideo()->toggleFull();
+ Mf::video->toggleFull();
}
else if (event.key.keysym.sym == SDLK_l)
{
- Mf::VideoP video = Mf::engine.getVideo();
- video->toggleCursorGrab();
- video->toggleCursorVisible();
+ Mf::video->toggleCursorGrab();
+ Mf::video->toggleCursorVisible();
}
break;
break;
case SDL_QUIT:
- Mf::engine.clear();
+ Mf::core.clear();
break;
}
}
-void MainLayer::setupGL()
+std::string Main::getSearchPath()
+{
+ // Add search paths; they should be searched in this order:
+ // 1. YOINK_DATADIR (environment)
+ // 2. YOINK_DATADIR (configure)
+
+ std::string path;
+
+ char* dataDir = getenv("YOINK_DATADIR");
+ if (dataDir)
+ {
+ path += dataDir;
+ path += ":";
+ }
+ path += YOINK_DATADIR;
+
+ return path;
+}
+
+std::string Main::getConfigPath()
+{
+ // 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 path = Mf::Resource::getPath("yoinkrc");
+
+#if !defined(_WIN32) && !defined(__WIN32__)
+ path += ":/etc/yoinkrc";
+#endif
+ path += ":$HOME/.yoinkrc";
+
+ char* configFile = getenv("YOINKRC");
+ if (configFile)
+ {
+ path += ":";
+ path += configFile;
+ }
+
+ return path;
+}
+
+
+void Main::setupGL()
{
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
//glMatrixMode(GL_PROJECTION);
//glLoadIdentity();
- //Mf::Scalar ratio = Mf::engine.getVideo()->getWidth() /
- //Mf::engine.getVideo()->getHeight();
+ //Mf::Scalar ratio = Mf::core.getVideo()->getWidth() /
+ //Mf::core.getVideo()->getHeight();
//gluPerspective(60.0, ratio, 1.0, 250.0);
//glMatrixMode(GL_MODELVIEW);
}
-void MainLayer::contextRecreated()
+void Main::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
-void printUsage()
+void Main::printUsage()
{
std::cout << "Usage: "PACKAGE" [-h|--help] [-i|--info] [OPTION=VALUE]..."
<< 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
+ << " framerate=num" << std::endl
+ << " the target number of frames per second" << std::endl
<< std::endl
<< "See documentation for more options." << std::endl;
}
-void printInfo(int argc, char* argv[])
+void Main::printInfo(int argc, char* argv[])
{
std::string assets;
std::string datadir;
<< "YOINK_DATADIR: " << datadir << std::endl;
}
+
+void hello()
+{
+ 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;
+}
+
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();
+ Main::printUsage();
return 0;
}
else if (arg == "-i" || arg == "--info")
{
- printInfo(argc, argv);
+ Main::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;
-
+ hello();
atexit(goodbye);
+ Mf::Resource::addSearchPaths(Main::getSearchPath());
- // 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::settings.loadFromFiles(Main::getConfigPath());
+ Mf::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");
-
+ if (Mf::settings.get("loglevel", logLevel)) Mf::Log::setLevel(logLevel);
try
{
- Mf::engine.setVideo(Mf::Video::alloc(PACKAGE_STRING, iconFile));
- Mf::engine.push(MainLayer::alloc());
-
- Mf::engine.run();
+ Mf::Video video(PACKAGE_STRING, Mf::Resource::getPath(PACKAGE".png"));
+ MainP app = Main::alloc();
+ Mf::core.push(app);
+ Mf::core.run();
}
catch (const Mf::Error& error)
{