app name as variable

This commit is contained in:
Henrique Santiago 2011-03-20 17:23:13 -03:00
parent e0cfab3dd2
commit c133706890
4 changed files with 27 additions and 23 deletions

View File

@ -29,7 +29,7 @@
namespace Platform namespace Platform
{ {
void init(); void init(const char *appName);
void terminate(); void terminate();
/// Poll platform input/window events /// Poll platform input/window events
@ -69,7 +69,7 @@ namespace Platform
void swapBuffers(); void swapBuffers();
/// Get the app user directory, the place to save files configurations files /// Get the app user directory, the place to save files configurations files
const char *getAppUserDir(const char *appName); const char *getAppUserDir();
} }
#endif // PLATFORM_H #endif // PLATFORM_H

View File

@ -36,14 +36,16 @@ struct Win32PlatformPrivate {
HDC hdc; HDC hdc;
HGLRC hrc; HGLRC hrc;
const char *appName;
int x, y; int x, y;
int width, height; int width, height;
int minWidth, minHeight; int minWidth, minHeight;
bool maximized; bool maximized;
} win32; } win32;
void Platform::init() void Platform::init(const char *appName)
{ {
win32.appName = appName;
win32.instance = GetModuleHandle(NULL); win32.instance = GetModuleHandle(NULL);
WNDCLASSA wc; WNDCLASSA wc;
@ -56,7 +58,7 @@ void Platform::init()
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The Arrow Pointer wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The Arrow Pointer
wc.hbrBackground = NULL; // No Background Required For GL wc.hbrBackground = NULL; // No Background Required For GL
wc.lpszMenuName = NULL; // We Don't Want A Menu wc.lpszMenuName = NULL; // We Don't Want A Menu
wc.lpszClassName = "OTClient"; // Set The Class Name wc.lpszClassName = win32.appName; // Set The Class Name
if(!RegisterClassA(&wc)) if(!RegisterClassA(&wc))
fatal("Failed to register the window class."); fatal("Failed to register the window class.");
@ -70,7 +72,7 @@ void Platform::terminate()
} }
if(win32.instance) { if(win32.instance) {
if(!UnregisterClassA("OTClient", win32.instance)) if(!UnregisterClassA(win32.appName, win32.instance))
error("Unregister class failed."); error("Unregister class failed.");
win32.instance = NULL; win32.instance = NULL;
@ -112,8 +114,8 @@ bool Platform::createWindow(int x, int y, int width, int height, int minWidth, i
//AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle); //AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle);
win32.window = CreateWindowExA(dwExStyle, // Extended Style For The Window win32.window = CreateWindowExA(dwExStyle, // Extended Style For The Window
"OTClient", // Class Name win32.appName, // Class Name
"OTClient", // Window Title win32.appName, // Window Title
dwStyle, // Required Window Style dwStyle, // Required Window Style
x, // Window X Position x, // Window X Position
y, // Window Y Position y, // Window Y Position
@ -294,10 +296,10 @@ bool Platform::isWindowMaximized()
return win32.maximized; return win32.maximized;
} }
const char *Platform::getAppUserDir(const char *appName) const char *Platform::getAppUserDir()
{ {
std::stringstream sdir; std::stringstream sdir;
sdir << PHYSFS_getUserDir() << "/." << appName << "/"; sdir << PHYSFS_getUserDir() << "/." << win32.appName << "/";
if((mkdir(sdir.str().c_str()) != 0) && (errno != EEXIST)) if((mkdir(sdir.str().c_str()) != 0) && (errno != EEXIST))
error("Couldn't create directory for saving configuration file. (%s)", sdir.str().c_str()); error("Couldn't create directory for saving configuration file. (%s)", sdir.str().c_str());
return sdir.str().c_str(); return sdir.str().c_str();

View File

@ -53,14 +53,16 @@ struct X11PlatformPrivate {
Atom atomUTF8String; Atom atomUTF8String;
bool visible; bool visible;
bool focused; bool focused;
const char *appName;
int width; int width;
int height; int height;
std::string clipboardText; std::string clipboardText;
std::map<int, unsigned char> keyMap; std::map<int, unsigned char> keyMap;
} x11; } x11;
void Platform::init() void Platform::init(const char *appName)
{ {
x11.appName = appName;
x11.display = NULL; x11.display = NULL;
x11.visual = NULL; x11.visual = NULL;
x11.glxContext = NULL; x11.glxContext = NULL;
@ -732,10 +734,10 @@ bool Platform::isWindowMaximized()
return false; return false;
} }
const char *Platform::getAppUserDir(const char *appName) const char *Platform::getAppUserDir()
{ {
std::stringstream sdir; std::stringstream sdir;
sdir << PHYSFS_getUserDir() << "/." << appName << "/"; sdir << PHYSFS_getUserDir() << "/." << x11.appName << "/";
if((mkdir(sdir.str().c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) && (errno != EEXIST)) if((mkdir(sdir.str().c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) && (errno != EEXIST))
error("Couldn't create directory for saving configuration file. (%s)", sdir.str().c_str()); error("Couldn't create directory for saving configuration file. (%s)", sdir.str().c_str());
return sdir.str().c_str(); return sdir.str().c_str();

View File

@ -71,10 +71,13 @@ int main(int argc, const char *argv[])
signal(SIGTERM, signal_handler); signal(SIGTERM, signal_handler);
signal(SIGINT, signal_handler); signal(SIGINT, signal_handler);
// init platform stuff
Platform::init("OTClient");
// init resources // init resources
g_resources.init(argv[0]); g_resources.init(argv[0]);
if(g_resources.setWriteDir(Platform::getAppUserDir("OTClient"))) if(g_resources.setWriteDir(Platform::getAppUserDir()))
g_resources.addToSearchPath(Platform::getAppUserDir("OTClient")); g_resources.addToSearchPath(Platform::getAppUserDir());
g_resources.addToSearchPath("data"); g_resources.addToSearchPath("data");
// before loading configurations set the default ones // before loading configurations set the default ones
@ -86,9 +89,6 @@ int main(int argc, const char *argv[])
notice("OTClient 0.1.0"); notice("OTClient 0.1.0");
// init platform stuff
Platform::init();
// create the window // create the window
Platform::createWindow(g_config.getInteger("window x"), g_config.getInteger("window y"), Platform::createWindow(g_config.getInteger("window x"), g_config.getInteger("window y"),
g_config.getInteger("window width"), g_config.getInteger("window height"), g_config.getInteger("window width"), g_config.getInteger("window height"),