summaryrefslogtreecommitdiffstats
path: root/nyan.c
diff options
context:
space:
mode:
authorJohn Anthony <johnanthony@lavabit.com>2012-07-31 17:23:06 +0100
committerJohn Anthony <johnanthony@lavabit.com>2012-07-31 17:23:06 +0100
commit3b0d9c70a8e5764ebb6ad551f69c71840342fd54 (patch)
tree750e02cbf20311976a79f24c29c7bf82d849ebfe /nyan.c
parent6de2279ea1c61cd070d2e3603cdbdf47ff8bc939 (diff)
downloadnyancat-3b0d9c70a8e5764ebb6ad551f69c71840342fd54.tar.gz
nyancat-3b0d9c70a8e5764ebb6ad551f69c71840342fd54.tar.bz2
nyancat-3b0d9c70a8e5764ebb6ad551f69c71840342fd54.zip
Offering alternative resource sets is almost complete
Diffstat (limited to 'nyan.c')
-rw-r--r--nyan.c45
1 files changed, 35 insertions, 10 deletions
diff --git a/nyan.c b/nyan.c
index 7a8d03c..619ba6a 100644
--- a/nyan.c
+++ b/nyan.c
@@ -56,6 +56,7 @@ static void handle_input(void);
static void init(void);
static void load_images(void);
static SDL_Surface* load_image(const char* path);
+static void load_resource_data(void);
static void load_music(void);
static void putpix(SDL_Surface* surf, int x, int y, Uint32 col);
static void remove_sparkle(sparkle_instance* s);
@@ -97,8 +98,8 @@ static Uint32 bgcolor;
static char* RESOURCE_PATH = NULL;
static char* LOC_BASE_PATH = "res";
static char* OS_BASE_PATH = "/usr/share/nyancat";
-static int ANIM_FRAMES_FG = 5;
-static int ANIM_FRAMES_BG = 5;
+static int ANIM_FRAMES_FG = 0;
+static int ANIM_FRAMES_BG = 0;
/* Function definitions */
static void
@@ -342,6 +343,7 @@ init(void) {
if(!cursor)
SDL_ShowCursor(0);
+ load_resource_data();
load_images();
bgcolor = SDL_MapRGB(screen->format, 0x00, 0x33, 0x66);
fillsquare(screen, 0, 0, screen->w, screen->h, bgcolor);
@@ -388,25 +390,25 @@ init(void) {
static void
load_images(void) {
int i;
- char buffer[1024];
+ char buffer[BUF_SZ];
cat_img = ec_malloc(sizeof(SDL_Surface*) * ANIM_FRAMES_FG);
sparkle_img = ec_malloc(sizeof(SDL_Surface*) * ANIM_FRAMES_BG);
/* Loading logic */
for (i = 0; i < ANIM_FRAMES_FG; ++i) {
- snprintf(buffer, 1024, "%s/%s/fg%02d.png", LOC_BASE_PATH, RESOURCE_PATH, i);
+ snprintf(buffer, BUF_SZ, "%s/%s/fg%02d.png", LOC_BASE_PATH, RESOURCE_PATH, i);
cat_img[i] = load_image(buffer);
if (!cat_img[i]) {
- snprintf(buffer, 1024, "%s/%s/fg%02d.png", OS_BASE_PATH, RESOURCE_PATH, i);
+ snprintf(buffer, BUF_SZ, "%s/%s/fg%02d.png", OS_BASE_PATH, RESOURCE_PATH, i);
cat_img[i] = load_image(buffer);
}
}
for (i = 0; i < ANIM_FRAMES_BG; ++i) {
- snprintf(buffer, 1024, "%s/%s/bg%02d.png", LOC_BASE_PATH, RESOURCE_PATH, i);
+ snprintf(buffer, BUF_SZ, "%s/%s/bg%02d.png", LOC_BASE_PATH, RESOURCE_PATH, i);
sparkle_img[i] = load_image(buffer);
if (!sparkle_img[i]) {
- snprintf(buffer, 1024, "%s/%s/bg%02d.png", OS_BASE_PATH, RESOURCE_PATH, i);
+ snprintf(buffer, BUF_SZ, "%s/%s/bg%02d.png", OS_BASE_PATH, RESOURCE_PATH, i);
sparkle_img[i] = load_image(buffer);
}
}
@@ -436,12 +438,12 @@ load_image( const char* path ) {
static void
load_music(void) {
- char buffer[1024];
+ char buffer[BUF_SZ];
- snprintf(buffer, 1024, "%s/%s/music.ogg", LOC_BASE_PATH, RESOURCE_PATH);
+ snprintf(buffer, BUF_SZ, "%s/%s/music.ogg", LOC_BASE_PATH, RESOURCE_PATH);
music = Mix_LoadMUS(buffer);
if (!music) {
- snprintf(buffer, 1024, "%s/%s/music.ogg", OS_BASE_PATH, RESOURCE_PATH);
+ snprintf(buffer, BUF_SZ, "%s/%s/music.ogg", OS_BASE_PATH, RESOURCE_PATH);
music = Mix_LoadMUS(buffer);
}
if (!music)
@@ -449,6 +451,29 @@ load_music(void) {
}
static void
+load_resource_data(void) {
+ FILE *f;
+ char buffer[BUF_SZ];
+
+ snprintf(buffer, BUF_SZ, "%s/%s/data", LOC_BASE_PATH, RESOURCE_PATH);
+ f = fopen(buffer, "r");
+ if (!f) {
+ snprintf(buffer, BUF_SZ, "%s/%s/data", OS_BASE_PATH, RESOURCE_PATH);
+ f = fopen(buffer, "r");
+ }
+ if (!f)
+ errout("Error opening resource data file");
+
+ fgets(buffer, BUF_SZ, f);
+ ANIM_FRAMES_FG = atoi(buffer);
+ fgets(buffer, BUF_SZ, f);
+ ANIM_FRAMES_BG = atoi(buffer);
+
+ if (!ANIM_FRAMES_FG || !ANIM_FRAMES_BG)
+ errout("Error reading resource data file.");
+}
+
+static void
putpix(SDL_Surface* surf, int x, int y, Uint32 col) {
Uint32 *pix = (Uint32 *) surf->pixels;
pix [ ( y * surf->w ) + x ] = col;