/*
Copyright (C) 2004-2011 Parallel Realities
+Copyright (C) 2011-2015 Perpendicular Dimensions
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
#include "init.h"
+static bool displayLicense;
+
void checkForLicense()
{
if (!engine.loadData(_("data/license")))
graphics.updateScreen();
engine.getInput();
config.populate();
- if (engine.keyState[SDL_SCANCODE_SPACE])
+ if (engine.userAccepts())
break;
SDL_Delay(16);
}
//
int initMedalService(void *data)
{
+ (void)data;
+
SDL_mutexP(medalServer.lock);
char connectMessage[1024];
return 1;
}
+void initConfig()
+{
+ #if UNIX
+ setupUserHomeDirectory();
+ #endif
+
+ displayLicense = loadConfig();
+}
+
/*
Chugg chugg chugg.... brrr... chugg chugg chugg...brrrrrr... chugg ch..
BRRRRRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMM!! Well, hopefully anyway! ;)
*/
void initSystem()
{
- #if UNIX
- setupUserHomeDirectory();
- #endif
-
- bool displayLicense = loadConfig();
-
long flags = SDL_INIT_VIDEO|SDL_INIT_JOYSTICK;
if (engine.useAudio)
graphics.screen = SDL_CreateRGBSurface(0, 640, 480, 32, 0xff0000, 0xff00, 0xff, 0xff000000);
- graphics.window = SDL_CreateWindow("Blobwars: Metal Blob Solid", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, graphics.screen->w, graphics.screen->h, 0);
- graphics.renderer = SDL_CreateRenderer(graphics.window, -1, 0);
+ if (graphics.screen == NULL)
+ {
+ printf("Couldn't set 640x480 video mode: %s\n", SDL_GetError());
+ exit(1);
+ }
+
+ // Increase the size of the window if we have large desktop resolutions
+ SDL_DisplayMode displayMode = {};
+ SDL_GetDesktopDisplayMode(0, &displayMode);
+ int w = graphics.screen->w;
+ int h = graphics.screen->h;
+ while (displayMode.w > w * 2 && displayMode.h > h * 2)
+ {
+ w *= 2;
+ h *= 2;
+ }
+
+ graphics.window = SDL_CreateWindow("Blobwars: Metal Blob Solid", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, w, h, SDL_WINDOW_RESIZABLE);
+
+ if (graphics.window == NULL)
+ {
+ printf("Couldn't create %dx%d window: %s\n", w, h, SDL_GetError());
+ exit(1);
+ }
+
+ graphics.renderer = SDL_CreateRenderer(graphics.window, -1, SDL_RENDERER_PRESENTVSYNC);
+
+ if (graphics.renderer == NULL)
+ {
+ printf("Couldn't create renderer: %s\n", SDL_GetError());
+ exit(1);
+ }
+
SDL_RenderSetLogicalSize(graphics.renderer, graphics.screen->w, graphics.screen->h);
graphics.texture = SDL_CreateTexture(graphics.renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, graphics.screen->w, graphics.screen->h);
- if (graphics.window == NULL)
+ if (graphics.texture == NULL)
{
- printf("Couldn't set 640x480 video mode: %s\n", SDL_GetError());
+ printf("Could not create %dx%d texture: %s\n", graphics.screen->w, graphics.screen->h, SDL_GetError());
exit(1);
}
}
SDL_ShowCursor(SDL_DISABLE);
- SDL_EventState(SDL_MOUSEMOTION, SDL_DISABLE);
graphics.registerEngine(&engine);
graphics.mapColors();
debug(("Loading Fonts...\n"));
#if USEPAK
-
- char tempPath[PATH_MAX];
- snprintf(tempPath, sizeof tempPath, "%sfont.ttf", engine.userHomeDirectory);
- remove(tempPath);
-
if (!engine.unpack("data/vera.ttf", PAK_FONT))
{
engine.reportFontFailure();
}
#endif
- debug(("Trying to load correct font pixel sizes using a really half arsed routine!\n"));
- debug(("If it crashes then you'll know why!\n"));
-
- graphics.loadFont(0, "data/vera.ttf", 7);
- graphics.loadFont(1, "data/vera.ttf", 9);
- graphics.loadFont(2, "data/vera.ttf", 11);
- graphics.loadFont(3, "data/vera.ttf", 13);
- graphics.loadFont(4, "data/vera.ttf", 15);
-
+ graphics.loadFont(0, "data/vera.ttf", 12);
+ graphics.loadFont(1, "data/vera.ttf", 15);
+ graphics.loadFont(2, "data/vera.ttf", 19);
+ graphics.loadFont(3, "data/vera.ttf", 23);
+ graphics.loadFont(4, "data/vera.ttf", 24);
+
debug(("Font sizes all loaded!!\n"));
audio.loadSound(SND_CHEAT, "sound/Lock And Load!!!");
graphics.license[1] = graphics.loadImage("gfx/main/cc-by-sa.png", true);
SDL_Surface *device = graphics.loadImage("gfx/main/alienDevice.png");
-
+ SDL_SetWindowIcon(graphics.window, device);
SDL_FreeSurface(device);
if (strstr(engine.userHomeDirectory, "/root"))