# HG changeset patch # User nemo # Date 1368323414 14400 # Node ID e6ef8fe314bdc988fb1a80973fe4b686ff36a325 # Parent d424c7f8b34215d528b21a052c98206b65ad5e01 suggestion of unc0rr's to fix issue w/ random maps in campaign. load sidecar packages in physfs for lua. should be useful also for lua that does custom layouts diff -r d424c7f8b342 -r e6ef8fe314bd hedgewars/uPhysFSLayer.pas --- a/hedgewars/uPhysFSLayer.pas Sat May 11 21:19:44 2013 -0400 +++ b/hedgewars/uPhysFSLayer.pas Sat May 11 21:50:14 2013 -0400 @@ -46,6 +46,7 @@ function physfsReader(L: Plua_State; f: PFSFile; sz: Psize_t) : PChar; cdecl; external PhyslayerLibName; procedure physfsReaderSetBuffer(buf: pointer); cdecl; external PhyslayerLibName; +procedure hedgewarsMountPackage(filename: PChar); cdecl; external PhyslayerLibName; implementation uses uUtils, uVariables, sysutils; diff -r d424c7f8b342 -r e6ef8fe314bd hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sat May 11 21:19:44 2013 -0400 +++ b/hedgewars/uScript.pas Sat May 11 21:50:14 2013 -0400 @@ -2039,7 +2039,8 @@ // call the script file lua_pcall(luaState, 0, 0, 0); ScriptLoaded:= true - end + end; + hedgewarsMountPackage(Str2PChar(copy(s, 1, length(s)-4)+'.hwp')); end; procedure SetGlobals; diff -r d424c7f8b342 -r e6ef8fe314bd misc/libphyslayer/hwpacksmounter.c --- a/misc/libphyslayer/hwpacksmounter.c Sat May 11 21:19:44 2013 -0400 +++ b/misc/libphyslayer/hwpacksmounter.c Sat May 11 21:50:14 2013 -0400 @@ -33,3 +33,24 @@ PHYSFS_freeList(filesList); } + +PHYSFS_DECL void hedgewarsMountPackage(char * fileName) +{ + int fileNameLength = strlen(fileName); + if (fileNameLength > 4) + if (strcmp(fileName + fileNameLength - 4, ".hwp") == 0) + { + const char * dir = PHYSFS_getRealDir(fileName); + if(dir) + { + char * fullPath = (char *)malloc(strlen(dir) + fileNameLength + 2); + strcpy(fullPath, dir); + strcat(fullPath, "/"); + strcat(fullPath, fileName); + + PHYSFS_mount(fullPath, NULL, 0); + + free(fullPath); + } + } +} diff -r d424c7f8b342 -r e6ef8fe314bd misc/libphyslayer/hwpacksmounter.h --- a/misc/libphyslayer/hwpacksmounter.h Sat May 11 21:19:44 2013 -0400 +++ b/misc/libphyslayer/hwpacksmounter.h Sat May 11 21:50:14 2013 -0400 @@ -8,7 +8,7 @@ #endif PHYSFS_DECL void hedgewarsMountPackages(); - +PHYSFS_DECL void hedgewarsMountPackage(char * fileName); #ifdef __cplusplus }