File: artpack.c

package info (click to toggle)
gltron 0.61-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,948 kB
  • ctags: 1,175
  • sloc: ansic: 7,580; perl: 168; makefile: 149; sh: 15
file content (64 lines) | stat: -rw-r--r-- 1,391 bytes parent folder | download
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
#include "gltron.h"

char **artpack_list;
int artpack_index = 0;

void initArtpacks() {
  list *l, *p;
  int i = 0, n = 0;

  l = readDirectoryContents(PATH_ART, NULL);
  for(p = l; p->next != NULL; p = p->next)
    n++;

  artpack_list = (char**) malloc((n + 1) * sizeof(char*));
  
  for(p = l; p->next != NULL; p = p->next) {
    artpack_list[i] = (char*) malloc(strlen( (char*) p->data ) + 1);
    memcpy(artpack_list[i], p->data, strlen( (char*) p->data ) + 1);
    printf("loading artpack %s\n", artpack_list[i]);
    if(strstr(artpack_list[i], "default") == artpack_list[i])
      artpack_index = i;
    i++;

  }
  printf("loaded %d artpacks\n", i);
  artpack_list[i] = NULL;
}

void getArtPath(char *name, char *fullname) {
  char *path;
  char fallback[] = "default";
  sprintf(fullname, "%s%c%s", game->screen->artpack.path, SEPERATOR, name);
  if((path = getFullPath(fullname)) == NULL) {
    sprintf(fullname, "%s%c%s", fallback, SEPERATOR, name);
  } else {
    free(path);
    return;
  }
}

void loadArt() {
  char buf[120];
  char *path;

  game->screen->artpack.path = artpack_list[artpack_index];

  getArtPath("artpack.ini", buf);
  path = getFullPath(buf);
  if(path != NULL) {
    loadIniFile(path);
    free(path);
  }

  initTexture(game->screen);
  initFonts();
}

void reloadArt() {
  printf("reloading art\n");
  deleteTextures(game->screen);
  loadArt();
}