/*
-Copyright (C) 2004 Parallel Realities
+Copyright (C) 2004-2011 Parallel Realities
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
*/
#include "headers.h"
+#include <errno.h>
Engine::Engine()
{
deleteWidgets();
debug(("engine: free databuffer\n"));
- if (dataBuffer != NULL)
- delete[] dataBuffer;
+ delete[] dataBuffer;
debug(("engine: free binarybuffer\n"));
- if (binaryBuffer != NULL)
- delete[] binaryBuffer;
+ delete[] binaryBuffer;
debug(("Clearing Define List...\n"));
defineList.clear();
if (index == -1)
{
- for (int i = 0 ; i < 25 ; i++)
+ for (int i = 0 ; i < 24 ; i++)
{
lastKeyEvents[i] = lastKeyEvents[i + 1];
}
}
}
-int Engine::getMouseX()
+int Engine::getMouseX() const
{
return mouseX;
}
-int Engine::getMouseY()
+int Engine::getMouseY() const
{
return mouseY;
}
*/
bool Engine::unpack(const char *filename, int fileType)
{
+ bool ret = true;
+
if (fileType == PAK_DATA)
{
- if (dataBuffer != NULL)
- delete[] dataBuffer;
-
+ delete[] dataBuffer;
dataBuffer = NULL;
}
else
{
- if (binaryBuffer != NULL)
- delete[] binaryBuffer;
-
+ delete[] binaryBuffer;
binaryBuffer = NULL;
}
}
}
- if ((fileType == PAK_MUSIC) || (fileType == PAK_FONT))
+ if ((fileType == PAK_MUSIC) || (fileType == PAK_FONT) || (fileType == PAK_TAGS))
{
char tempPath[PATH_MAX];
fp = fopen(tempPath, "wb");
}
+ if (fileType == PAK_TAGS)
+ {
+ snprintf(tempPath, sizeof tempPath, "%smusic.tags", userHomeDirectory);
+ fp = fopen(tempPath, "wb");
+ }
+
if (fileType == PAK_FONT)
{
snprintf(tempPath, sizeof tempPath, "%sfont.ttf", userHomeDirectory);
if (!fp)
{
+ printf("Fatal Error: could not open %s for writing: %s", tempPath, strerror(errno));
return false;
}
- fwrite(binaryBuffer, 1, pak.getUncompressedSize(), fp);
+ if (fwrite(binaryBuffer, 1, pak.getUncompressedSize(), fp) != pak.getUncompressedSize())
+ {
+ printf("Fatal Error: could not write to %s: %s", tempPath, strerror(errno));
+ ret = false;
+ }
fclose(fp);
}
- debug(("unpack() : Loaded %s (%d)\n", filename, pak.getUncompressedSize()));
+ debug(("unpack() : Loaded %s (%d), ret: %d\n", filename, pak.getUncompressedSize(), (int)ret));
- return true;
+ return ret;
}
bool Engine::loadData(const char *filename)
{
- if (dataBuffer != NULL)
- {
- delete[] dataBuffer;
- dataBuffer = NULL;
- }
+ bool ret = true;
+
+ delete[] dataBuffer;
+ dataBuffer = NULL;
#if USEPAK
return unpack(filename, PAK_DATA);
dataBuffer = new unsigned char[fSize + 1];
- fread(dataBuffer, 1, fSize, fp);
+ if (fread(dataBuffer, 1, fSize, fp) != (size_t)fSize)
+ ret = false;
+
dataBuffer[fSize] = 0;
fclose(fp);
- debug(("loadData() : Loaded %s (%d)\n", filename, fSize));
+ debug(("loadData() : Loaded %s (%d), ret: %d\n", filename, fSize, (int)ret));
- return true;
+ return ret;
}
void Engine::reportFontFailure()
Math::limitInt(&playerPosY, limitUp, limitDown);
}
-int Engine::getFrameLoop()
+int Engine::getFrameLoop() const
{
return frameLoop;
}
time2 = SDL_GetTicks();
}
-float Engine::getTimeDifference()
+float Engine::getTimeDifference() const
{
return timeDifference;
}