{$INCLUDE "options.inc"}
unit uTypes;
interface
uses SDLh, uFloat, GLunit;
type
HwColor4f = record
r, g, b, a: byte
end;
TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps);
TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee,
sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont,
sprHorizontL, sprHorizontR, sprSky, sprSkyL,
sprSkyR, sprAMBorderHorizontal, sprAMBorderVertical, sprAMSlot, sprAMAmmos,
sprAMSlotKeys, sprAMCorners, sprFinger, sprAirBomb,
sprAirplane, sprAmAirplane, sprAmGirder, sprHHTelepMask,
sprSwitch, sprParachute, sprTarget, sprRopeNode,
sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR,
sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun,
sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer,
sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath,
sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft,
sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave,
sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2,
sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon,
sprEvilTrace, sprHellishBomb, sprSeduction, sprDress,
sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls,
sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder,
sprSpeechCorner, sprSpeechEdge, sprSpeechTail,
sprThoughtCorner, sprThoughtEdge, sprThoughtTail,
sprShoutCorner, sprShoutEdge, sprShoutTail,
sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll,
sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction,
sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster,
sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp,
sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee,
sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal,
sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
sprSMineOff, sprSMineOn, sprHandSMine, sprHammer,
sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
sprBulletHit
);
// Gears that interact with other Gears and/or Land
TGearType = (gtBomb, gtHedgehog, gtShell, gtGrave, gtBee, // 4
gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9
gtDEagleShot, gtDynamite, gtClusterBomb, gtCluster, gtShover, // 14
gtFlame, gtFirePunch, gtATStartGame, gtATSmoothWindCh, // 18
gtATFinishGame, gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, // 23
gtGirder, gtTeleport, gtSwitcher, gtTarget, gtMortar, // 28
gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34
gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40
gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45
gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51
gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 56
gtNapalmBomb); // 57
// Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.)
TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell,
vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg,
vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion,
vgtBigExplosion, vgtChunk, vgtNote, vgtLineTrail,
vgtBulletHit);
TGearsType = set of TGearType;
TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison);
TSound = (sndNone,
sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease,
sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact,
sndMineTick, sndPickhammer, sndGun, sndBee, sndJump1, sndJump2,
sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming,
sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye,
sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret,
sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze,
sndCake, sndOw1, sndOw2, sndOw3, sndOw4, sndFirePunch1, sndFirePunch2,
sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6,
sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack,
sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat,
sndVaporize, sndWarp, sndSuddenDeath, sndMortar, sndShutter,
sndHomerun, sndMolotov, sndCover, sndUhOh, sndOops,
sndNooo, sndHello, sndRopeShot, sndRopeAttach, sndRopeRelease,
sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity,
sndHellishImpact1, sndHellishImpact2, sndHellishImpact3, sndHellishImpact4,
sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket,
sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater,
sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8,
sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack,
sndComeonthen, sndParachute, sndBump, sndResurrector);
TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6
amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, // 13
amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, // 18
amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, // 24
amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, // 30
amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35
amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42
amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48
amResurrector, amDrillStrike);
TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
THWFont = (fnt16, fntBig, fntSmall {$IFNDEF IPHONEOS}, CJKfnt16, CJKfntBig, CJKfntSmall{$ENDIF});
TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
capgrpMessage, capgrpAmmostate);
TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage,
siMaxTeamKills, siMaxTurnSkips );
TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
THHFont = record
Handle: PTTF_Font;
Height: LongInt;
style: LongInt;
Name: string[21];
end;
PAmmo = ^TAmmo;
TAmmo = record
Propz: LongWord;
Count: LongWord;
(* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess.
For example, say, a mode where the weaponset is reset each turn, or on sudden death *)
NumPerTurn: LongWord;
Timer: LongWord;
Pos: LongWord;
AmmoType: TAmmoType;
AttackVoice: TSound;
end;
TVertex2f = record
X, Y: GLfloat;
end;
TVertex2i = record
X, Y: GLint;
end;
PTexture = ^TTexture;
TTexture = record
id: GLuint;
w, h, scale: LongInt;
rx, ry: GLfloat;
priority: GLfloat;
vb, tb: array [0..3] of TVertex2f;
PrevTexture, NextTexture: PTexture;
end;
THogEffect = (heInvulnerable, heResurrectable, hePoisoned, heResurrected);
TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite);
PGear = ^TGear;
TGearStepProcedure = procedure (Gear: PGear);
TGear = record
NextGear, PrevGear: PGear;
Active: Boolean;
AdvBounce: Longword;
Invulnerable: Boolean;
RenderTimer: Boolean;
AmmoType : TAmmoType;
State : Longword;
X : hwFloat;
Y : hwFloat;
dX: hwFloat;
dY: hwFloat;
Kind: TGearType;
Pos: Longword;
doStep: TGearStepProcedure;
Radius: LongInt;
Angle, Power : Longword;
DirAngle: real;
Timer : LongWord;
Elasticity: hwFloat;
Friction : hwFloat;
Message, MsgParam : Longword;
Hedgehog: pointer;
Health, Damage, Karma: LongInt;
CollisionIndex: LongInt;
Tag: LongInt;
Tex: PTexture;
Z: Longword;
IntersectGear: PGear;
FlightTime: Longword;
uid: Longword;
ImpactSound: TSound; // first sound, others have to be after it in the sounds def.
nImpactSounds: Word; // count of ImpactSounds
SoundChannel: LongInt;
PortalCounter: LongWord // Hopefully temporary, but avoids infinite portal loops in a guaranteed fashion.
end;
TPGearArray = Array of PGear;
implementation
end.