Crossfire Server, Trunk
cre.cpp
Go to the documentation of this file.
1 /*
2  * Crossfire -- cooperative multi-player graphical RPG and adventure game
3  *
4  * Copyright (c) 2022 the Crossfire Development Team
5  *
6  * Crossfire is free software and comes with ABSOLUTELY NO WARRANTY. You are
7  * welcome to redistribute it under certain conditions. For details, please
8  * see COPYING and LICENSE.
9  *
10  * The authors can be reached via e-mail at <crossfire@metalforge.org>.
11  */
12 
13 #include <Qt>
14 #include <QApplication>
15 #include <QCoreApplication>
16 #include <QTemporaryDir>
17 
18 #include <CREMainWindow.h>
19 #include "CRESettings.h"
20 
21 #include "CREPixmap.h"
22 
23 #include "CREFilterDefinition.h"
25 
26 #include "global.h"
27 #include "quest.h"
28 
29 int main(int argc, char **argv) {
30 
31  QCoreApplication::setOrganizationName("The Legendary Team of Ailesse");
32  QCoreApplication::setApplicationName("CRE");
33  QApplication app(argc, argv);
34 
35  QTranslator trans;
36  if (trans.load(QLocale(), "cre", "_", app.applicationDirPath() + "/l10n")) {
37  app.installTranslator(&trans);
38  }
39 
40  app.setWindowIcon(QIcon(":resources/app_icon.png"));
41 
42  QSplashScreen *splash = new QSplashScreen(QPixmap(":/resources/crossfirebanner.png"));
43  splash->showMessage(QObject::tr("Initializing CRE..."), Qt::AlignCenter);
44  splash->show();
45  app.processEvents();
46 
47  qRegisterMetaTypeStreamOperators<CREFilterDefinition>("CREFilterDefinition");
48  qRegisterMetaTypeStreamOperators<CREFilterDefinitionManager>("CREFilterDefinitionManager");
49 
50  qRegisterMetaType<const Face *>("const Face*");
51  qRegisterMetaType<const treasurelist *>("const treasurelist*");
52  qRegisterMetaType<const archetype *>("const archetype*");
53  qRegisterMetaType<const quest_definition *>("const quest_definition*");
54 
55  // QHelpEngine apparently needs write access to files, so move'em to a writable location
56  QTemporaryDir forHelp;
57  QFile::copy(app.applicationDirPath() + "/cre.qch", forHelp.path() + "/cre.qch");
58  QFile::copy(app.applicationDirPath() + "/cre.qhc", forHelp.path() + "/cre.qhc");
59 
60 #ifdef WIN32
61  // Application compiled with "--prefix=", somehow the root is then c:\, which is bad
62  // So force directories to point to the exe's path and something else.
63  std::string confdir = app.applicationDirPath().toStdString() + "/etc";
64  settings.confdir = confdir.c_str();
65  std::string localdir = app.applicationDirPath().toStdString() + "/var";
66  settings.localdir = localdir.c_str();
67  std::string datadir = app.applicationDirPath().toStdString() + "/share";
68  settings.datadir = datadir.c_str();
69  std::string temp = QDir::tempPath().toStdString();
70  settings.tmpdir = temp.c_str();
71  // Force log level to be debug to see all output
73  // Set a log file
74  std::string log = (QDir::tempPath() + "\\cre.log").toStdString();
75  settings.logfilename = log.c_str();
76 #endif
77 
79  if (!settings.ensureOptions())
80  return -1;
81 
82  CREMainWindow win(forHelp.path());
83 
85 
86  splash->finish(&win);
87  win.show();
88 
89  delete splash;
90 
91  return app.exec();
92 }
global.h
settings
struct Settings settings
Definition: init.cpp:139
log_born.log
log
Definition: log_born.py:28
main
int main(int argc, char **argv)
Definition: cre.cpp:29
Settings::datadir
const char * datadir
Definition: global.h:248
CREFilterDefinition.h
Settings::debug
LogLevel debug
Definition: global.h:243
Settings::logfilename
const char * logfilename
Definition: global.h:241
CRESettings.h
Settings::confdir
const char * confdir
Definition: global.h:247
CREMainWindow
Definition: CREMainWindow.h:40
quest.h
CRESettings
Definition: CRESettings.h:20
CREFilterDefinitionManager.h
CREPixmap::init
static void init()
Definition: CREPixmap.cpp:32
CREMainWindow.h
Settings::tmpdir
const char * tmpdir
Definition: global.h:255
guildbuy.temp
def temp
Definition: guildbuy.py:26
CREPixmap.h
llevDebug
@ llevDebug
Definition: logger.h:13
Settings::localdir
const char * localdir
Definition: global.h:249