hedgewars/PascalExports.pas
branchhedgeroid
changeset 7855 ddcdedd3330b
parent 6350 41b0a9955c47
parent 7854 0b447175594f
child 7857 2bc61f8841a1
--- a/hedgewars/PascalExports.pas	Thu Nov 24 13:44:30 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,365 +0,0 @@
-(*
- * Hedgewars, a free turn based strategy game
- * Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- *)
-
-{$INCLUDE "options.inc"}
-
-unit PascalExports;
-(*
- * If the 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
- *)
-interface
-uses uTypes, uConsts, uVariables, GLunit, uKeys, uSound, uAmmos, uUtils, uCommands;
-
-{$INCLUDE "config.inc"}
-procedure HW_versionInfo(netProto: PLongInt; versionStr: PPChar); cdecl; export;
-function HW_getNumberOfWeapons:LongInt; cdecl; export;
-function HW_getMaxNumberOfTeams:LongInt; cdecl; export;
-function HW_getMaxNumberOfHogs:LongInt; cdecl; export;
-procedure HW_terminate(closeFrontend: Boolean); cdecl; export;
-
-implementation
-{$IFDEF HWLIBRARY}
-var cZoomVal: GLfloat;
-
-// retrieve protocol information
-procedure HW_versionInfo(netProto: PLongInt; versionStr: PPChar); cdecl; export;
-begin
-    netProto^:= cNetProtoVersion;
-    versionStr^:= cVersionString;
-end;
-
-// emulate mouse/keyboard input
-procedure HW_click; cdecl; export;
-begin
-    leftClick:= true;
-end;
-
-procedure HW_ammoMenu; cdecl; export;
-begin
-    rightClick:= true;
-end;
-
-procedure HW_zoomSet(value: GLfloat); cdecl; export;
-begin
-    cZoomVal:= value;
-    ZoomValue:= value;
-end;
-
-procedure HW_zoomIn; cdecl; export;
-begin
-    if wheelDown = false then
-        wheelUp:= true;
-end;
-
-procedure HW_zoomOut; cdecl; export;
-begin
-    if wheelUp = false then
-        wheelDown:= true;
-end;
-
-procedure HW_zoomReset; cdecl; export;
-begin
-    ZoomValue:= cZoomVal;
-    // center the camera at current hog
-    if CurrentHedgehog <> nil then
-        followGear:= CurrentHedgehog^.Gear;
-end;
-
-function HW_zoomFactor: GLfloat; cdecl; export;
-begin
-    exit( ZoomValue / cDefaultZoomLevel );
-end;
-
-function HW_zoomLevel: LongInt; cdecl; export;
-begin
-    exit( trunc((ZoomValue - cDefaultZoomLevel) / cZoomDelta) );
-end;
-
-procedure HW_walkingKeysUp; cdecl; export;
-begin
-    leftKey:= false;
-    rightKey:= false;
-    upKey:= false;
-    downKey:= false;
-    preciseKey:= false;
-end;
-
-procedure HW_otherKeysUp; cdecl; export;
-begin
-    spaceKey:= false;
-    enterKey:= false;
-    backspaceKey:= false;
-end;
-
-procedure HW_allKeysUp; cdecl; export;
-begin
-    // set all keys to released
-    uKeys.initModule;
-end;
-
-procedure HW_walkLeft; cdecl; export;
-begin
-    leftKey:= true;
-end;
-
-procedure HW_walkRight; cdecl; export;
-begin
-    rightKey:= true;
-end;
-
-procedure HW_preciseSet(status:boolean); cdecl; export;
-begin
-    preciseKey:= status;
-end;
-
-procedure HW_aimUp; cdecl; export;
-begin
-    upKey:= true;
-end;
-
-procedure HW_aimDown; cdecl; export;
-begin
-    downKey:= true;
-end;
-
-procedure HW_shoot; cdecl; export;
-begin
-    spaceKey:= true;
-end;
-
-procedure HW_jump; cdecl; export;
-begin
-    enterKey:= true;
-end;
-
-procedure HW_backjump; cdecl; export;
-begin
-    backspaceKey:= true;
-end;
-
-procedure HW_tab; cdecl; export;
-begin
-    tabKey:= true;
-end;
-
-procedure HW_chat; cdecl; export;
-begin
-    chatAction:= true;
-end;
-
-procedure HW_screenshot; cdecl; export;
-begin
-    flagMakeCapture:= true;
-end;
-
-procedure HW_pause; cdecl; export;
-begin
-    if isPaused = false then
-        pauseAction:= true;
-end;
-
-procedure HW_pauseToggle; cdecl; export;
-begin
-    pauseAction:= true;
-end;
-
-function HW_isPaused: boolean; cdecl; export;
-begin
-    exit( isPaused );
-end;
-
-// equivalent to esc+y; when closeFrontend = true the game exits after memory cleanup
-procedure HW_terminate(closeFrontend: boolean); cdecl; export;
-begin
-    alsoShutdownFrontend:= closeFrontend;
-    ParseCommand('forcequit', true);
-end;
-
-function HW_getSDLWindow: pointer; cdecl; export;
-begin
-{$IFDEF SDL13}
-    exit( SDLwindow );
-{$ELSE}
-    exit( nil );
-{$ENDIF}
-end;
-
-// cursor handling
-procedure HW_setCursor(x,y: LongInt); cdecl; export;
-begin
-    CursorPoint.X:= x;
-    CursorPoint.Y:= y;
-end;
-
-procedure HW_getCursor(x,y: PLongInt); cdecl; export;
-begin
-    x^:= CursorPoint.X;
-    y^:= CursorPoint.Y;
-end;
-
-// ammo menu related functions
-function HW_isAmmoMenuOpen: boolean; cdecl; export;
-begin
-    exit( bShowAmmoMenu );
-end;
-
-function HW_isAmmoMenuNotAllowed: boolean; cdecl; export;
-begin;
-    exit( (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or
-          ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) );
-end;
-
-function HW_isWeaponRequiringClick: boolean; cdecl; export;
-begin
-    if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.BotLevel = 0) then
-        exit( (CurrentHedgehog^.Gear^.State and gstHHChooseTarget) <> 0 )
-    else
-        exit(false);
-end;
-
-function HW_isWeaponTimerable: boolean; cdecl; export;
-begin
-    if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Ammo <> nil) and (CurrentHedgehog^.BotLevel = 0) then
-        exit( (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Timerable) <> 0)
-    else
-        exit(false);
-end;
-
-function HW_isWeaponSwitch: boolean cdecl; export;
-begin
-    if (CurAmmoGear <> nil) and (CurrentHedgehog^.BotLevel = 0) then
-        exit(CurAmmoGear^.AmmoType = amSwitch)
-    else
-        exit(false)
-end;
-
-function HW_isWeaponRope: boolean cdecl; export;
-begin
-    if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Ammo <> nil) and (CurrentHedgehog^.BotLevel = 0) then
-        exit(CurrentHedgehog^.CurAmmoType = amRope)
-    else
-        exit(false);
-end;
-
-procedure HW_setGrenadeTime(time: LongInt); cdecl; export;
-begin
-    ParseCommand('/timer ' + inttostr(time), true);
-end;
-
-procedure HW_setPianoSound(snd: LongInt); cdecl; export;
-begin
-    // this most likely won't work in network game
-    if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Ammo <> nil) and (CurrentHedgehog^.BotLevel = 0)
-       and (CurrentHedgehog^.CurAmmoType = amPiano) then
-        case snd of
-            0: PlaySound(sndPiano0);
-            1: PlaySound(sndPiano1);
-            2: PlaySound(sndPiano2);
-            3: PlaySound(sndPiano3);
-            4: PlaySound(sndPiano4);
-            5: PlaySound(sndPiano5);
-            6: PlaySound(sndPiano6);
-            7: PlaySound(sndPiano7);
-            else PlaySound(sndPiano8);
-        end;
-end;
-
-function HW_getWeaponNameByIndex(whichone: LongInt): PChar; cdecl; export;
-begin
-    exit(str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId]));
-end;
-
-function HW_getWeaponCaptionByIndex(whichone: LongInt): PChar; cdecl; export;
-begin
-    exit(str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId]));
-end;
-
-function HW_getWeaponDescriptionByIndex(whichone: LongInt): PChar; cdecl; export;
-begin
-    exit(str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId]));
-end;
-
-function HW_getNumberOfWeapons:LongInt; cdecl; export;
-begin
-    exit(ord(high(TAmmoType)));
-end;
-
-procedure HW_setWeapon(whichone: LongInt); cdecl; export;
-begin
-    if (CurrentTeam = nil) then exit;
-    if (not CurrentTeam^.ExtDriven) and (CurrentTeam^.Hedgehogs[0].BotLevel = 0) then
-        SetWeapon(TAmmoType(whichone+1));
-end;
-
-function HW_isWeaponAnEffect(whichone: LongInt): boolean; cdecl; export;
-begin
-    exit(Ammoz[TAmmoType(whichone+1)].Ammo.Propz and ammoprop_Effect <> 0)
-end;
-
-function HW_getAmmoCounts(counts: PLongInt): LongInt; cdecl; export;
-var a : PHHAmmo;
-    slot, index: LongInt;
-begin
-    // nil check
-    if (CurrentHedgehog = nil) or (CurrentHedgehog^.Ammo = nil) or (CurrentTeam = nil) then
-        exit(-1);
-    // hog controlled by opponent (net or ai)
-    if (CurrentTeam^.ExtDriven) or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then
-        exit(1);
-
-    a:= CurrentHedgehog^.Ammo;
-    for slot:= 0 to cMaxSlotIndex do
-        for index:= 0 to cMaxSlotAmmoIndex do
-            if a^[slot,index].Count <> 0 then // yes, ammomenu is hell
-                counts[ord(a^[slot,index].AmmoType)-1]:= a^[slot,index].Count;
-    exit(0);
-end;
-
-procedure HW_getAmmoDelays (skipTurns: PByte); cdecl; export;
-var a : TAmmoType;
-begin
-    for a:= Low(TAmmoType) to High(TAmmoType) do
-        skipTurns[ord(a)-1]:= byte(Ammoz[a].SkipTurns);
-end;
-
-function HW_getTurnsForCurrentTeam: LongInt; cdecl; export;
-begin
-    if (CurrentTeam <> nil) and (CurrentTeam^.Clan <> nil) then
-        exit(CurrentTeam^.Clan^.TurnNumber)
-    else
-        exit(0);
-end;
-
-function HW_getMaxNumberOfHogs: LongInt; cdecl; export;
-begin
-    exit(cMaxHHIndex+1);
-end;
-
-function HW_getMaxNumberOfTeams: LongInt; cdecl; export;
-begin
-    exit(cMaxTeams);
-end;
-{$ENDIF}
-
-end.
-