diff -r 606acf1f80be -r 0a4c88935902 hedgewars/hwLibrary.pas --- a/hedgewars/hwLibrary.pas Thu May 10 22:15:31 2012 +0200 +++ b/hedgewars/hwLibrary.pas Thu May 10 23:21:56 2012 +0200 @@ -16,17 +16,72 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *) -Library hwLibrary; {$INCLUDE "options.inc"} -// Add all your Pascal units to the 'uses' clause below to add them to the program. -// Mark all Pascal procedures/functions that you wish to call from C/C++/Objective-C code using -// 'cdecl; export;' (see the fpclogo.pas unit for an example), and then add C-declarations for -// these procedures/functions to the PascalImports.h file (also in the 'Pascal Sources' group) -// to make these functions available in the C/C++/Objective-C source files -// (add '#include PascalImports.h' near the top of these files if it is not there yet) -uses PascalExports, hwengine{$IFDEF ANDROID}, jni{$ENDIF}; -exports Game, HW_versionInfo; +(* + * When engine is compiled as library this unit will export functions + * as C declarations for convenient library usage in your application + * and language of choice. + * + * See also: C declarations on Wikipedia + * http://en.wikipedia.org/wiki/X86_calling_conventions#cdecl + *) + +Library hwLibrary; + +uses hwengine, uTypes, uConsts, uVariables, uSound, uCommands, uUtils, + uLocale{$IFDEF ANDROID}, jni{$ENDIF}; + +{$INCLUDE "config.inc"} + +// retrieve protocol information +procedure HW_versionInfo(netProto: PLongInt; versionStr: PPChar); cdecl; export; +begin + netProto^:= cNetProtoVersion; + versionStr^:= cVersionString; +end; + +// equivalent to esc+y; when closeFrontend = true the game exits after memory cleanup +procedure HW_terminate(closeFrontend: boolean); cdecl; export; +begin + closeFrontend:= closeFrontend; // avoid hint + ParseCommand('forcequit', true); +end; + +function HW_getWeaponNameByIndex(whichone: LongInt): PChar; cdecl; export; +begin + HW_getWeaponNameByIndex:= (str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId])); +end; + +(*function HW_getWeaponCaptionByIndex(whichone: LongInt): PChar; cdecl; export; +begin + HW_getWeaponCaptionByIndex:= (str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId])); +end; + +function HW_getWeaponDescriptionByIndex(whichone: LongInt): PChar; cdecl; export; +begin + HW_getWeaponDescriptionByIndex:= (str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId])); +end;*) + +function HW_getNumberOfWeapons: LongInt; cdecl; export; +begin + HW_getNumberOfWeapons:= ord(high(TAmmoType)); +end; + +function HW_getMaxNumberOfHogs: LongInt; cdecl; export; +begin + HW_getMaxNumberOfHogs:= cMaxHHIndex + 1; +end; + +function HW_getMaxNumberOfTeams: LongInt; cdecl; export; +begin + HW_getMaxNumberOfTeams:= cMaxTeams; +end; + +procedure HW_memoryWarningCallback; cdecl; export; +begin + ReleaseSound(false); +end; {$IFDEF ANDROID} function JNI_HW_versionInfoNet(env: PJNIEnv; obj: JObject):JInt;cdecl; @@ -52,9 +107,19 @@ HW_getMaxNumberOfHogs name Java_Prefix + 'HWgetMaxNumberOfHogs', HW_getMaxNumberOfTeams name Java_Prefix + 'HWgetMaxNumberOfTeams', HW_terminate name Java_Prefix + 'HWterminate'; +{$ELSE} +exports + Game, + GenLandPreview, + LoadLocaleWrapper, + HW_versionInfo, + HW_terminate, + HW_getNumberOfWeapons, + HW_getMaxNumberOfHogs, + HW_getMaxNumberOfTeams, + HW_getWeaponNameByIndex, + HW_memoryWarningCallback; {$ENDIF} begin - end. -