Bonsoir,
la liste de discussion semble essentiellement discuter en Français, donc je
vais utiliser cette langue. Si l'anglais est préférable, pas de problème.
Pensez à me mettre en Cc: si vous voulez me contacter, car je ne me suis pas
abonné.
Donc, j'ai réussi à compiler les version 0.7b3 et svn (2006/01/26, malgré son
état). Vous pouvez trouver les archives zip de ces versions ici:
http://kurosu.free.fr/wormux/
Les autotools sont récalcitrants avec la version SVN, je me suis contenté de
copier l'ancien configure provenant de la 0.7b3.
Présents aussi sont différents paquetages de dév nécessaires à la compilation.
J'ai omis libxml2, glib, iconv et gettext car ça se trouve de manière plus ou
moins officielle (voir README.win32 joint).
Je joins un mini-guide et un patch contre SVN qui réalise:
- gestion de "/" / PATH_SEPARATOR
- une fonction GetHome() fonctionnelle pour windows (<Root>:\Docs and
Settings\<username>\Application Data), mais que je ne sais pas exploiter
- un problème, sans doute dû au fait que configure ne soit pas à jour,
concernant l'adjonction de sdlimage.cpp sans que les cibles associées soient
présentes dans le système de compilation (modif de Makefile.{in,am})
- réactivation de la gestion accélérée des sprites (pas de bug, au contraire,
même)
Je juge ce patch non-intrusif en l'état du code, à vous de juger. Si un filtre
coupe les pièces jointes, ils sont disponibles à l'URL précédente.
Cordialement,
Kurosu
Index: src/team/skin.cpp
===================================================================
--- src/team/skin.cpp (revision 391)
+++ src/team/skin.cpp (working copy)
@@ -113,7 +113,6 @@
}
LoadManySkins(doc.racine(),res);
-
}
catch (const xmlpp::exception &e)
{
@@ -144,6 +143,7 @@
if (!LitDocXml::LitAttrString(elem, "name", skin_name)) {
continue;
}
+
if (skin_name=="animation") {
// <animation>
xmlpp::Element *xml_config = LitDocXml::Access (root, "sprite",
skin_name);
@@ -293,7 +293,7 @@
std::cout << "o " << _("Load skins:");
std::cout.flush();
- std::string dirname = config.data_dir + "skin" + PATH_SEPARATOR;
+ std::string dirname = config.data_dir + "skin" PATH_SEPARATOR;
#if !defined(WIN32) || defined(__MINGW32__)
struct dirent *file;
DIR *dir = opendir(dirname.c_str());
@@ -325,7 +325,7 @@
#endif
#if !defined(WIN32) || defined(__MINGW32__)
- dirname = config.GetWormuxPersonalDir()+"skin"+PATH_SEPARATOR;
+ dirname = config.GetWormuxPersonalDir()+"skin" PATH_SEPARATOR;
dir = opendir(dirname.c_str());
if (dir != NULL) {
while ((file = readdir(dir)) != NULL)
Index: src/Makefile.am
===================================================================
--- src/Makefile.am (revision 391)
+++ src/Makefile.am (working copy)
@@ -22,6 +22,7 @@
graphic/sdlsurface.cpp graphic/sdlsurface.h \
graphic/video.cpp graphic/video.h \
graphic/text.cpp graphic/text.h \
+ graphic/sdlsurface.cpp graphic/sdlsurface.h \
gui/button.cpp gui/button.h \
gui/button_text.cpp gui/button_text.h \
gui/check_box.cpp gui/check_box.h \
Index: src/game/config.cpp
===================================================================
--- src/game/config.cpp (revision 391)
+++ src/game/config.cpp (working copy)
@@ -109,7 +109,7 @@
LitDocXml doc;
m_nomfich = personal_dir+NOMFICH;
#ifdef __MINGW32__
-printf("charge %s",m_nomfich.c_str());
+printf("charge %s\n",m_nomfich.c_str());
#endif
if (!doc.Charge (m_nomfich)) return false;
if (!ChargeXml (doc.racine())) return false;
Index: src/tool/file_tools.cpp
===================================================================
--- src/tool/file_tools.cpp (revision 391)
+++ src/tool/file_tools.cpp (working copy)
@@ -21,7 +21,11 @@
#include "../tool/file_tools.h"
#include <fstream>
-#include <stdlib.h> // getenv
+#ifdef _WIN32
+# include <shlobj.h> // SHGetFolderPath
+#else
+# include <stdlib.h> // getenv
+#endif
#include "i18n.h"
using namespace std;
@@ -57,6 +61,14 @@
}
#else
std::string GetHome (){
+ TCHAR szPath[MAX_PATH];
+
+ /* "Doc & Settings\username" is CSIDL_PROFILE */
+ if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, 0,
+ 0 /*SHGFP_TYPE_CURRENT*/, szPath)))
+ {
+ return szPath;
+ }
return "";
}
#endif
@@ -64,6 +76,10 @@
// Replace ~ by its true name
std::string TranslateDirectory(const std::string &directory)
{
+#ifdef _WIN32
+ std::string txt = directory;
+ return txt;
+#else
std::string home = GetHome();
std::string txt = directory;
@@ -74,4 +90,5 @@
txt.replace(pos,1,home);
}
return txt;
+#endif
}
Index: src/tool/resource_manager.cpp
===================================================================
--- src/tool/resource_manager.cpp (revision 391)
+++ src/tool/resource_manager.cpp (working copy)
@@ -123,8 +123,8 @@
path = base_path;
filename = path + xml_filename;
} else {
- assert ( xml_filename.rfind("/") != xml_filename.npos );
- path = xml_filename.substr(0, xml_filename.rfind("/")+1);
+ assert ( xml_filename.rfind(PATH_SEPARATOR) != xml_filename.npos );
+ path = xml_filename.substr(0, xml_filename.rfind(PATH_SEPARATOR)+1);
filename = xml_filename;
}
Index: src/graphic/sprite.cpp
===================================================================
--- src/graphic/sprite.cpp (revision 391)
+++ src/graphic/sprite.cpp (working copy)
@@ -503,7 +503,7 @@
void Sprite::Blit( SDL_Surface *dest, unsigned int pos_x, unsigned int pos_y){
if (!show) return;
-#ifndef __MINGW32__
+#if !defined(__MINGW32__) || defined(_WIN32) // Real MinGW is able to run this
code
SDL_Surface *tmp_surface = NULL;
bool need_free_surface = false;
Where to get some pre-built lib packages:
- glib 2.6 from http://www.gimp.org/~tml/gimp/win32/downloads.html
- libiconv from http://www.zlatkovic.com/pub/libxml/
- libxml2: using my own, not sure it changes anything (I once hadd a
versioning problem). Same place as libiconv
- libintl / gettext: gnuwin32, get bin+dev+dep packages
- libogg/vorbis/jpeg/png from http://oss.netfarm.it/mplayer-win32.php
- SDL and co: using my own. SDL_image and SDL_gfx probably to (re)build.
. SDL: http://www.libsdl.org/release/
. SDL_mixer (dev + run-time)
http://www.libsdl.org/projects/SDL_mixer/release/
. SDL_image (dev + run-time)
http://www.libsdl.org/projects/SDL_image/release/
. SDL_gfx (to build):
http://www.ferzkopp.net/Software/SDL_gfx-2.0/
Libraries used (sf/gnome projects so easy to find):
glibmm 2.6.1, libxml++ 2.8.1, libsigc++ 2.6.16:
Generic config used:
./configure --disable-debug --enable-shared --enable-static \
--prefix=/mingw --with-gnu-ld --with-pic \
--disable-nls --disable-rpath
--enable-shared --enable-static => static/shared build of wormux
--disable-debug => wishfull thinking on the .a size
--with-gnu-ld --with-pic --disable-nls --disable-rpath
=> more or less common for win32 builds of other libs (gtk mainly)
libxml++ doesn't build a shared lib, though
wormux:
./configure --with-pic --with-gnu-ld --disable-debug \
--disable-nls --disable-rpath
Then manually copy data and wormux.exe