From 84a53f91e64ad801703bcf2c73a82b75ff10d760 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Thu, 18 Sep 2008 17:35:58 +0000 Subject: fix win32 build and directory creation, use My Games\ --- src/filesystem/filesystem.cc | 29 ++++++++++++++++++++++++++--- src/game/Makefile.am | 3 +-- src/render/tga.cc | 2 +- src/sys/sys.cc | 11 ++++++++--- 4 files changed, 36 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/filesystem/filesystem.cc b/src/filesystem/filesystem.cc index 0fec129..3404296 100644 --- a/src/filesystem/filesystem.cc +++ b/src/filesystem/filesystem.cc @@ -8,6 +8,13 @@ #include +#ifdef _WIN32 + +#include +#include + +#endif + #include "filesystem/filesystem.h" #include "filesystem/diskfile.h" #include "filesystem/file.h" @@ -54,8 +61,25 @@ void init(std::string const & basename, std::string const & modname) filesystem_homedir.assign(getenv("HOME")); filesystem_homedir.append("/.osirion/"); #else - // FIXME win32 - filesystem_homedir.assign("home/"); + char mydocuments[512]; + memset(mydocuments, 0, sizeof(mydocuments)); + + SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, mydocuments); + filesystem_homedir.assign(mydocuments); + + if (filesystem_homedir.size()) { + filesystem_homedir.append("\\My Games"); + if (!sys::isdirectory(filesystem_homedir)) + sys::mkdir(filesystem_homedir); + + filesystem_homedir.append("\\Osirion"); + if (!sys::isdirectory(filesystem_homedir)) + sys::mkdir(filesystem_homedir); + + filesystem_homedir.append("\\"); + } else { + filesystem_homedir.assign("home/"); + } #endif std::string current_datadir("data/"); @@ -77,7 +101,6 @@ void init(std::string const & basename, std::string const & modname) sys::mkdir(filesystem_homedir); sys::mkdir(filesystem_writedir); - // modname search path if (filesystem_modname.size()) { // HOME/modname diff --git a/src/game/Makefile.am b/src/game/Makefile.am index 0ff1ba5..ff591eb 100644 --- a/src/game/Makefile.am +++ b/src/game/Makefile.am @@ -7,5 +7,4 @@ libgame_la_SOURCES = game.cc jumppoint.cc navpoint.cc planet.cc racetrack.cc \ noinst_LTLIBRARIES = libgame.la noinst_HEADERS = game.h navpoint.h planet.h racetrack.h ship.h shipmodel.h \ - star.h -_SOURCES = jumppoint.h + star.h jumppoint.h diff --git a/src/render/tga.cc b/src/render/tga.cc index d9e5cb2..a7a2356 100644 --- a/src/render/tga.cc +++ b/src/render/tga.cc @@ -167,7 +167,7 @@ Image *TGA::load(const char *filename) while (index < tga_width * tga_height) { unsigned char rle = 0; - unsigned char pixel_data[channels]; + unsigned char pixel_data[3]; // read RLE packet byte tga_file->read(&rle, 1); diff --git a/src/sys/sys.cc b/src/sys/sys.cc index 3aec456..db2be4d 100644 --- a/src/sys/sys.cc +++ b/src/sys/sys.cc @@ -10,6 +10,7 @@ #include #include #include +#include #else @@ -22,6 +23,7 @@ #endif +#include #include #include @@ -62,12 +64,15 @@ bool isdirectory(std::string const &path) void mkdir(std::string const &path) { #ifdef _WIN32 -/* std::string p(path); for (size_t i = 0; i < p.size(); i++) if (p[i] == '/') p[i] = '\\'; - mkdir(p.c_str()); -*/ + if (p.size() && (p[p.size()-1] == '\\')) + p.erase(p.size() -1, 1); + + if (_mkdir(p.c_str()) != 0) { + con_warn << "Could not create directory '" << p << "'" << std::endl; + } #else ::mkdir(path.c_str(), 0777); -- cgit v1.2.3