/*
-Copyright (C) 2004 Parallel Realities
+Copyright (C) 2004-2010 Parallel Realities
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
debug(("User Home = %s\n", userHome));
char dir[PATH_MAX];
- strcpy(dir, "");
+ dir[0] = 0;
- sprintf(dir, "%s/.parallelrealities", userHome);
+ snprintf(dir, sizeof dir, "%s/.parallelrealities", userHome);
if ((mkdir(dir, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH) != 0) && (errno != EEXIST))
{
printf("Couldn't create required directory '%s'", dir);
exit(1);
}
- sprintf(dir, "%s/.parallelrealities/blobwars", userHome);
+ snprintf(dir, sizeof dir, "%s/.parallelrealities/blobwars", userHome);
if ((mkdir(dir, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH) != 0) && (errno != EEXIST))
{
printf("Couldn't create required directory '%s'", dir);
}
char gameSavePath[PATH_MAX];
- sprintf(gameSavePath, "%s/.parallelrealities/blobwars/", userHome);
+ snprintf(gameSavePath, sizeof gameSavePath, "%s/.parallelrealities/blobwars/", userHome);
engine.setUserHome(gameSavePath);
}
#endif
char configPath[PATH_MAX];
- sprintf(configPath, "%sconfig", engine.userHomeDirectory);
+ snprintf(configPath, sizeof configPath, "%sconfig", engine.userHomeDirectory);
debug(("Loading Config from %s\n", configPath));
return true;
}
- fscanf(fp, "%f %d", &version, &release);
+ if (fscanf(fp, "%10f %10d", &version, &release) != 2)
+ {
+ rtn = true;
+ }
debug(("Version = %.2f - Expected %.2f\n", version, VERSION));
debug(("Release = %d - Expected %d\n", release, RELEASE));
rtn = true;
}
- fscanf(fp, "%d %d %d %d %d %d %d", &engine.fullScreen, &game.musicVol, &game.soundVol, &game.output, &game.brightness, &engine.extremeAvailable, &game.gore);
+ if (fscanf(fp, "%10d %10d %10d %10d %10d %10d %10d", &engine.fullScreen, &game.musicVol, &game.soundVol, &game.output, &game.brightness, &engine.extremeAvailable, &game.gore) != 7)
+ {
+ rtn = true;
+ }
fclose(fp);
{
char configPath[PATH_MAX];
- sprintf(configPath, "%sconfig", engine.userHomeDirectory);
+ snprintf(configPath, sizeof configPath, "%sconfig", engine.userHomeDirectory);
FILE *fp = fopen(configPath, "wb");
debug(("Output Type = %d\n", game.output));
}
+//
+// see if we can load the private keyState
+//
+int initMedalService(void *data)
+{
+ SDL_mutexP(medalServer.lock);
+
+ char connectMessage[1024];
+ snprintf(connectMessage, sizeof connectMessage, "Contacting Medal Server - %s:%d", MEDAL_SERVER_HOST, MEDAL_SERVER_PORT);
+
+ graphics.showMedalMessage(-1, connectMessage);
+
+ char keyPath[PATH_MAX];
+ char privateKey[20];
+
+ snprintf(keyPath, sizeof keyPath, "%smedalKey", engine.userHomeDirectory);
+
+ debug(("Loading private key from %s\n", keyPath));
+
+ FILE *fp = fopen(keyPath, "rb");
+
+ if (!fp)
+ {
+ graphics.showMedalMessage(-1, "No Medal Key found - Online functions disabled");
+ SDL_mutexV(medalServer.lock);
+ return 0;
+ }
+
+ if (fscanf(fp, "%19s", privateKey) != 1)
+ {
+ graphics.showMedalMessage(-1, "Medal Key file corrupt - Online functions disabled");
+ SDL_mutexV(medalServer.lock);
+ fclose(fp);
+ return 0;
+ }
+
+ fclose(fp);
+
+ if (!medalServer.connect(privateKey))
+ {
+ graphics.showMedalMessage(-1, "Medal Server Connection Failed - Online functions disabled");
+ return 0;
+ }
+
+ graphics.showMedalMessage(-1, "Connected to Medal Server");
+
+ SDL_mutexV(medalServer.lock);
+
+ return 1;
+}
+
/*
Chugg chugg chugg.... brrr... chugg chugg chugg...brrrrrr... chugg ch..
BRRRRRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMM!! Well, hopefully anyway! ;)
{
if (Mix_OpenAudio(22050, AUDIO_S16, engine.useAudio, 1024) < 0)
{
- printf("Warning: Couldn't set 22050 Hz 16-bit audio - Reason: %s\n", Mix_GetError());
+ printf("Warning: Couldn't set 44100 Hz 16-bit audio - Reason: %s\n", Mix_GetError());
printf("Sound and Music will be disabled\n");
engine.useAudio = 0;
}
#if USEPAK
char tempPath[PATH_MAX];
- sprintf(tempPath, "%sfont.ttf", engine.userHomeDirectory);
+ snprintf(tempPath, sizeof tempPath, "%sfont.ttf", engine.userHomeDirectory);
remove(tempPath);
- SDL_Delay(1000); // wait one second, just to be sure!
-
if (!engine.unpack("data/vera.ttf", PAK_FONT))
{
engine.reportFontFailure();
debug(("Font sizes all loaded!!\n"));
audio.loadSound(SND_CHEAT, "sound/Lock And Load!!!");
- audio.loadSound(SND_HIGHLIGHT, "sound/menu.wav");
- audio.loadSound(SND_SELECT, "sound/select.wav");
+ audio.loadSound(SND_HIGHLIGHT, "sound/menu");
+ audio.loadSound(SND_SELECT, "sound/select");
+
+ graphics.medal[0] = graphics.loadImage("gfx/main/medal_bronze_1.png");
+ graphics.medal[1] = graphics.loadImage("gfx/main/award_star_silver_3.png");
+ graphics.medal[2] = graphics.loadImage("gfx/main/shield.png");
+ graphics.medal[3] = graphics.loadImage("gfx/main/ruby.png");
+
+ graphics.license[0] = graphics.loadImage("gfx/main/cc-by.png", true);
+ graphics.license[1] = graphics.loadImage("gfx/main/cc-by-sa.png", true);
SDL_Surface *device = graphics.loadImage("gfx/main/alienDevice.png");
checkForLicense();
}
+ if (SDLNet_Init() < 0)
+ {
+ printf("SDLNet_Init: %s\n", SDLNet_GetError());
+ }
+ else
+ {
+ SDL_Thread *thread = SDL_CreateThread(initMedalService, NULL);
+
+ if (thread == NULL)
+ {
+ printf("Unable to create thread: %s\n", SDL_GetError());
+ printf("Calling medal server directly\n");
+ initMedalService(NULL);
+ return;
+ }
+ }
+
engine.saveConfig = true;
debug(("Init Complete...\n"));
audio.destroy();
debug(("Removing Music...\n"));
- sprintf(tempPath, "%smusic.mod", engine.userHomeDirectory);
+ snprintf(tempPath, sizeof tempPath, "%smusic.mod", engine.userHomeDirectory);
remove(tempPath);
debug(("Freeing Game Info...\n"));
}
debug(("Removing Font File...\n"));
- sprintf(tempPath, "%sfont.ttf", engine.userHomeDirectory);
+ snprintf(tempPath, sizeof tempPath, "%sfont.ttf", engine.userHomeDirectory);
remove(tempPath);
if (SDL_NumJoysticks() > 0)
debug(("Closing TTF...\n"));
TTF_Quit();
+
+ debug(("Closing NET...\n"));
+ SDLNet_Quit();
debug(("Closing SDL Sub System...\n"));
SDL_Quit();