1 #include "game/gltron.h"
2 #include "base/switchCallbacks.h"
3 #include "scripting/nebu_scripting.h"
4
5 #include "audio/audio.h"
6
7 #include "lua.h"
8 #include "lualib.h"
9
c_quitGame(lua_State * L)10 int c_quitGame(lua_State *L) {
11 saveSettings();
12 SystemExitLoop(RETURN_CREDITS);
13 return 0;
14 }
15
c_resetGame(lua_State * L)16 int c_resetGame(lua_State *L) {
17 initData();
18 return 0;
19 }
20
c_resetScores(lua_State * L)21 int c_resetScores(lua_State *L) {
22 resetScores();
23 return 0;
24 }
25
c_resetCamera(lua_State * L)26 int c_resetCamera(lua_State *L) {
27 int i;
28 int camType;
29 Camera *cam;
30 Data *data;
31
32 for(i = 0; i < game->players; i++) {
33 cam = game->player[i].camera;
34 data = game->player[i].data;
35
36 camType = (game->player[i].ai->active == AI_COMPUTER) ?
37 0 : getSettingi("camType");
38 initCamera(cam, data, camType);
39 }
40 return 0;
41 }
42
c_video_restart(lua_State * L)43 int c_video_restart(lua_State *L) {
44 initGameScreen();
45 shutdownDisplay( gScreen );
46 setupDisplay( gScreen );
47 updateCallbacks();
48 changeDisplay(-1);
49 return 0;
50 }
51
c_update_settings_cache(lua_State * L)52 int c_update_settings_cache(lua_State *L) {
53 updateSettingsCache();
54 return 0;
55 }
56
c_update_audio_volume(lua_State * L)57 int c_update_audio_volume(lua_State *L) {
58 Sound_setMusicVolume(getSettingf("musicVolume"));
59 Sound_setFxVolume(getSettingf("fxVolume"));
60 return 0;
61 }
62
c_startGame(lua_State * L)63 int c_startGame(lua_State *L) {
64 game2->mode = GAME_SINGLE;
65 initData();
66 changeDisplay(-1);
67 SystemExitLoop(RETURN_GAME_LAUNCH);
68 return 0;
69 }
70
c_reloadTrack(lua_State * L)71 int c_reloadTrack(lua_State *L) {
72 Sound_reloadTrack();
73 return 0;
74 }
75
c_reloadArtpack(lua_State * L)76 int c_reloadArtpack(lua_State *L) {
77 reloadArt();
78 return 0;
79 }
80
c_configureKeyboard(lua_State * L)81 int c_configureKeyboard(lua_State *L) {
82 SystemExitLoop(RETURN_GUI_PROMPT);
83 return 0;
84 }
85
c_getKeyName(lua_State * L)86 int c_getKeyName(lua_State *L) {
87 int top = lua_gettop(L);
88 if(lua_isnumber(L, top)) {
89 lua_pushstring(L, SystemGetKeyName( (int) lua_tonumber(L, top) ));
90 } else {
91 lua_pushstring(L, "error");
92 }
93 return 1;
94 }
95
c_timedemo(lua_State * L)96 int c_timedemo(lua_State *L) {
97 SystemExitLoop(RETURN_TIMEDEMO);
98 return 0;
99 }
100
c_SetCallback(lua_State * L)101 int c_SetCallback(lua_State *L) {
102 const char *name;
103 int top = lua_gettop(L);
104 if(lua_isstring(L, top)) {
105 name = lua_tostring(L, top);
106 setCallback(name);
107 // printf("enabling callback-set '%s'\n", name);
108 }
109 return 0;
110 }
111
c_SystemMainLoop(lua_State * L)112 int c_SystemMainLoop(lua_State *L) {
113 int value = SystemMainLoop();
114 lua_pushnumber(L, value);
115
116 return 1;
117 }
118
init_c_interface(void)119 void init_c_interface(void) {
120 scripting_Register("c_quitGame", c_quitGame);
121 scripting_Register("c_resetGame", c_resetGame);
122 scripting_Register("c_resetScores", c_resetScores);
123 scripting_Register("c_resetCamera", c_resetCamera);
124 scripting_Register("c_video_restart", c_video_restart);
125 scripting_Register("c_update_settings_cache", c_update_settings_cache);
126 scripting_Register("c_update_audio_volume", c_update_audio_volume);
127 scripting_Register("c_startGame", c_startGame);
128 scripting_Register("c_reloadTrack", c_reloadTrack);
129 scripting_Register("c_reloadArtpack", c_reloadArtpack);
130 scripting_Register("c_configureKeyboard", c_configureKeyboard);
131 scripting_Register("c_getKeyName", c_getKeyName);
132 scripting_Register("c_timedemo", c_timedemo);
133
134 scripting_Register("SystemMainLoop", c_SystemMainLoop);
135 scripting_Register("SetCallback", c_SetCallback);
136 }
137