author | unc0rr |
Sat, 07 Jan 2006 15:21:44 +0000 | |
changeset 39 | b78e7185ed13 |
parent 37 | 2b7f2a43b999 |
child 42 | 72ffe21f027c |
permissions | -rw-r--r-- |
(* * 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, sWindBar, sWindL, sWindR, sRopeNode); 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, sprExplosion50, sprMineOff, sprMineOn, sprCase); TGearType = (gtCloud, gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, gtGrave, gtUFO, gtShotgunShot, gtActionTimer, gtPickHammer, gtRope, gtSmokeTrace, gtExplosion, gtMine, gtCase, gtDEagleShot, gtDynamite); TGearsType = set of TGearType; TSound = (sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact, sndMineTick); TAmmoType = (amGrenade, amBazooka, amUFO, amShotgun, amPickHammer, amSkip, amRope, amMine, amDEagle, amDynamite); 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'; 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; cMaxSpawnPoints = 64; cHHSurfaceWidth = 512; cHHSurfaceHeigth = 256; cMaxEdgePoints = 16384; cHHHalfHeight = 11; cKeyMaxIndex = 322; cMaxCaptions = 4; cInactDelay = 1500; gfForts = $00000001; gstDrowning = $00000001; gstHHDriven = $00000002; gstMoving = $00000004; gstAttacked = $00000008; gstAttacking = $00000010; gstCollision = $00000020; gstHHChooseTarget = $00000040; gstFalling = $00000080; gstHHJumping = $00000100; gsttmpFlag = $00000200; gstHHThinking = $00000800; gtsStartGame = 1; gtsSmoothWindCh = 2; 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; cMaxSlotIndex = 6; cMaxSlotAmmoIndex = 1; ammoprop_Timerable = $00000001; ammoprop_Power = $00000002; ammoprop_NeedTarget = $00000004; ammoprop_ForwMsgs = $00000008; ammoprop_AttackInFall = $00000010; ammoprop_AttackInJump = $00000020; ammoprop_NoCrosshair = $00000040; 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 (FileName: 'WindBar.png'; Path: ptGraphics ), // sWindBar (FileName: 'WindL.png'; Path: ptGraphics ), // sWindL (FileName: 'WindR.png'; Path: ptGraphics ), // sWindR (FileName: 'RopeNode.png'; Path: ptGraphics ) // sRopeNode ); 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 (x: 256; y: 800; w: 151; h: 17), // sWindBar (x: 256; y: 817; w: 80; h: 13), // sWindL (x: 336; y: 817; w: 80; h: 13), // sWindR (x: 256; y: 544; w: 6; h: 6) // sRopeNode ); SpritesData: array[TSprite] of record FileName: String[31]; Path : TPathType; Surface : PSDL_Surface; Width, Height: integer; hasAlpha: boolean; end = ( (FileName: 'BlueWater.png'; Path: ptGraphics; Width: 256; Height: 48; hasAlpha: false),// sprWater (FileName: 'Clouds.png'; Path: ptGraphics; Width: 256; Height:128; hasAlpha: false),// sprCloud (FileName: 'Bomb.png'; Path: ptGraphics; Width: 16; Height: 16; hasAlpha: false),// sprBomb (FileName: 'BigDigits.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: true),// sprBigDigit (FileName: 'Frame.png'; Path: ptGraphics; Width: 4; Height: 32; hasAlpha: true),// sprFrame (FileName: 'Lag.png'; Path: ptGraphics; Width: 64; Height: 64; hasAlpha: false),// sprLag (FileName: 'Arrow.png'; Path: ptGraphics; Width: 16; Height: 16; hasAlpha: false),// sprCursor (FileName: 'Grenade.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: false),// sprGrenade (FileName: 'Targetp.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: false),// sprTargetP (FileName: 'UFO.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: false),// sprUFO (FileName:'SmokeTrace.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: true),// sprSmokeTrace (FileName: 'RopeHook.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: false),// sprRopeHook (FileName: 'Expl50.png'; Path: ptGraphics; Width: 64; Height: 64; hasAlpha: false),// sprExplosion50 (FileName: 'MineOff.png'; Path: ptGraphics; Width: 16; Height: 16; hasAlpha: false),// sprMineOff (FileName: 'MineOn.png'; Path: ptGraphics; Width: 16; Height: 16; hasAlpha: false),// sprMineOn (FileName: 'Case.png'; Path: ptGraphics; Width: 32; Height: 32; hasAlpha: false) // sprCase ); 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 (FileName: 'minetick.ogg'; Path: ptSounds ) // sndMineTicks ); 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: 1; TimeAfterTurn: 3000), (Name: 'Bazooka'; Ammo: (Propz: ammoprop_Power; Count: AMMO_INFINITE; NumPerTurn: 0; Timer: 0; AmmoType: amBazooka); Slot: 0; 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: 4; TimeAfterTurn: 0), (Name: 'Skip turn'; Ammo: (Propz: 0; Count: AMMO_INFINITE; NumPerTurn: 0; Timer: 0; AmmoType: amSkip); Slot: 6; TimeAfterTurn: 0), (Name: 'Rope'; Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInFall or ammoprop_AttackInJump; Count: 5; NumPerTurn: 0; Timer: 0; AmmoType: amRope); Slot: 5; TimeAfterTurn: 0), (Name: 'Mine'; Ammo: (Propz: ammoprop_NoCrosshair; Count: 5; NumPerTurn: 0; Timer: 0; AmmoType: amMine); Slot: 3; TimeAfterTurn: 3000), (Name: 'Desert Eagle'; Ammo: (Propz: 0; Count: AMMO_INFINITE; NumPerTurn: 3; Timer: 0; AmmoType: amDEagle); Slot: 2; TimeAfterTurn: 3000), (Name: 'Dynamite'; Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInJump or ammoprop_AttackInFall; Count: 5; NumPerTurn: 0; Timer: 0; AmmoType: amDynamite); Slot: 3; TimeAfterTurn: 5000)); Resolutions: array[0..3] of String = ( '640 480', '800 600', '1024 768', '1280 1024' ); implementation end.