From 051578cb3beb086fc56e8f548e8d93bc63302c94 Mon Sep 17 00:00:00 2001 From: TTimo Date: Mon, 25 Feb 2008 04:17:23 +0000 Subject: [PATCH] added file copy tree for the game packs - lists supported games git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@197 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- config.py | 4 +- {radiant => install}/bitmaps/brush_flipx.bmp | Bin {radiant => install}/bitmaps/brush_flipy.bmp | Bin {radiant => install}/bitmaps/brush_flipz.bmp | Bin .../bitmaps/brush_rotatex.bmp | Bin .../bitmaps/brush_rotatey.bmp | Bin .../bitmaps/brush_rotatez.bmp | Bin {radiant => install}/bitmaps/cap_bevel.bmp | Bin {radiant => install}/bitmaps/cap_endcap.bmp | Bin {radiant => install}/bitmaps/cap_ibevel.bmp | Bin {radiant => install}/bitmaps/cap_iendcap.bmp | Bin {radiant => install}/bitmaps/curve_cap.bmp | Bin .../bitmaps/dontselectcurve.bmp | Bin .../bitmaps/dontselectmodel.bmp | Bin {radiant => install}/bitmaps/file_open.bmp | Bin {radiant => install}/bitmaps/file_save.bmp | Bin {radiant => install}/bitmaps/icon.bmp | Bin {radiant => install}/bitmaps/logo.bmp | Bin {radiant => install}/bitmaps/patch_bend.bmp | Bin .../bitmaps/patch_drilldown.bmp | Bin {radiant => install}/bitmaps/patch_insdel.bmp | Bin .../bitmaps/patch_showboundingbox.bmp | Bin {radiant => install}/bitmaps/patch_weld.bmp | Bin .../bitmaps/patch_wireframe.bmp | Bin .../bitmaps/popup_selection.bmp | Bin {radiant => install}/bitmaps/scalelockx.bmp | Bin {radiant => install}/bitmaps/scalelocky.bmp | Bin {radiant => install}/bitmaps/scalelockz.bmp | Bin .../bitmaps/select_mouserotate.bmp | Bin .../bitmaps/select_mousescale.bmp | Bin .../bitmaps/selection_csgmerge.bmp | Bin .../bitmaps/selection_csgsubtract.bmp | Bin .../bitmaps/selection_makehollow.bmp | Bin .../bitmaps/selection_selectcompletetall.bmp | Bin .../bitmaps/selection_selectinside.bmp | Bin .../bitmaps/selection_selectpartialtall.bmp | Bin .../bitmaps/selection_selecttouching.bmp | Bin .../bitmaps/show_entities.bmp | Bin {radiant => install}/bitmaps/splash.bmp | Bin .../bitmaps/textures_popup.bmp | Bin .../bitmaps/view_cameratoggle.bmp | Bin .../bitmaps/view_cameraupdate.bmp | Bin {radiant => install}/bitmaps/view_change.bmp | Bin {radiant => install}/bitmaps/view_clipper.bmp | Bin .../bitmaps/view_cubicclipping.bmp | Bin {radiant => install}/bitmaps/view_entity.bmp | Bin {radiant => install}/bitmaps/window1.bmp | Bin {radiant => install}/bitmaps/window2.bmp | Bin {radiant => install}/bitmaps/window3.bmp | Bin {radiant => install}/bitmaps/window4.bmp | Bin libs/missing.h | 1 + radiant/brush.cpp | 2 +- radiant/camwindow.cpp | 2 +- radiant/dialog.cpp | 2 +- radiant/filters.cpp | 2 +- radiant/missing.cpp | 157 ++++++++---------- radiant/preferences.cpp | 68 +++++++- radiant/preferences.h | 23 ++- 58 files changed, 153 insertions(+), 108 deletions(-) rename {radiant => install}/bitmaps/brush_flipx.bmp (100%) rename {radiant => install}/bitmaps/brush_flipy.bmp (100%) rename {radiant => install}/bitmaps/brush_flipz.bmp (100%) rename {radiant => install}/bitmaps/brush_rotatex.bmp (100%) rename {radiant => install}/bitmaps/brush_rotatey.bmp (100%) rename {radiant => install}/bitmaps/brush_rotatez.bmp (100%) rename {radiant => install}/bitmaps/cap_bevel.bmp (100%) rename {radiant => install}/bitmaps/cap_endcap.bmp (100%) rename {radiant => install}/bitmaps/cap_ibevel.bmp (100%) rename {radiant => install}/bitmaps/cap_iendcap.bmp (100%) rename {radiant => install}/bitmaps/curve_cap.bmp (100%) rename {radiant => install}/bitmaps/dontselectcurve.bmp (100%) rename {radiant => install}/bitmaps/dontselectmodel.bmp (100%) rename {radiant => install}/bitmaps/file_open.bmp (100%) rename {radiant => install}/bitmaps/file_save.bmp (100%) rename {radiant => install}/bitmaps/icon.bmp (100%) rename {radiant => install}/bitmaps/logo.bmp (100%) rename {radiant => install}/bitmaps/patch_bend.bmp (100%) rename {radiant => install}/bitmaps/patch_drilldown.bmp (100%) rename {radiant => install}/bitmaps/patch_insdel.bmp (100%) rename {radiant => install}/bitmaps/patch_showboundingbox.bmp (100%) rename {radiant => install}/bitmaps/patch_weld.bmp (100%) rename {radiant => install}/bitmaps/patch_wireframe.bmp (100%) rename {radiant => install}/bitmaps/popup_selection.bmp (100%) rename {radiant => install}/bitmaps/scalelockx.bmp (100%) rename {radiant => install}/bitmaps/scalelocky.bmp (100%) rename {radiant => install}/bitmaps/scalelockz.bmp (100%) rename {radiant => install}/bitmaps/select_mouserotate.bmp (100%) rename {radiant => install}/bitmaps/select_mousescale.bmp (100%) rename {radiant => install}/bitmaps/selection_csgmerge.bmp (100%) rename {radiant => install}/bitmaps/selection_csgsubtract.bmp (100%) rename {radiant => install}/bitmaps/selection_makehollow.bmp (100%) rename {radiant => install}/bitmaps/selection_selectcompletetall.bmp (100%) rename {radiant => install}/bitmaps/selection_selectinside.bmp (100%) rename {radiant => install}/bitmaps/selection_selectpartialtall.bmp (100%) rename {radiant => install}/bitmaps/selection_selecttouching.bmp (100%) rename {radiant => install}/bitmaps/show_entities.bmp (100%) rename {radiant => install}/bitmaps/splash.bmp (100%) rename {radiant => install}/bitmaps/textures_popup.bmp (100%) rename {radiant => install}/bitmaps/view_cameratoggle.bmp (100%) rename {radiant => install}/bitmaps/view_cameraupdate.bmp (100%) rename {radiant => install}/bitmaps/view_change.bmp (100%) rename {radiant => install}/bitmaps/view_clipper.bmp (100%) rename {radiant => install}/bitmaps/view_cubicclipping.bmp (100%) rename {radiant => install}/bitmaps/view_entity.bmp (100%) rename {radiant => install}/bitmaps/window1.bmp (100%) rename {radiant => install}/bitmaps/window2.bmp (100%) rename {radiant => install}/bitmaps/window3.bmp (100%) rename {radiant => install}/bitmaps/window4.bmp (100%) diff --git a/config.py b/config.py index 21cfb7a3..cdf869db 100644 --- a/config.py +++ b/config.py @@ -231,8 +231,8 @@ class Config: env.Append( CXXFLAGS = [ '-g' ] ) env.Append( CPPDEFINES = [ '_DEBUG' ] ) else: - env.Append( CFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations' ] ) - env.Append( CXXFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations' ] ) + env.Append( CFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations', '-fno-strict-aliasing' ] ) + env.Append( CXXFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations','-fno-strict-aliasing' ] ) #env.Append( CFLAGS = [ '-march=pentium3' ] ) # env.Append( LINKFLAGS = [ '-m32' ] ) diff --git a/radiant/bitmaps/brush_flipx.bmp b/install/bitmaps/brush_flipx.bmp similarity index 100% rename from radiant/bitmaps/brush_flipx.bmp rename to install/bitmaps/brush_flipx.bmp diff --git a/radiant/bitmaps/brush_flipy.bmp b/install/bitmaps/brush_flipy.bmp similarity index 100% rename from radiant/bitmaps/brush_flipy.bmp rename to install/bitmaps/brush_flipy.bmp diff --git a/radiant/bitmaps/brush_flipz.bmp b/install/bitmaps/brush_flipz.bmp similarity index 100% rename from radiant/bitmaps/brush_flipz.bmp rename to install/bitmaps/brush_flipz.bmp diff --git a/radiant/bitmaps/brush_rotatex.bmp b/install/bitmaps/brush_rotatex.bmp similarity index 100% rename from radiant/bitmaps/brush_rotatex.bmp rename to install/bitmaps/brush_rotatex.bmp diff --git a/radiant/bitmaps/brush_rotatey.bmp b/install/bitmaps/brush_rotatey.bmp similarity index 100% rename from radiant/bitmaps/brush_rotatey.bmp rename to install/bitmaps/brush_rotatey.bmp diff --git a/radiant/bitmaps/brush_rotatez.bmp b/install/bitmaps/brush_rotatez.bmp similarity index 100% rename from radiant/bitmaps/brush_rotatez.bmp rename to install/bitmaps/brush_rotatez.bmp diff --git a/radiant/bitmaps/cap_bevel.bmp b/install/bitmaps/cap_bevel.bmp similarity index 100% rename from radiant/bitmaps/cap_bevel.bmp rename to install/bitmaps/cap_bevel.bmp diff --git a/radiant/bitmaps/cap_endcap.bmp b/install/bitmaps/cap_endcap.bmp similarity index 100% rename from radiant/bitmaps/cap_endcap.bmp rename to install/bitmaps/cap_endcap.bmp diff --git a/radiant/bitmaps/cap_ibevel.bmp b/install/bitmaps/cap_ibevel.bmp similarity index 100% rename from radiant/bitmaps/cap_ibevel.bmp rename to install/bitmaps/cap_ibevel.bmp diff --git a/radiant/bitmaps/cap_iendcap.bmp b/install/bitmaps/cap_iendcap.bmp similarity index 100% rename from radiant/bitmaps/cap_iendcap.bmp rename to install/bitmaps/cap_iendcap.bmp diff --git a/radiant/bitmaps/curve_cap.bmp b/install/bitmaps/curve_cap.bmp similarity index 100% rename from radiant/bitmaps/curve_cap.bmp rename to install/bitmaps/curve_cap.bmp diff --git a/radiant/bitmaps/dontselectcurve.bmp b/install/bitmaps/dontselectcurve.bmp similarity index 100% rename from radiant/bitmaps/dontselectcurve.bmp rename to install/bitmaps/dontselectcurve.bmp diff --git a/radiant/bitmaps/dontselectmodel.bmp b/install/bitmaps/dontselectmodel.bmp similarity index 100% rename from radiant/bitmaps/dontselectmodel.bmp rename to install/bitmaps/dontselectmodel.bmp diff --git a/radiant/bitmaps/file_open.bmp b/install/bitmaps/file_open.bmp similarity index 100% rename from radiant/bitmaps/file_open.bmp rename to install/bitmaps/file_open.bmp diff --git a/radiant/bitmaps/file_save.bmp b/install/bitmaps/file_save.bmp similarity index 100% rename from radiant/bitmaps/file_save.bmp rename to install/bitmaps/file_save.bmp diff --git a/radiant/bitmaps/icon.bmp b/install/bitmaps/icon.bmp similarity index 100% rename from radiant/bitmaps/icon.bmp rename to install/bitmaps/icon.bmp diff --git a/radiant/bitmaps/logo.bmp b/install/bitmaps/logo.bmp similarity index 100% rename from radiant/bitmaps/logo.bmp rename to install/bitmaps/logo.bmp diff --git a/radiant/bitmaps/patch_bend.bmp b/install/bitmaps/patch_bend.bmp similarity index 100% rename from radiant/bitmaps/patch_bend.bmp rename to install/bitmaps/patch_bend.bmp diff --git a/radiant/bitmaps/patch_drilldown.bmp b/install/bitmaps/patch_drilldown.bmp similarity index 100% rename from radiant/bitmaps/patch_drilldown.bmp rename to install/bitmaps/patch_drilldown.bmp diff --git a/radiant/bitmaps/patch_insdel.bmp b/install/bitmaps/patch_insdel.bmp similarity index 100% rename from radiant/bitmaps/patch_insdel.bmp rename to install/bitmaps/patch_insdel.bmp diff --git a/radiant/bitmaps/patch_showboundingbox.bmp b/install/bitmaps/patch_showboundingbox.bmp similarity index 100% rename from radiant/bitmaps/patch_showboundingbox.bmp rename to install/bitmaps/patch_showboundingbox.bmp diff --git a/radiant/bitmaps/patch_weld.bmp b/install/bitmaps/patch_weld.bmp similarity index 100% rename from radiant/bitmaps/patch_weld.bmp rename to install/bitmaps/patch_weld.bmp diff --git a/radiant/bitmaps/patch_wireframe.bmp b/install/bitmaps/patch_wireframe.bmp similarity index 100% rename from radiant/bitmaps/patch_wireframe.bmp rename to install/bitmaps/patch_wireframe.bmp diff --git a/radiant/bitmaps/popup_selection.bmp b/install/bitmaps/popup_selection.bmp similarity index 100% rename from radiant/bitmaps/popup_selection.bmp rename to install/bitmaps/popup_selection.bmp diff --git a/radiant/bitmaps/scalelockx.bmp b/install/bitmaps/scalelockx.bmp similarity index 100% rename from radiant/bitmaps/scalelockx.bmp rename to install/bitmaps/scalelockx.bmp diff --git a/radiant/bitmaps/scalelocky.bmp b/install/bitmaps/scalelocky.bmp similarity index 100% rename from radiant/bitmaps/scalelocky.bmp rename to install/bitmaps/scalelocky.bmp diff --git a/radiant/bitmaps/scalelockz.bmp b/install/bitmaps/scalelockz.bmp similarity index 100% rename from radiant/bitmaps/scalelockz.bmp rename to install/bitmaps/scalelockz.bmp diff --git a/radiant/bitmaps/select_mouserotate.bmp b/install/bitmaps/select_mouserotate.bmp similarity index 100% rename from radiant/bitmaps/select_mouserotate.bmp rename to install/bitmaps/select_mouserotate.bmp diff --git a/radiant/bitmaps/select_mousescale.bmp b/install/bitmaps/select_mousescale.bmp similarity index 100% rename from radiant/bitmaps/select_mousescale.bmp rename to install/bitmaps/select_mousescale.bmp diff --git a/radiant/bitmaps/selection_csgmerge.bmp b/install/bitmaps/selection_csgmerge.bmp similarity index 100% rename from radiant/bitmaps/selection_csgmerge.bmp rename to install/bitmaps/selection_csgmerge.bmp diff --git a/radiant/bitmaps/selection_csgsubtract.bmp b/install/bitmaps/selection_csgsubtract.bmp similarity index 100% rename from radiant/bitmaps/selection_csgsubtract.bmp rename to install/bitmaps/selection_csgsubtract.bmp diff --git a/radiant/bitmaps/selection_makehollow.bmp b/install/bitmaps/selection_makehollow.bmp similarity index 100% rename from radiant/bitmaps/selection_makehollow.bmp rename to install/bitmaps/selection_makehollow.bmp diff --git a/radiant/bitmaps/selection_selectcompletetall.bmp b/install/bitmaps/selection_selectcompletetall.bmp similarity index 100% rename from radiant/bitmaps/selection_selectcompletetall.bmp rename to install/bitmaps/selection_selectcompletetall.bmp diff --git a/radiant/bitmaps/selection_selectinside.bmp b/install/bitmaps/selection_selectinside.bmp similarity index 100% rename from radiant/bitmaps/selection_selectinside.bmp rename to install/bitmaps/selection_selectinside.bmp diff --git a/radiant/bitmaps/selection_selectpartialtall.bmp b/install/bitmaps/selection_selectpartialtall.bmp similarity index 100% rename from radiant/bitmaps/selection_selectpartialtall.bmp rename to install/bitmaps/selection_selectpartialtall.bmp diff --git a/radiant/bitmaps/selection_selecttouching.bmp b/install/bitmaps/selection_selecttouching.bmp similarity index 100% rename from radiant/bitmaps/selection_selecttouching.bmp rename to install/bitmaps/selection_selecttouching.bmp diff --git a/radiant/bitmaps/show_entities.bmp b/install/bitmaps/show_entities.bmp similarity index 100% rename from radiant/bitmaps/show_entities.bmp rename to install/bitmaps/show_entities.bmp diff --git a/radiant/bitmaps/splash.bmp b/install/bitmaps/splash.bmp similarity index 100% rename from radiant/bitmaps/splash.bmp rename to install/bitmaps/splash.bmp diff --git a/radiant/bitmaps/textures_popup.bmp b/install/bitmaps/textures_popup.bmp similarity index 100% rename from radiant/bitmaps/textures_popup.bmp rename to install/bitmaps/textures_popup.bmp diff --git a/radiant/bitmaps/view_cameratoggle.bmp b/install/bitmaps/view_cameratoggle.bmp similarity index 100% rename from radiant/bitmaps/view_cameratoggle.bmp rename to install/bitmaps/view_cameratoggle.bmp diff --git a/radiant/bitmaps/view_cameraupdate.bmp b/install/bitmaps/view_cameraupdate.bmp similarity index 100% rename from radiant/bitmaps/view_cameraupdate.bmp rename to install/bitmaps/view_cameraupdate.bmp diff --git a/radiant/bitmaps/view_change.bmp b/install/bitmaps/view_change.bmp similarity index 100% rename from radiant/bitmaps/view_change.bmp rename to install/bitmaps/view_change.bmp diff --git a/radiant/bitmaps/view_clipper.bmp b/install/bitmaps/view_clipper.bmp similarity index 100% rename from radiant/bitmaps/view_clipper.bmp rename to install/bitmaps/view_clipper.bmp diff --git a/radiant/bitmaps/view_cubicclipping.bmp b/install/bitmaps/view_cubicclipping.bmp similarity index 100% rename from radiant/bitmaps/view_cubicclipping.bmp rename to install/bitmaps/view_cubicclipping.bmp diff --git a/radiant/bitmaps/view_entity.bmp b/install/bitmaps/view_entity.bmp similarity index 100% rename from radiant/bitmaps/view_entity.bmp rename to install/bitmaps/view_entity.bmp diff --git a/radiant/bitmaps/window1.bmp b/install/bitmaps/window1.bmp similarity index 100% rename from radiant/bitmaps/window1.bmp rename to install/bitmaps/window1.bmp diff --git a/radiant/bitmaps/window2.bmp b/install/bitmaps/window2.bmp similarity index 100% rename from radiant/bitmaps/window2.bmp rename to install/bitmaps/window2.bmp diff --git a/radiant/bitmaps/window3.bmp b/install/bitmaps/window3.bmp similarity index 100% rename from radiant/bitmaps/window3.bmp rename to install/bitmaps/window3.bmp diff --git a/radiant/bitmaps/window4.bmp b/install/bitmaps/window4.bmp similarity index 100% rename from radiant/bitmaps/window4.bmp rename to install/bitmaps/window4.bmp diff --git a/libs/missing.h b/libs/missing.h index f374d1ac..298ef605 100644 --- a/libs/missing.h +++ b/libs/missing.h @@ -67,6 +67,7 @@ inline int GetPrivateProfileInt(char* a, char* b, int i, char* c) { return i; }; #define VERIFY(a) a; int GetFullPathName(const char *lpFileName, int nBufferLength, char *lpBuffer, char **lpFilePart); bool CopyFile(const char *lpExistingFileName, const char *lpNewFileName); +bool CopyTree( const char* source, const char* dest ); #ifndef APIENTRY #define APIENTRY diff --git a/radiant/brush.cpp b/radiant/brush.cpp index d6d1b95c..18866b4f 100644 --- a/radiant/brush.cpp +++ b/radiant/brush.cpp @@ -1534,7 +1534,7 @@ Makes the current brush have the given number of 2d sides */ void Brush_MakeSided (int sides) { - int i, axis; + int i, axis = 0; vec3_t mins, maxs; brush_t *b; texdef_t *texdef; diff --git a/radiant/camwindow.cpp b/radiant/camwindow.cpp index 42a569b3..85cdccc6 100644 --- a/radiant/camwindow.cpp +++ b/radiant/camwindow.cpp @@ -1271,7 +1271,7 @@ void CamWnd::Cam_Draw() face_t *face; float screenaspect; float yfov; - double start, end; + double start = 0.0, end; int i; if (!active_brushes.next) diff --git a/radiant/dialog.cpp b/radiant/dialog.cpp index a2c37ec3..4f71d41b 100644 --- a/radiant/dialog.cpp +++ b/radiant/dialog.cpp @@ -94,7 +94,7 @@ void Dialog::Create () g_object_set_data (G_OBJECT (m_pWidget), "loop", &m_nLoop); g_object_set_data (G_OBJECT (m_pWidget), "ret", &m_nReturn); - BuildDialog (); + BuildDialog(); m_bNeedBuild = false; } } diff --git a/radiant/filters.cpp b/radiant/filters.cpp index 9bd85035..f4dd1ba3 100644 --- a/radiant/filters.cpp +++ b/radiant/filters.cpp @@ -137,7 +137,7 @@ bool FilterBrush(brush_t *pb) || !strncmp( pb->owner->eclass->name, "func", 4) || !strncmp( pb->owner->eclass->name, "trigger", 7) ) && !pb->patchBrush ) { - bool filterbrush; + bool filterbrush = false; for (face_t *f=pb->brush_faces;f!=NULL;f = f->next) { filterbrush=false; diff --git a/radiant/missing.cpp b/radiant/missing.cpp index cf7c820f..522980cd 100644 --- a/radiant/missing.cpp +++ b/radiant/missing.cpp @@ -39,27 +39,32 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include +#include #include +#include #include "missing.h" +#include "qsysprintf.h" bool CopyFile(const char *lpExistingFileName, const char *lpNewFileName) { FILE *src, *dst; void* buf; - int l, ret = 0; + int l; + bool ret = false; char realsrc[PATH_MAX], realdest[PATH_MAX]; realpath (lpExistingFileName, realsrc); realpath (lpNewFileName, realdest); src = fopen (realsrc, "rb"); - if (!src) - return 0; + if ( !src ) { + return false; + } dst = fopen (realdest, "wb"); - if (!dst) - { + if (!dst) { fclose (src); - return 0; + return false; } fseek (src, 0, SEEK_END); @@ -70,7 +75,7 @@ bool CopyFile(const char *lpExistingFileName, const char *lpNewFileName) if (buf != NULL) if (fread (buf, l, 1, src) == 1) if (fwrite (buf, l, 1, dst) == 1) - ret = 1; + ret = true; g_free (buf); fclose (src); @@ -79,6 +84,61 @@ bool CopyFile(const char *lpExistingFileName, const char *lpNewFileName) return ret; } +bool CreateDirectory( const char *directory ) { + if ( mkdir( directory, 0777 ) == -1 ) { + Sys_Printf( "mkdir %s failed\n", directory ); + return false; + } + return true; +} + +bool CopyTree( const char *source, const char *dest ) { + DIR *dir; + struct dirent *dirlist; + struct stat sbuf; + Str srcEntry; + Str dstEntry; + + dir = opendir( source ); + if ( dir != NULL ) { + while ( ( dirlist = readdir( dir ) ) != NULL ) { + if ( strcmp( dirlist->d_name, "." ) == 0 || strcmp( dirlist->d_name, ".." ) == 0 ) { + continue; + } + if ( strcmp( dirlist->d_name, ".svn" ) == 0 ) { + continue; + } + srcEntry = source; + srcEntry += "/"; + srcEntry += dirlist->d_name; + dstEntry = dest; + dstEntry += "/"; + dstEntry += dirlist->d_name; + if ( stat( srcEntry.GetBuffer(), &sbuf ) == -1 ) { + Sys_Printf( "stat %s failed\n", srcEntry.GetBuffer() ); + } + if ( S_ISDIR( sbuf.st_mode ) ) { + bool ret; + if ( stat( dstEntry.GetBuffer(), &sbuf ) == -1 ) { + ret = CreateDirectory( dstEntry.GetBuffer() ); + } + ret = CopyTree( srcEntry.GetBuffer(), dstEntry.GetBuffer() ); + if ( !ret ) { + return false; + } + } else { + Sys_Printf( "copy %s -> %s\n", srcEntry.GetBuffer(), dstEntry.GetBuffer() ); + bool ret = CopyFile( srcEntry.GetBuffer(), dstEntry.GetBuffer() ); + if ( !ret ) { + return false; + } + } + } + closedir( dir ); + } + return true; +} + int GetFullPathName(const char *lpFileName, int nBufferLength, char *lpBuffer, char **lpFilePart) { if (lpFileName[0] == '/') @@ -116,88 +176,5 @@ int GetFullPathName(const char *lpFileName, int nBufferLength, char *lpBuffer, c return strlen (lpBuffer); } -/* -static void g_string_sprintfa_int (GString *string, const gchar *fmt, va_list args) -{ - gchar *buffer; - - buffer = g_strdup_vprintf (fmt, args); - g_string_append (string, buffer); - g_free (buffer); -} - -const CString& CString::operator=(const char* lpsz) -{ - g_string_assign (m_str, lpsz); - return *this; -} - -const CString& CString::operator+=(const char* lpsz) -{ - g_string_append (m_str, lpsz); - return *this; -} - -CString::operator char*() const -{ - return m_str->str; -} - -void CString::Format(const char* fmt, ...) -{ - va_list args; - - g_string_truncate (m_str, 0); - - va_start (args, fmt); - g_string_sprintfa_int (m_str, fmt, args); - va_end (args); -} - -CString CString::Right(int nCount) const -{ - if (nCount < 0) - nCount = 0; - else if (nCount > m_str->len) - nCount = m_str->len; - - CString dest (&m_str->str[m_str->len-nCount]); - return dest; -} - -CString CString::Left(int nCount) const -{ - if (nCount < 0) - nCount = 0; - else if (nCount > m_str->len) - nCount = m_str->len; - - CString dest; - dest.m_str = g_string_sized_new (nCount); - memcpy (dest.m_str->str, m_str->str, nCount); - dest.m_str->str[nCount] = 0; - return dest; -} - -void CString::SetAt(int nIndex, char ch) -{ - if (nIndex >= 0 && nIndex < m_str->len) - m_str->str[nIndex] = ch; -} - -char CString::GetAt(int nIndex) const -{ - if (nIndex >= 0 && nIndex < m_str->len) - return m_str->str[nIndex]; - return 0; -} - -char CString::operator[](int nIndex) const -{ - if (nIndex >= 0 && nIndex < m_str->len) - return m_str->str[nIndex]; - return 0; -} -*/ #endif diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 8fdb419b..2e59e0f9 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -3122,6 +3122,10 @@ CGameInstall ============================================================ */ +CGameInstall::CGameInstall() { + memset( m_availGames, 0, sizeof( m_availGames ) ); +} + void CGameInstall::BuildDialog() { GtkWidget *dlg, *vbox1, *button, *text, *combo, *entry; @@ -3141,9 +3145,21 @@ void CGameInstall::BuildDialog() { gtk_box_pack_start( GTK_BOX( vbox1 ), combo, FALSE, FALSE, 0 ); GList *combo_list = NULL; - combo_list = g_list_append( combo_list, "Quake III Arena and mods" ); - combo_list = g_list_append( combo_list, "Urban Terror standalone" ); - combo_list = g_list_append( combo_list, "Warsaw" ); + int iGame = 0; + while ( m_availGames[ iGame ] != GAME_NONE ) { + switch ( m_availGames[ iGame ] ) { + case GAME_Q3: + combo_list = g_list_append( combo_list, "Quake III Arena (including mods)" ); + break; + case GAME_URT: + combo_list = g_list_append( combo_list, "Urban Terror (standalone)" ); + break; + case GAME_WARSOW: + combo_list = g_list_append( combo_list, "Warsow" ); + break; + } + iGame++; + } gtk_combo_set_popdown_strings( GTK_COMBO( combo ), combo_list ); g_list_free( combo_list ); AddDialogData( combo, &m_nComboSelect, DLG_COMBO_INT ); @@ -3187,6 +3203,7 @@ void CGameInstall::BuildDialog() { } void CGameInstall::Run() { + ScanGames(); DoModal(); Sys_Printf( "combo: %d name: %s engine: %s mod: %s\n", m_nComboSelect, m_strName.GetBuffer(), m_strEngine.GetBuffer(), m_strMod.GetBuffer() ); @@ -3205,13 +3222,25 @@ void CGameInstall::Run() { fprintf( fg, " name=\"%s\"\n", m_strName.GetBuffer() ); fprintf( fg, " gametools=\"%sgames\"\n", g_strAppPath.GetBuffer() ); fprintf( fg, " enginepath=\"%s\"\n", m_strEngine.GetBuffer() ); - switch ( m_nComboSelect ) { - case GAME_Q3: + switch ( m_availGames[ m_nComboSelect ] ) { + case GAME_Q3: { + Str source = g_strAppPath.GetBuffer(); + source += "installs/"; + source += Q3_PACK; + Str dest = m_strEngine.GetBuffer(); + CopyTree( source.GetBuffer(), dest.GetBuffer() ); fprintf( fg, " basegame=\"baseq3\"\n" ); break; - case GAME_URT: + } + case GAME_URT: { + Str source = g_strAppPath.GetBuffer(); + source += "installs/"; + source += URT_PACK; + Str dest = m_strEngine.GetBuffer(); + CopyTree( source.GetBuffer(), dest.GetBuffer() ); fprintf( fg, " basegame=\"q3ut4\"\n" ); break; + } case GAME_WARSOW: fprintf( fg, " basegame=\"basewsw\"\n" ); break; @@ -3219,3 +3248,30 @@ void CGameInstall::Run() { fprintf( fg, "/>\n" ); fclose( fg ); } + +/* +=============== +CGameInstall::ScanGames +scan for active games that can be installed, based on the presence +=============== +*/ +void CGameInstall::ScanGames() { + Str pakPaths = g_strAppPath.GetBuffer(); + DIR *dir; + struct dirent *dirlist; + int iGame = 0; + + pakPaths += "installs/"; + dir = opendir( pakPaths.GetBuffer() ); + if ( dir != NULL ) { + while ( ( dirlist = readdir( dir ) ) != NULL ) { + if ( stricmp( dirlist->d_name, Q3_PACK ) == 0 ) { + m_availGames[ iGame++ ] = GAME_Q3; + } + if ( stricmp( dirlist->d_name, URT_PACK ) == 0 ) { + m_availGames[ iGame++ ] = GAME_URT; + } + } + closedir( dir ); + } +} diff --git a/radiant/preferences.h b/radiant/preferences.h index 908616ad..dfc1be5c 100644 --- a/radiant/preferences.h +++ b/radiant/preferences.h @@ -196,22 +196,33 @@ public: /*! select games, copy editing assets and write out configuration files */ + +#define Q3_PACK "Q3Pack" +#define URT_PACK "UrTPack" + class CGameInstall : public Dialog { public: + CGameInstall(); + void ScanGames(); void Run(); void BuildDialog(); enum gameType_e { - GAME_Q3, + GAME_NONE = 0, + GAME_Q3 = 1, GAME_URT, - GAME_WARSOW + GAME_WARSOW, + GAME_COUNT }; protected: - Str m_strName; - Str m_strMod; - Str m_strEngine; - int m_nComboSelect; + Str m_strName; + Str m_strMod; + Str m_strEngine; + int m_nComboSelect; + + // maps from m_nComboSelect to the games + int m_availGames[GAME_COUNT]; }; /*! -- 2.39.2