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

Répondre à