2012-06-25 17:59:17 +00:00
|
|
|
// * This file is part of the COLOBOT source code
|
|
|
|
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
|
|
|
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
|
|
|
// *
|
|
|
|
// * This program is free software: you can redistribute it and/or modify
|
|
|
|
// * it under the terms of the GNU General Public License as published by
|
|
|
|
// * the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// * (at your option) any later version.
|
|
|
|
// *
|
|
|
|
// * This program is distributed in the hope that it will be useful,
|
|
|
|
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// * GNU General Public License for more details.
|
|
|
|
// *
|
|
|
|
// * You should have received a copy of the GNU General Public License
|
|
|
|
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
|
|
|
|
2012-08-11 16:39:16 +00:00
|
|
|
/**
|
|
|
|
* \file app/main.cpp
|
|
|
|
* \brief Entry point of application - main() function
|
|
|
|
*/
|
2012-06-25 17:59:17 +00:00
|
|
|
|
|
|
|
#include "app/app.h"
|
|
|
|
#include "app/system.h"
|
2012-07-04 17:56:22 +00:00
|
|
|
#include "common/logger.h"
|
2012-06-25 17:59:17 +00:00
|
|
|
#include "common/misc.h"
|
|
|
|
#include "common/restext.h"
|
|
|
|
|
|
|
|
|
2012-07-11 18:56:09 +00:00
|
|
|
/* Doxygen main page */
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
\mainpage
|
|
|
|
|
|
|
|
Doxygen documentation of Colobot project
|
|
|
|
|
|
|
|
\section Intro Introduction
|
|
|
|
|
|
|
|
The source code released by Epitec was sparsely documented. This documentation, written from scratch,
|
|
|
|
will aim to describe the various components of the code.
|
|
|
|
|
2012-07-27 16:50:29 +00:00
|
|
|
Currently, the only documented classes are the ones written from scratch or the old ones rewritten
|
|
|
|
to match the new code.
|
2012-07-11 18:56:09 +00:00
|
|
|
In time, the documentation will be extended to cover every major part of the code.
|
|
|
|
|
|
|
|
\section Structure Code structure
|
|
|
|
|
2012-07-27 16:50:29 +00:00
|
|
|
The source code was split from the original all-in-one directory to subdirectories,
|
|
|
|
each containing one major part of the project.
|
|
|
|
The current layout is the following:
|
2012-07-11 18:56:09 +00:00
|
|
|
- src/CBot - separate library with CBot language
|
2012-07-27 16:50:29 +00:00
|
|
|
- src/app - class CApplication and everything concerned with SDL plus other system-dependent
|
|
|
|
code such as displaying a message box, finding files, etc.
|
2012-07-11 18:56:09 +00:00
|
|
|
- src/common - shared structs, enums, defines, etc.; should not have any external dependencies
|
2012-07-27 16:50:29 +00:00
|
|
|
- src/graphics/core - abstract interface of graphics device (abstract CDevice class)
|
|
|
|
(split from old src/graphics/common)
|
|
|
|
- src/graphics/engine - main graphics engine based on abstract graphics device; is composed
|
|
|
|
of CEngine class and associated classes implementing the 3D engine (split from old src/graphics/common)
|
|
|
|
- src/graphics/opengl - concrete implementation of CDevice class in OpenGL: CGLDevice
|
2012-07-11 18:56:09 +00:00
|
|
|
- src/graphics/d3d - in (far) future - perhaps a newer implementation in DirectX (9? 10?)
|
|
|
|
- src/math - mathematical structures and functions
|
2012-07-27 16:50:29 +00:00
|
|
|
- src/object - non-graphical game engine, that is robots, buildings, etc.
|
|
|
|
- src/ui - 2D user interface (menu, buttons, check boxes, etc.)
|
2012-07-11 18:56:09 +00:00
|
|
|
- src/sound - sound and music engine written using fmod library
|
|
|
|
- src/physics - physics engine
|
|
|
|
- src/script - link with the CBot library
|
|
|
|
- src/metafile - separate program for packing data files to .dat format
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2012-06-25 17:59:17 +00:00
|
|
|
//! Entry point to the program
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
2012-07-04 17:56:22 +00:00
|
|
|
CLogger logger; // Create the logger
|
|
|
|
|
|
|
|
logger.Info("Colobot starting\n");
|
|
|
|
|
2012-06-26 20:23:05 +00:00
|
|
|
CApplication app; // single instance of the application
|
2012-06-25 17:59:17 +00:00
|
|
|
|
2012-07-22 20:05:12 +00:00
|
|
|
if (! app.ParseArguments(argc, argv))
|
2012-06-26 20:23:05 +00:00
|
|
|
{
|
2012-08-13 21:09:30 +00:00
|
|
|
SystemDialog(SDT_ERROR, "COLOBOT - Fatal Error", "Invalid commandline arguments!\n");
|
2012-07-22 20:05:12 +00:00
|
|
|
return app.GetExitCode();
|
2012-06-26 20:23:05 +00:00
|
|
|
}
|
2012-06-25 17:59:17 +00:00
|
|
|
|
2012-07-04 17:56:22 +00:00
|
|
|
int code = 0;
|
|
|
|
|
2012-06-26 20:23:05 +00:00
|
|
|
if (! app.Create())
|
2012-07-01 20:59:22 +00:00
|
|
|
{
|
|
|
|
app.Destroy(); // ensure a clean exit
|
2012-07-04 17:56:22 +00:00
|
|
|
code = app.GetExitCode();
|
2012-08-13 21:09:30 +00:00
|
|
|
if ( code != 0 && !app.GetErrorMessage().empty() )
|
|
|
|
{
|
|
|
|
SystemDialog(SDT_ERROR, "COLOBOT - Fatal Error", app.GetErrorMessage());
|
|
|
|
}
|
2012-07-04 17:56:22 +00:00
|
|
|
logger.Info("Didn't run main loop. Exiting with code %d\n", code);
|
|
|
|
return code;
|
2012-07-01 20:59:22 +00:00
|
|
|
}
|
2012-06-25 17:59:17 +00:00
|
|
|
|
2012-07-04 17:56:22 +00:00
|
|
|
code = app.Run();
|
|
|
|
|
|
|
|
logger.Info("Exiting with code %d\n", code);
|
|
|
|
return code;
|
2012-06-25 17:59:17 +00:00
|
|
|
}
|
2012-07-04 17:56:22 +00:00
|
|
|
|