void Sound_initTracks(void) { const char *music_path; List *soundList; List *p; int i; music_path = getDirectory( PATH_MUSIC ); soundList = readDirectoryContents(music_path, NULL); if(soundList->next == NULL) { fprintf(stderr, "[sound] no music files found...exiting\n"); exit(1); // FIXME: handle missing songs somewhere else } //soundList->data="revenge_of_cats.it"; i = 1; for(p = soundList; p->next != NULL; p = p->next) { // bugfix: filter track list to readable files (and without directories) char *path = getPossiblePath( PATH_MUSIC, (char*)p->data ); if( path != NULL && fileExists( path ) ) { scripting_RunFormat("tracks[%d] = \"%s\"", i, (char*) p->data); i++; free( path ); } } scripting_Run("setupSoundTrack()"); }
void Sound_initTracks(void) { const char *music_path; nebu_List *soundList; nebu_List *p; int i; music_path = getDirectory( PATH_MUSIC ); soundList = readDirectoryContents(music_path, NULL); if(soundList->next == NULL) { fprintf(stderr, "[sound] no music files found...exiting\n"); nebu_assert(0); exit(1); // TODO: handle missing songs somewhere else } i = 1; for(p = soundList; p->next != NULL; p = p->next) { // bugfix: filter track list to readable files (and without directories) char *path = getPossiblePath( PATH_MUSIC, (char*)p->data ); if( path != NULL && nebu_FS_Test( path ) ) { scripting_RunFormat("tracks[%d] = \"%s\"", i, (char*) p->data); i++; free( path ); } free(p->data); } nebu_List_Free(soundList); scripting_Run("setupSoundTrack()"); }
char* getPath( int eLocation, const char *filename) { char *path = getPossiblePath( eLocation, filename ); if( fileExists(path) ) return path; fprintf(stderr, "*** failed to locate file '%s' at '%s' (type %d)\n", filename, path, eLocation); assert(0); free(path); return NULL; }
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(); }
/* getNextFilename - find the next free filename in series. */ static char* getNextFilename(const char *suffix, int *start_at) { char *path = NULL; char fname[PATH_MAX]; do { if(path != NULL) free(path); (*start_at)++; sprintf(fname, "%s-%s-%d%s", SCREENSHOT_PREFIX, VERSION, *start_at, suffix); path = getPossiblePath( PATH_SNAPSHOTS, fname ); } while ( fileExists(path)); return path; }
void saveSettings(void) { char *script; script = getPath(PATH_SCRIPTS, "save.lua"); scripting_RunFile(script); free(script); #ifdef WIN32 scripting_Run("file = io.open(\"gltron.ini\", \"w\")"); scripting_Run("io.output(file)"); #else { char *path = getPossiblePath(PATH_PREFERENCES, RC_NAME); if(path == NULL) return; scripting_RunFormat("file = io.open(\"%s\", \"w\")", path); scripting_Run("io.output(file)"); free(path); } #endif scripting_Run("save()"); scripting_Run("io.write \"save_completed = 1\\n\""); scripting_Run("io.output(io.stdout)"); // select stdout again }