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