hedgewars/uConsts.pas
changeset 1 30f2d1037d5d
child 2 4eeab397c3c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hedgewars/uConsts.pas	Mon Aug 22 13:35:41 2005 +0000
@@ -0,0 +1,303 @@
+(*
+ * Hedgewars, a worms-like game
+ * Copyright (c) 2004, 2005 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * Distributed under the terms of the BSD-modified licence:
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * with the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *)
+
+unit uConsts;
+interface
+uses SDLh;
+{$INCLUDE options.inc}
+type TStuff     = (sHorizont, sSky, sConsoleBG, sPowerBar, sQuestion);
+     TGameState = (gsLandGen, gsStart, gsGame, gsConsole, gsExit);
+     TGameType  = (gmtLocal, gmtDemo, gmtNet);
+     TPathType  = (ptData, ptGraphics, ptThemes, ptThemeCurrent, ptTeams, ptMaps,
+                   ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts);
+     TSprite    = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
+                   sprLag, sprArrow, sprGrenade, sprTargetP, sprUFO,
+                   sprSmokeTrace, sprRopeHook);
+     TGearType  = (gtCloud, gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag,
+                   gtGrave, gtUFO, gtShotgunShot, gtActionTimer, gtPickHammer, gtRope,
+                   gtSmokeTrace);
+     TSound     = (sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, sndSplash,
+                   sndShotgunReload, sndShotgunFire, sndGraveImpact);
+     TAmmoType  = (amGrenade, amBazooka, amUFO, amShotgun, amPickHammer, amSkip, amRope);
+     THWFont    = (fnt16, fntBig);
+     THHFont    = record
+                  Handle: PTTF_Font;
+                  Height: integer;
+                  Name: string[15];
+                  end;
+     TAmmo = record
+             Propz: LongWord;
+             Count: LongWord;
+             NumPerTurn: LongWord;
+             Timer: LongWord;
+             AmmoType: TAmmoType;
+             end;
+
+
+resourcestring
+      errmsgCreateSurface   = 'Error creating DirectDraw7 surface';
+      errmsgNoDesc          = 'Unknown error';
+      errmsgTransparentSet  = 'Error setting transparent color';
+      errmsgDynamicVar      = 'Error working with dynamic memory';
+      errmsgUnknownCommand  = 'Unknown command';
+      errmsgUnknownVariable = 'Unknown variable';
+      errmsgIncorrectUse    = 'Incorrect use';
+      errmsgShouldntRun     = 'This program shouldn''t be run manually';
+
+      msgLoading           = 'Loading ';
+      msgOK                = 'ok';
+      msgFailed            = 'failed';
+      msgGettingConfig     = 'Getting game config...';
+
+const
+      cAppName  = 'hw';
+      cAppTitle = 'hw';
+      cNetProtoVersion = 1;
+
+      rndfillstr = 'hw';
+
+      cTransparentColor: Cardinal = $000000;
+
+      cMaxHHIndex = 9;
+      cMaxHHs     = 20;
+      cHHSurfaceWidth     = 512;
+      cHHSurfaceHeigth    = 256;
+
+      cHHHalfHeight = 11;
+
+      cKeyMaxIndex = 322;
+
+      cMaxCaptions         = 4;
+
+      cInactDelay = 1500;
+
+      gstDrowning       = $00000001;
+      gstHHDriven       = $00000002;
+      gstMoving         = $00000004;
+      gstAttacked       = $00000008;
+      gstAttacking      = $00000010;
+      gstCollision      = $00000020;
+      gstHHChooseTarget = $00000040;
+      gstFalling        = $00000080;
+      gstHHJumping      = $00000100;
+      gsttmpFlag        = $00000200;
+      gstOutOfHH        = $00000400;
+      gstHHThinking     = $00000800;
+
+      gtsStartGame      = 1;
+
+      gm_Left   = $00000001;
+      gm_Right  = $00000002;
+      gm_Up     = $00000004;
+      gm_Down   = $00000008;
+      gm_Switch = $00000010;
+      gm_Attack = $00000020;
+      gm_LJump  = $00000040;
+      gm_HJump  = $00000080;
+      gm_Destroy= $00000100;
+
+      cMaxSlot            = 4;
+      cMaxSlotAmmo        = 1;
+
+      ammoprop_Timerable    = $00000001;
+      ammoprop_Power        = $00000002;
+      ammoprop_NeedTarget   = $00000004;
+      ammoprop_ForwMsgs     = $00000008;
+      ammoprop_AttackInFall = $00000010;
+      ammoprop_AttackInJump = $00000020;
+      AMMO_INFINITE = High(LongWord);
+
+      capgrpStartGame     = 0;
+      capgrpAmmoinfo      = 1;
+      capgrpNetSay        = 2;
+
+      EXPLAllDamageInRadius = 1;
+      EXPLAutoSound         = 2;
+      EXPLNoDamage          = 4;
+
+      cToggleConsoleKey     = 39;
+
+      NoPointX = Low(Integer); // константа для TargetPoint, показывает, что цель не указана
+
+      cLandFileName = 'Land.bmp';
+      cHHFileName   = 'Hedgehog.png';
+      cCHFileName   = 'Crosshair.png';
+      cThemeCFGFilename = 'theme.cfg';
+
+      Fontz: array[THWFont] of THHFont = (
+                                         (Height: 12;
+                                          Name: 'UN1251N.TTF'),
+                                         (Height: 24;
+                                          Name: 'UN1251N.TTF')
+                                         );
+
+      Pathz: array[TPathType] of string[ 64] = (
+                                               'Data/',                         // ptData
+                                               'Data/Graphics/',                // ptGraphics
+                                               'Data/Themes/',                  // ptThemes
+                                               'Data/Themes/Default/',          // ptThemeCurrent
+                                               'Data/Teams/',                   // ptTeams
+                                               'Data/Maps/',                    // ptMaps
+                                               'Data/Maps/Current/',            // ptMapCurrent
+                                               'Data/Demos/',                   // ptDemos
+                                               'Data/Sounds/',                  // ptSounds
+                                               'Data/Graphics/Graves/',         // ptGraves
+                                               'Data/Fonts/',                   // ptFonts
+                                               'Data/Forts/'                    // ptForts
+                                               );
+
+      StuffLoadData: array[TStuff] of record
+                                     FileName: String[31];
+                                     Path    : TPathType;
+                                     end = (
+                                     (FileName: 'horizont.png'; Path: ptThemeCurrent ),    // sHorizont
+                                     (FileName:      'Sky.png'; Path: ptThemeCurrent ),    // sSky
+                                     (FileName:  'Console.png'; Path: ptGraphics     ),    // sConsoleBG
+                                     (FileName: 'PowerBar.png'; Path: ptGraphics     ),    // sPowerBar
+                                     (FileName: 'thinking.png'; Path: ptGraphics     )     // sQuestion
+                                     );
+      StuffPoz: array[TStuff] of TSDL_Rect = (
+                                      (x:   0; y:   0; w: 512; h: 256), // sHorizont
+                                      (x: 512; y:   0; w:  64; h:1024), // sSky
+                                      (x: 256; y: 256; w: 256; h: 256), // sConsoleBG
+                                      (x: 256; y: 768; w: 256; h:  32), // sPowerBar
+                                      (x: 256; y: 512; w:  32; h:  32)  // sQuestion
+                                      );
+      SpritesData: array[TSprite] of record
+                                         FileName: String[31];
+                                         Path    : TPathType;
+                                         Surface : PSDL_Surface;
+                                         Width, Height: integer;
+                                         end = (
+                                         (FileName: 'BlueWater.png'; Path: ptGraphics; Width: 256; Height: 48),// sprWater
+                                         (FileName:    'Clouds.png'; Path: ptGraphics; Width: 256; Height:128),// sprCloud
+                                         (FileName:      'Bomb.png'; Path: ptGraphics; Width:  16; Height: 16),// sprBomb
+                                         (FileName: 'BigDigits.png'; Path: ptGraphics; Width:  32; Height: 32),// sprBigDigit
+                                         (FileName:     'Frame.png'; Path: ptGraphics; Width:   4; Height: 32),// sprFrame
+                                         (FileName:       'Lag.png'; Path: ptGraphics; Width:  64; Height: 64),// sprLag
+                                         (FileName:     'Arrow.png'; Path: ptGraphics; Width:  16; Height: 16),// sprCursor
+                                         (FileName:   'Grenade.png'; Path: ptGraphics; Width:  32; Height: 32),// sprGrenade
+                                         (FileName:   'Targetp.png'; Path: ptGraphics; Width:  32; Height: 32),// sprTargetP
+                                         (FileName:       'UFO.png'; Path: ptGraphics; Width:  32; Height: 32),// sprUFO
+                                         (FileName:'SmokeTrace.png'; Path: ptGraphics; Width:  32; Height: 32),// sprSmokeTrace
+                                         (FileName:  'RopeHook.png'; Path: ptGraphics; Width:  32; Height: 32) // sprRopeHook
+                                         );
+      Soundz: array[TSound] of record
+                                       FileName: String[31];
+                                       Path    : TPathType;
+                                       id      : PMixChunk;
+                                       end = (
+                                       (FileName: 'grenadeimpact.ogg'; Path: ptSounds  ),// sndGrenadeImpact
+                                       (FileName:     'explosion.ogg'; Path: ptSounds  ),// sndExplosion
+                                       (FileName:  'throwpowerup.ogg'; Path: ptSounds  ),// sndThrowPowerUp
+                                       (FileName:  'throwrelease.ogg'; Path: ptSounds  ),// sndThrowRelease
+                                       (FileName:        'splash.ogg'; Path: ptSounds  ),// sndSplash
+                                       (FileName: 'shotgunreload.ogg'; Path: ptSounds  ),// sndShotgunReload
+                                       (FileName:   'shotgunfire.ogg'; Path: ptSounds  ),// sndShotgunFire
+                                       (FileName:   'graveimpact.ogg'; Path: ptSounds  ) // sndGraveImpact
+                                       );
+
+      Ammoz: array [TAmmoType] of record
+                                  Name: string[32];
+                                  Ammo: TAmmo;
+                                  Slot: Longword;
+                                  TimeAfterTurn: Longword;
+                                  end = (
+                                  (Name: 'Grenade';
+                                   Ammo: (Propz: ammoprop_Timerable or ammoprop_Power;
+                                          Count: AMMO_INFINITE;
+                                          NumPerTurn: 0;
+                                          Timer: 3000;
+                                          AmmoType: amGrenade);
+                                   Slot: 0;
+                                   TimeAfterTurn: 3000),
+                                  (Name: 'Bazooka';
+                                   Ammo: (Propz: ammoprop_Power;
+                                          Count: AMMO_INFINITE;
+                                          NumPerTurn: 0;
+                                          Timer: 0;
+                                          AmmoType: amBazooka);
+                                   Slot: 1;
+                                   TimeAfterTurn: 3000),
+                                  (Name: 'UFO';
+                                   Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget;
+                                          Count: 4;
+                                          NumPerTurn: 0;
+                                          Timer: 0;
+                                          AmmoType: amUFO);
+                                   Slot: 0;
+                                   TimeAfterTurn: 3000),
+                                  (Name: 'Shotgun';
+                                   Ammo: (Propz: 0;
+                                          Count: AMMO_INFINITE;
+                                          NumPerTurn: 1;
+                                          Timer: 0;
+                                          AmmoType: amShotgun);
+                                   Slot: 2;
+                                   TimeAfterTurn: 3000),
+                                  (Name: 'Pneumatic pick';
+                                   Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInFall or ammoprop_AttackInJump;
+                                          Count: 2;
+                                          NumPerTurn: 0;
+                                          Timer: 0;
+                                          AmmoType: amPickHammer);
+                                   Slot: 3;
+                                   TimeAfterTurn: 0),
+                                  (Name: 'Skip turn';
+                                   Ammo: (Propz: 0;
+                                          Count: AMMO_INFINITE;
+                                          NumPerTurn: 0;
+                                          Timer: 0;
+                                          AmmoType: amSkip);
+                                   Slot: 4;
+                                   TimeAfterTurn: 0),
+                                  (Name: 'Rope';
+                                   Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInFall or ammoprop_AttackInJump;
+                                          Count: 5;
+                                          NumPerTurn: 0;
+                                          Timer: 0;
+                                          AmmoType: amRope);
+                                   Slot: 3;
+                                   TimeAfterTurn: 0)
+                                  );
+                                  
+      Resolutions: array[0..3] of String = (
+                                           '640 480',
+                                           '800 600',
+                                           '1024 768',
+                                           '1280 1024'
+                                           );
+
+implementation
+
+end.