static void LoadSound(SoundDevice *device, const char *name, const char *path) { Mix_Chunk *data = Mix_LoadWAV(path); if (data == NULL) { return; } char buf[CDOGS_FILENAME_MAX]; PathGetWithoutExtension(buf, name); SoundAdd(&device->sounds, buf, data); }
static void PicManagerLoadDirImpl( PicManager *pm, const char *path, const char *prefix) { tinydir_dir dir; if (tinydir_open(&dir, path) == -1) { perror("Cannot open image dir"); goto bail; } for (; dir.has_next; tinydir_next(&dir)) { tinydir_file file; if (tinydir_readfile(&dir, &file) == -1) { perror("Cannot read image file"); goto bail; } if (file.is_reg) { SDL_RWops *rwops = SDL_RWFromFile(file.path, "rb"); const bool isPng = IMG_isPNG(rwops); if (isPng) { SDL_Surface *data = IMG_Load_RW(rwops, 0); if (!data) { perror("Cannot load image"); fprintf(stderr, "IMG_Load: %s\n", IMG_GetError()); } else { char buf[CDOGS_PATH_MAX]; if (prefix) { char buf1[CDOGS_PATH_MAX]; sprintf(buf1, "%s/%s", prefix, file.name); PathGetWithoutExtension(buf, buf1); } else { PathGetBasenameWithoutExtension(buf, file.name); } PicManagerAdd(&pm->pics, &pm->sprites, buf, data); } } rwops->close(rwops); } else if (file.is_dir && file.name[0] != '.') { if (prefix) { char buf[CDOGS_PATH_MAX]; sprintf(buf, "%s/%s", prefix, file.name); PicManagerLoadDirImpl(pm, file.path, buf); } else { PicManagerLoadDirImpl(pm, file.path, file.name); } } } bail: tinydir_close(&dir); }
void PathGetBasenameWithoutExtension(char *buf, const char *path) { const char *basename = PathGetBasename(path); PathGetWithoutExtension(buf, basename); }