1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#include "filesystem/path.h"
#include "game/init.h"
#include "game/gltron.h"
#include "base/util.h"
#include "scripting/scripting.h"
void initSubsystems(int argc, const char *argv[]) {
initFilesystem(argc, argv);
initScripting();
init_c_interface();
initConfiguration(argc, argv);
initGame();
initVideo();
initAudio();
initInput();
}
void initScripting(void) {
scripting_Init();
/* load basic scripting services */
runScript(PATH_SCRIPTS, "basics.lua");
runScript(PATH_SCRIPTS, "joystick.lua");
}
void initConfiguration(int argc, const char *argv[])
{
/* load some more defaults from config file */
runScript(PATH_SCRIPTS, "config.lua");
runScript(PATH_SCRIPTS, "artpack.lua");
/* go for .gltronrc (or whatever is defined in RC_NAME) */
{
char *path;
path = getPossiblePath(PATH_PREFERENCES, RC_NAME);
if (path != NULL) {
if (fileExists(path)) {
printf("[status] loading settings from %s\n", path);
scripting_RunFile(path);
} else {
printf("[error] cannot load %s from %s\n", RC_NAME, path);
}
free(path);
}
else {
printf("[fatal] can't get valid pref path for %s\n", RC_NAME);
exit(1); // something is seriously wrong
}
}
if(!isSetting("version") || getSettingf("version") < 0.70f) {
/* load some more defaults from config file */
runScript(PATH_SCRIPTS, "config.lua");
runScript(PATH_SCRIPTS, "artpack.lua");
printf("[warning] old config file found, overriding using defaults\n");
}
// check if config is valid
scripting_GetGlobal("save_completed", NULL);
if(scripting_IsNilResult()) {
runScript(PATH_SCRIPTS, "config.lua");
runScript(PATH_SCRIPTS, "artpack.lua");
printf("[warning] defunct config file found, overriding using defaults\n");
}
setSettingf("version", 0.70f);
/* parse any comandline switches overrinding the loaded settings */
parse_args(argc, argv);
/* sanity check some settings */
checkSettings();
/* intialize the settings cache, remember to do that everytime you
change something */
updateSettingsCache();
}
void initVideo(void) {
videoInit();
runScript(PATH_SCRIPTS, "video.lua");
initVideoData();
consoleInit();
initArtpacks();
runScript(PATH_SCRIPTS, "menu.lua");
runScript(PATH_SCRIPTS, "menu_functions.lua");
setupDisplay(gScreen);
}
void initAudio(void) {
audioInit();
runScript(PATH_SCRIPTS, "audio.lua");
/* probe for artpacks & songs */
Sound_initTracks();
Sound_setup();
}
void initGame(void) {
/* initialize the rest of the game's datastructures */
initGameStructures();
resetScores();
}
void initInput(void) {
inputInit();
gInput.mouse1 = 0;
gInput.mouse2 = 0;
gInput.mousex = 0;
gInput.mousey = 0;
}
|