# HG changeset patch # User unc0rr # Date 1290357679 -10800 # Node ID 0dfe26f48ec1070237a79b77e65c7030ae95919e # Parent 54a78ec6aac436783dd53378257c81ae1cdc0cfb uDebug diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/CMakeLists.txt --- a/hedgewars/CMakeLists.txt Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/CMakeLists.txt Sun Nov 21 19:41:19 2010 +0300 @@ -49,6 +49,7 @@ uCommands.pas uConsole.pas uConsts.pas + uDebug.pas uFloat.pas uGame.pas uGears.pas diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/hwengine.pas Sun Nov 21 19:41:19 2010 +0300 @@ -31,7 +31,7 @@ uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uKeys, uSound, uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uRandom, uLandTexture, uCollisions, uMobile, - sysutils, uTypes, uVariables, uCommands, uUtils, uCaptions; + sysutils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug; var isTerminated: boolean = false; alsoShutdownFrontend: boolean = false; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uAI.pas Sun Nov 21 19:41:19 2010 +0300 @@ -31,7 +31,7 @@ implementation uses uConsts, SDLh, uAIMisc, uAIAmmoTests, uAIActions, uAmmos, SysUtils{$IFDEF UNIX}, cthreads{$ENDIF}, uTypes, - uVariables, uCommands, uUtils, uIO; + uVariables, uCommands, uUtils, uDebug; var BestActions: TActions; CanUseAmmo: array [TAmmoType] of boolean; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uAIActions.pas --- a/hedgewars/uAIActions.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uAIActions.pas Sun Nov 21 19:41:19 2010 +0300 @@ -62,7 +62,7 @@ procedure ProcessAction(var Actions: TActions; Me: PGear); implementation -uses uAIMisc, uAI, uAmmos, uVariables, uCommands, uUtils, uIO; +uses uAIMisc, uAI, uAmmos, uVariables, uCommands, uUtils, uDebug; const ActionIdToStr: array[0..6] of string[16] = ( {aia_none} '', diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uAIMisc.pas Sun Nov 21 19:41:19 2010 +0300 @@ -68,7 +68,7 @@ end; implementation -uses uCollisions, uVariables, uUtils, uIO; +uses uCollisions, uVariables, uUtils, uDebug; const KillScore = 200; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uAmmos.pas Sun Nov 21 19:41:19 2010 +0300 @@ -47,7 +47,7 @@ var StoreCnt: Longword; implementation -uses uLocale, uMobile, uVariables, uCommands, uUtils, uIO, uCaptions; +uses uLocale, uMobile, uVariables, uCommands, uUtils, uCaptions, uDebug; type TAmmoCounts = array[TAmmoType] of Longword; var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uCollisions.pas Sun Nov 21 19:41:19 2010 +0300 @@ -52,7 +52,7 @@ function calcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean; implementation -uses uConsts, uLandGraphics, uVariables, uIO; +uses uConsts, uLandGraphics, uVariables, uDebug; type TCollisionEntry = record X, Y, Radius: LongInt; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uCommands.pas --- a/hedgewars/uCommands.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uCommands.pas Sun Nov 21 19:41:19 2010 +0300 @@ -18,7 +18,7 @@ implementation uses Types, uConsts, uIO, uMobile, uRandom, SDLh, uScript, uTypes, - uVariables, uConsole, uUtils; + uVariables, uConsole, uUtils, uDebug; type PVariable = ^TVariable; TVariable = record diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uDebug.pas --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uDebug.pas Sun Nov 21 19:41:19 2010 +0300 @@ -0,0 +1,35 @@ +{$INCLUDE "options.inc"} + +unit uDebug; + +interface + +procedure OutError(Msg: shortstring; isFatalError: boolean); +procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline; +procedure SDLTry(Assert: boolean; isFatal: boolean); + +implementation +uses SDLh, uConsole, uCommands; + +procedure OutError(Msg: shortstring; isFatalError: boolean); +begin +WriteLnToConsole(Msg); +if isFatalError then + begin + ParseCommand('fatal ' + GetLastConsoleLine, true); + SDL_Quit; + halt(1) + end +end; + +procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); +begin +if not Assert then OutError(Msg, isFatal) +end; + +procedure SDLTry(Assert: boolean; isFatal: boolean); +begin +if not Assert then OutError(SDL_GetError, isFatal) +end; + +end. \ No newline at end of file diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uGears.pas Sun Nov 21 19:41:19 2010 +0300 @@ -46,7 +46,7 @@ implementation uses uStore, uSound, uTeams, uRandom, uCollisions, uIO, uLandGraphics, uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile, uVariables, - uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions; + uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, uDebug; procedure DeleteGear(Gear: PGear); forward; @@ -273,7 +273,7 @@ end; gtRope: begin gear^.Radius:= 3; - gear^.Friction:= _450 * _0_01 * cRopePercent; + gear^.Friction:= _450; RopePoints.Count:= 0; end; gtMine: begin diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uIO.pas --- a/hedgewars/uIO.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uIO.pas Sun Nov 21 19:41:19 2010 +0300 @@ -28,10 +28,6 @@ procedure initModule; procedure freeModule; -procedure OutError(Msg: shortstring; isFatalError: boolean); -procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline; -procedure SDLTry(Assert: boolean; isFatal: boolean); - procedure SendIPC(s: shortstring); procedure SendIPCXY(cmd: char; X, Y: SmallInt); procedure SendIPCRaw(p: pointer; len: Longword); @@ -47,7 +43,7 @@ procedure NetGetNextCmd; implementation -uses uConsole, uConsts, uChat, uTeams, uVariables, uCommands, uUtils; +uses uConsole, uConsts, uChat, uTeams, uVariables, uCommands, uUtils, uDebug; type PCmd = ^TCmd; TCmd = packed record @@ -69,28 +65,6 @@ SendEmptyPacketTicks: LongWord; - -procedure OutError(Msg: shortstring; isFatalError: boolean); -begin -WriteLnToConsole(Msg); -if isFatalError then - begin - SendIPC('E' + GetLastConsoleLine); - SDL_Quit; - halt(1) - end -end; - -procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); -begin -if not Assert then OutError(Msg, isFatal) -end; - -procedure SDLTry(Assert: boolean; isFatal: boolean); -begin -if not Assert then OutError(SDL_GetError, isFatal) -end; - function AddCmd(Time: Word; str: shortstring): PCmd; var command: PCmd; begin @@ -386,8 +360,15 @@ if isInLag then fastUntilLag:= false end; +procedure chFatalError(var s: shortstring); +begin + SendIPC('E' + s); +end; + procedure initModule; begin + RegisterVariable('fatal', vtCommand, @chFatalError, true ); + IPCSock:= nil; headcmd:= nil; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uKeys.pas --- a/hedgewars/uKeys.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uKeys.pas Sun Nov 21 19:41:19 2010 +0300 @@ -82,7 +82,7 @@ {$ENDIF} {$ENDIF} implementation -uses uConsole, uCommands, uMisc, uVariables, uConsts, uUtils, uIO; +uses uConsole, uCommands, uMisc, uVariables, uConsts, uUtils, uDebug; var tkbd, tkbdn: TKeyboardState; KeyNames: array [0..cKeyMaxIndex] of string[15]; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uLand.pas --- a/hedgewars/uLand.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uLand.pas Sun Nov 21 19:41:19 2010 +0300 @@ -35,7 +35,7 @@ implementation uses uConsole, uStore, uRandom, uLandObjects, uIO, uLandTexture, sysutils, - uVariables, uUtils, uCommands, Adler32; + uVariables, uUtils, uCommands, Adler32, uDebug; operator=(const a, b: direction) c: Boolean; begin diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uLandGraphics.pas Sun Nov 21 19:41:19 2010 +0300 @@ -40,7 +40,7 @@ function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean): boolean; implementation -uses SDLh, uLandTexture, uVariables, uUtils, uIO; +uses SDLh, uLandTexture, uVariables, uUtils, uDebug; procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword); var i: LongInt; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uLandObjects.pas Sun Nov 21 19:41:19 2010 +0300 @@ -30,7 +30,7 @@ implementation uses uStore, uConsts, uConsole, uRandom, uVisualGears, uSound, GLunit, - uTypes, uVariables, uUtils, uIO; + uTypes, uVariables, uUtils, uDebug; const MaxRects = 512; MAXOBJECTRECTS = 16; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uLandTexture.pas Sun Nov 21 19:41:19 2010 +0300 @@ -28,7 +28,7 @@ procedure DrawLand(dX, dY: LongInt); implementation -uses uConsts, GLunit, uTypes, uVariables, uTextures, uIO, uRender; +uses uConsts, GLunit, uTypes, uVariables, uTextures, uDebug, uRender; const TEXSIZE = 256; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uLocale.pas Sun Nov 21 19:41:19 2010 +0300 @@ -30,7 +30,7 @@ function GetEventString(e: TEventId): ansistring; implementation -uses uRandom, uUtils, uIO, uVariables; +uses uRandom, uUtils, uVariables, uDebug; var trevt: array[TEventId] of array [0..Pred(MAX_EVENT_STRINGS)] of ansistring; trevt_n: array[TEventId] of integer; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uRenderUtils.pas --- a/hedgewars/uRenderUtils.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uRenderUtils.pas Sun Nov 21 19:41:19 2010 +0300 @@ -12,7 +12,7 @@ procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); implementation -uses uIO, uUtils, uVariables, uConsts, uTextures, sysutils; +uses uIO, uUtils, uVariables, uConsts, uTextures, sysutils, uDebug; procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); var r: TSDL_Rect; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uScript.pas Sun Nov 21 19:41:19 2010 +0300 @@ -55,9 +55,9 @@ uVariables, uCommands, uUtils, - uIO, uKeys, - uCaptions; + uCaptions, + uDebug; var luaState : Plua_State; ScriptAmmoLoadout : shortstring; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uSound.pas Sun Nov 21 19:41:19 2010 +0300 @@ -46,7 +46,7 @@ implementation -uses uMisc, uVariables, uConsole, uUtils, uIO, uCommands; +uses uMisc, uVariables, uConsole, uUtils, uIO, uCommands, uDebug; const chanTPU = 32; var Volume: LongInt; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uStats.pas Sun Nov 21 19:41:19 2010 +0300 @@ -35,7 +35,7 @@ procedure SendStats; implementation -uses uTeams, uSound, uLocale, uVariables, uUtils, uIO, uCaptions; +uses uTeams, uSound, uLocale, uVariables, uUtils, uIO, uCaptions, uDebug; var DamageGiven : Longword = 0; DamageClan : Longword = 0; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uStore.pas Sun Nov 21 19:41:19 2010 +0300 @@ -39,7 +39,7 @@ procedure FreeWeaponTooltip; implementation -uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uIO, uRender, uRenderUtils, uCommands; +uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uIO, uRender, uRenderUtils, uCommands, uDebug; type TGPUVendor = (gvUnknown, gvNVIDIA, gvATI, gvIntel, gvApple); diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uTeams.pas Sun Nov 21 19:41:19 2010 +0300 @@ -38,7 +38,7 @@ function GetTeamStatString(p: PTeam): shortstring; implementation -uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands; +uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug; const MaxTeamHealth: LongInt = 0; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uTextures.pas --- a/hedgewars/uTextures.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uTextures.pas Sun Nov 21 19:41:19 2010 +0300 @@ -12,7 +12,7 @@ procedure freeModule; implementation -uses GLunit, uUtils, uVariables, uConsts, uIO; +uses GLunit, uUtils, uVariables, uConsts, uDebug; var TextureList: PTexture; diff -r 54a78ec6aac4 -r 0dfe26f48ec1 hedgewars/uUtils.pas --- a/hedgewars/uUtils.pas Sun Nov 21 19:14:45 2010 +0300 +++ b/hedgewars/uUtils.pas Sun Nov 21 19:41:19 2010 +0300 @@ -40,11 +40,12 @@ function CheckNoTeamOrHH: boolean; inline; +function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; +function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; + procedure initModule; procedure freeModule; -function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; -function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; implementation uses typinfo, Math, uConsts, uVariables, SysUtils; @@ -287,7 +288,6 @@ end; function CheckNoTeamOrHH: boolean; -var bRes: boolean; begin CheckNoTeamOrHH:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil); end;