Move variables from uMisc to uVariables
authorunC0Rr
Wed, 17 Nov 2010 17:45:55 +0300
changeset 4359 83ef50815535
parent 4357 a1fcfc341a52
child 4361 64ea345ab655
Move variables from uMisc to uVariables
hedgewars/hwengine.pas
hedgewars/uAI.pas
hedgewars/uAIActions.pas
hedgewars/uAIAmmoTests.pas
hedgewars/uAIMisc.pas
hedgewars/uAmmos.pas
hedgewars/uChat.pas
hedgewars/uCollisions.pas
hedgewars/uConsole.pas
hedgewars/uGame.pas
hedgewars/uGears.pas
hedgewars/uIO.pas
hedgewars/uKeys.pas
hedgewars/uLand.pas
hedgewars/uLandGraphics.pas
hedgewars/uLandObjects.pas
hedgewars/uLandTexture.pas
hedgewars/uMisc.pas
hedgewars/uMobile.pas
hedgewars/uScript.pas
hedgewars/uSound.pas
hedgewars/uStats.pas
hedgewars/uStore.pas
hedgewars/uTeams.pas
hedgewars/uVariables.pas
hedgewars/uVisualGears.pas
hedgewars/uWorld.pas
--- a/hedgewars/hwengine.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/hwengine.pas	Wed Nov 17 17:45:55 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;
+     sysutils, uTypes, uVariables;
 
 var isTerminated: boolean = false;
     alsoShutdownFrontend: boolean = false;
@@ -112,6 +112,7 @@
         flagMakeCapture:= false;
         s:= 'hw_' + FormatDateTime('YYYY-MM-DD_HH-mm-ss', Now()) + inttostr(GameTicks);
         WriteLnToConsole('Saving ' + s + '...');
+        playSound(sndShutter);
         MakeScreenshot(s);
         //SDL_SaveBMP_RW(SDLPrimSurface, SDL_RWFromFile(Str2PChar(s), 'wb'), 1)
     end;
@@ -319,6 +320,7 @@
 
     // uConsts does not need initialization as they are all consts
     uMisc.initModule;
+    uVariables.initModule;
     uConsole.initModule;    // MUST happen after uMisc
 
     uLand.initModule;
@@ -387,6 +389,7 @@
     uLand.freeModule;
 
     uConsole.freeModule;
+    uVariables.freeModule;
     uMisc.freeModule;           // uMisc closes the debug log.
 end;
 
--- a/hedgewars/uAI.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uAI.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -30,7 +30,8 @@
 
 implementation
 uses uTeams, uConsts, SDLh, uAIMisc, uAIAmmoTests, uAIActions, uMisc,
-     uAmmos, uConsole, SysUtils{$IFDEF UNIX}, cthreads{$ENDIF}, uTypes;
+     uAmmos, uConsole, SysUtils{$IFDEF UNIX}, cthreads{$ENDIF}, uTypes,
+     uVariables;
 
 var BestActions: TActions;
     CanUseAmmo: array [TAmmoType] of boolean;
--- a/hedgewars/uAIActions.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uAIActions.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -62,7 +62,7 @@
 procedure ProcessAction(var Actions: TActions; Me: PGear);
 
 implementation
-uses uMisc, uConsole, uAIMisc, uAI, uAmmos;
+uses uMisc, uConsole, uAIMisc, uAI, uAmmos, uVariables;
 
 const ActionIdToStr: array[0..6] of string[16] = (
 {aia_none}           '',
--- a/hedgewars/uAIAmmoTests.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uAIAmmoTests.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -108,7 +108,7 @@
 const BadTurn = Low(LongInt) div 4;
 
 implementation
-uses uMisc, uAIMisc, uLand;
+uses uMisc, uAIMisc, uLand, uVariables;
 
 function Metric(x1, y1, x2, y2: LongInt): LongInt;
 begin
--- a/hedgewars/uAIMisc.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uAIMisc.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -68,7 +68,7 @@
              end;
 
 implementation
-uses uTeams, uMisc, uLand, uCollisions;
+uses uTeams, uMisc, uLand, uCollisions, uVariables;
 
 
 const KillScore = 200;
--- a/hedgewars/uAmmos.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uAmmos.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -47,7 +47,7 @@
 var StoreCnt: Longword;
 
 implementation
-uses uMisc, uGears, uWorld, uLocale, uConsole, uMobile;
+uses uMisc, uGears, uWorld, uLocale, uConsole, uMobile, uVariables;
 
 type TAmmoCounts = array[TAmmoType] of Longword;
 var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo;
--- a/hedgewars/uChat.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uChat.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -34,7 +34,7 @@
     showAll: boolean;
 
 implementation
-uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uTeams, uTypes;
+uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uTeams, uTypes, uVariables;
 
 const MaxStrIndex = 27;
 
--- a/hedgewars/uCollisions.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uCollisions.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -52,7 +52,7 @@
 function  calcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean;
 
 implementation
-uses uMisc, uConsts, uLand, uLandGraphics;
+uses uMisc, uConsts, uLand, uLandGraphics, uVariables;
 
 type TCollisionEntry = record
             X, Y, Radius: LongInt;
--- a/hedgewars/uConsole.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uConsole.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -38,7 +38,8 @@
 
 implementation
 uses uMisc, uStore, Types, uConsts, uGears, uTeams, uIO, uKeys, uWorld, uMobile,
-     uRandom, uAmmos, uStats, uChat, SDLh, uSound, uVisualGears, uScript, uTypes;
+     uRandom, uAmmos, uStats, uChat, SDLh, uSound, uVisualGears, uScript, uTypes,
+     uVariables;
 
 const cLineWidth: LongInt = 0;
       cLinesCount = 256;
--- a/hedgewars/uGame.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uGame.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -26,7 +26,7 @@
 ////////////////////
    implementation
 ////////////////////
-uses uMisc, uKeys, uTeams, uIO, uAI, uGears, uScript, uSound, uMobile, uVisualGears, uTypes;
+uses uKeys, uTeams, uIO, uAI, uGears, uScript, uSound, uMobile, uVisualGears, uTypes, uVariables;
 
 procedure DoGameTick(Lag: LongInt);
 var i: LongInt;
--- a/hedgewars/uGears.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uGears.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -61,7 +61,7 @@
 
 implementation
 uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics,
-     uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile;
+     uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile, uVariables;
 
 const MAXROPEPOINTS = 384;
 var RopePoints: record
--- a/hedgewars/uIO.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uIO.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -42,7 +42,7 @@
 procedure NetGetNextCmd;
 
 implementation
-uses uConsole, uConsts, uWorld, uMisc, uLand, uChat, uTeams, uTypes;
+uses uConsole, uConsts, uWorld, uMisc, uLand, uChat, uTeams, uTypes, uVariables;
 
 type PCmd = ^TCmd;
      TCmd = packed record
--- a/hedgewars/uKeys.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uKeys.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -85,7 +85,7 @@
 {$ENDIF}
 {$ENDIF}
 implementation
-uses uTeams, uConsole, uMisc;
+uses uTeams, uConsole, uMisc, uVariables;
 //const KeyNumber = 1024;
 
 var tkbd, tkbdn: TKeyboardState;
--- a/hedgewars/uLand.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uLand.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -52,7 +52,8 @@
 function  LandBackPixel(x, y: LongInt): LongWord;
 
 implementation
-uses uConsole, uStore, uMisc, uRandom, uTeams, uLandObjects, Adler32, uIO, uLandTexture, sysutils, uTypes;
+uses uConsole, uStore, uMisc, uRandom, uTeams, uLandObjects, Adler32, uIO, uLandTexture, sysutils,
+    uTypes, uVariables;
 
 operator=(const a, b: direction) c: Boolean;
 begin
--- a/hedgewars/uLandGraphics.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uLandGraphics.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -39,7 +39,7 @@
 function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean): boolean;
 
 implementation
-uses SDLh, uMisc, uLand, uLandTexture;
+uses SDLh, uMisc, uLand, uLandTexture, uVariables;
 
 procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword);
 var i: LongInt;
--- a/hedgewars/uLandObjects.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uLandObjects.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -29,7 +29,8 @@
 procedure AddOnLandObjects(Surface: PSDL_Surface);
 
 implementation
-uses uLand, uStore, uConsts, uMisc, uConsole, uRandom, uVisualGears, uSound, GLunit, uTypes;
+uses uLand, uStore, uConsts, uMisc, uConsole, uRandom, uVisualGears, uSound, GLunit,
+    uTypes, uVariables;
 
 const MaxRects = 512;
       MAXOBJECTRECTS = 16;
--- a/hedgewars/uLandTexture.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uLandTexture.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -28,7 +28,7 @@
 procedure DrawLand(dX, dY: LongInt);
 
 implementation
-uses uMisc, uLand, uStore, uConsts, GLunit, uTypes;
+uses uMisc, uLand, uStore, uConsts, GLunit, uTypes, uVariables;
 
 
 const TEXSIZE = 256;
--- a/hedgewars/uMisc.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uMisc.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -23,144 +23,7 @@
 
 uses    SDLh, uConsts, uFloat, GLunit, Math, uTypes;
 
-var
-/////// init flags ///////
-    cScreenWidth    : LongInt     = 1024;
-    cScreenHeight   : LongInt     = 768;
-    cBits           : LongInt     = 32;
-    //ipcPort is in uIO
-    cFullScreen     : boolean     = false;
-    isSoundEnabled  : boolean     = true;
-    isMusicEnabled  : boolean     = false;
-    cLocaleFName    : shortstring = 'en.txt';
-    cInitVolume     : LongInt     = 100;
-    cTimerInterval  : LongInt     = 8;
-    PathPrefix      : shortstring = './';
-    cShowFPS        : boolean     = false;
-    cAltDamage      : boolean     = true;
-    cReducedQuality : LongWord    = rqNone;
-    //userNick is in uChat
-    recordFileName  : shortstring = '';
-    cReadyDelay     : Longword    = 0;
-    cLogfileBase    : shortstring = 'debug';
-//////////////////////////
-    
-    isCursorVisible : boolean;
-    isTerminated    : boolean;
-    isInLag         : boolean;
-    isPaused        : boolean;
 
-    isSEBackup      : boolean;
-    isInMultiShoot  : boolean;
-    isSpeed         : boolean;
-    isFirstFrame    : boolean;
-
-    fastUntilLag    : boolean;
-
-    GameState       : TGameState;
-    GameType        : TGameType;
-    GameFlags       : Longword;
-    TrainingFlags   : Longword;
-    TurnTimeLeft    : Longword;
-    ReadyTimeLeft   : Longword;
-    cSuddenDTurns   : LongInt;
-    cDamagePercent  : LongInt;
-    cMineDudPercent : LongWord;
-    cTemplateFilter : LongInt;
-    cMapGen         : LongInt;
-    cMazeSize       : LongInt;
-
-    cHedgehogTurnTime: Longword;
-    cMinesTime       : LongInt;
-    cMaxAIThinkTime  : Longword;
-
-    cHealthCaseProb  : LongInt;
-    cHealthCaseAmount: LongInt;
-    cWaterRise       : LongInt;
-    cHealthDecrease  : LongInt;
-
-    cCloudsNumber    : LongInt;
-
-    cTagsMask        : byte;
-    zoom             : GLfloat;
-    ZoomValue        : GLfloat;
-
-    cWaterLine       : LongInt;
-    cGearScrEdgesDist: LongInt;
-
-    GameTicks   : LongWord;
-    TrainingTimeInc : Longword;
-    TrainingTimeInD : Longword;
-    TrainingTimeInM : Longword;
-    TrainingTimeMax : Longword;
-
-    TimeTrialStartTime: Longword;
-    TimeTrialStopTime : Longword;
-
-    // originally from uConsts
-    Pathz: array[TPathType] of shortstring;
-    CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture;
-    LAND_WIDTH       : LongInt;
-    LAND_HEIGHT      : LongInt;
-    LAND_WIDTH_MASK  : LongWord;
-    LAND_HEIGHT_MASK : LongWord;
-    cMaxCaptions     : LongInt;
-
-    cLeftScreenBorder     : LongInt;
-    cRightScreenBorder    : LongInt;
-    cScreenSpace          : LongInt;
-
-    cCaseFactor     : Longword;
-    cLandMines      : Longword;
-    cExplosives     : Longword;
-
-    cSeed           : shortstring;
-    cVolumeDelta    : LongInt;
-    cHasFocus       : boolean;
-    cInactDelay     : Longword;
-
-    bBetweenTurns   : boolean;
-    bWaterRising    : boolean;
-
-    ShowCrosshair   : boolean;
-    CursorMovementX : LongInt;
-    CursorMovementY : LongInt;
-    cDrownSpeed     : hwFloat;
-    cDrownSpeedf    : float;
-    cMaxWindSpeed   : hwFloat;
-    cWindSpeed      : hwFloat;
-    cWindSpeedf     : float;
-    cGravity        : hwFloat;
-    cGravityf       : float;
-    cDamageModifier : hwFloat;
-    cLaserSighting  : boolean;
-    cVampiric       : boolean;
-    cArtillery      : boolean;
-    WeaponTooltipTex : PTexture;
-
-    flagMakeCapture : boolean;
-
-    InitStepsFlags  : Longword;
-    RealTicks       : Longword;
-    AttackBar       : LongInt;
-
-    WaterColorArray : array[0..3] of HwColor4f;
-
-    CursorPoint     : TPoint;
-    TargetPoint     : TPoint;
-
-    TextureList     : PTexture;
-
-    ScreenFade      : TScreenFade;
-    ScreenFadeValue : LongInt;
-    ScreenFadeSpeed : LongInt;
-
-{$IFDEF SDL13}
-    SDLwindow       : PSDL_Window;
-{$ENDIF}
-
-procedure initModule;
-procedure freeModule;
 procedure SplitBySpace(var a, b: shortstring);
 procedure SplitByChar(var a, b: ansistring; c: char);
 function  EnumToStr(const en : TGearType) : shortstring; overload;
@@ -200,8 +63,11 @@
 {$ENDIF}
 procedure MakeScreenshot(filename: shortstring);
 
+procedure initModule;
+procedure freeModule;
+
 implementation
-uses uConsole, uStore, uIO, uSound, typinfo, sysutils, uMobile;
+uses uConsole, uStore, uIO, typinfo, sysutils, uVariables;
 
 var KBnum: Longword;
 {$IFDEF DEBUGFILE}
@@ -610,8 +476,6 @@
     0, 0, 0, 0 // number of important colors
     );
 begin
-playSound(sndShutter);
-
 // flash
 ScreenFade:= sfFromWhite;
 ScreenFadeValue:= sfMax;
@@ -703,119 +567,7 @@
 procedure initModule;
 {$IFDEF DEBUGFILE}{$IFNDEF IPHONEOS}var i: LongInt;{$ENDIF}{$ENDIF}
 begin
-    Pathz:= cPathz;
-        {*  REFERENCE
-      4096 -> $FFFFF000
-      2048 -> $FFFFF800
-      1024 -> $FFFFFC00
-       512 -> $FFFFFE00  *}
-    if (cReducedQuality and rqLowRes) <> 0 then
-    begin
-        LAND_WIDTH:= 2048;
-        LAND_HEIGHT:= 1024;
-        LAND_WIDTH_MASK:= $FFFFF800;
-        LAND_HEIGHT_MASK:= $FFFFFC00;
-    end
-    else
-    begin
-        LAND_WIDTH:= 4096;
-        LAND_HEIGHT:= 2048;
-        LAND_WIDTH_MASK:= $FFFFF000;
-        LAND_HEIGHT_MASK:= $FFFFF800
-    end;
-
-    cDrownSpeed.QWordValue  := 257698038;       // 0.06
-    cDrownSpeedf            := 0.06;
-    cMaxWindSpeed.QWordValue:= 1073742;     // 0.00025
-    cWindSpeed.QWordValue   := 429496;      // 0.0001
-    cWindSpeedf             := 0.0001;
-    cGravity                := cMaxWindSpeed * 2;
-    cGravityf               := 0.00025 * 2;
-    cDamageModifier         := _1;
-    TargetPoint             := cTargetPointRef;
-    TextureList             := nil;
-
-    // int, longint longword and byte
-    CursorMovementX     := 0;
-    CursorMovementY     := 0;
-    GameTicks           := 0;
-    TrainingTimeInc     := 10000;
-    TrainingTimeInD     := 500;
-    TrainingTimeInM     := 5000;
-    TrainingTimeMax     := 60000;
-    TimeTrialStartTime  := 0;
-    TimeTrialStopTime   := 0;
-    cWaterLine          := LAND_HEIGHT;
-    cGearScrEdgesDist   := 240;
-
-    GameFlags           := 0;
-    TrainingFlags       := 0;
-    TurnTimeLeft        := 0;
-    cSuddenDTurns       := 15;
-    cDamagePercent      := 100;
-    cMineDudPercent     := 0;
-    cTemplateFilter     := 0;
-    cMapGen             := 0;   // MAPGEN_REGULAR
-    cMazeSize           := 0;
-    cHedgehogTurnTime   := 45000;
-    cMinesTime          := 3;
-    cMaxAIThinkTime     := 9000;
-    cCloudsNumber       := 9;
-    cHealthCaseProb     := 35;
-    cHealthCaseAmount   := 25;
-    cWaterRise          := 47;
-    cHealthDecrease     := 5;
-
-    cTagsMask       := 0;
     KBnum           := 0;
-    InitStepsFlags  := 0;
-    RealTicks       := 0;
-    AttackBar       := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon
-    cCaseFactor     := 5;  {0..9}
-    cLandMines      := 4;
-    cExplosives     := 2;
-
-    GameState       := Low(TGameState);
-    GameType        := gmtLocal;
-    zoom            := cDefaultZoomLevel;
-    ZoomValue       := cDefaultZoomLevel;
-    WeaponTooltipTex:= nil;
-    cLaserSighting  := false;
-    cVampiric       := false;
-    cArtillery      := false;
-    flagMakeCapture := false;
-    bBetweenTurns   := false;
-    bWaterRising    := false;
-    isCursorVisible := false;
-    isTerminated    := false;
-    isInLag         := false;
-    isPaused        := false;
-    isInMultiShoot  := false;
-    isSpeed         := false;
-    fastUntilLag    := false;
-    isFirstFrame    := true;
-    isSEBackup      := true;
-    cSeed           := '';
-    cVolumeDelta    := 0;
-    cHasFocus       := true;
-    cInactDelay     := 1250;
-    ReadyTimeLeft   := 0;
-
-    ScreenFade      := sfNone;
-
-{$IFDEF SDL13}
-    SDLwindow       := nil;
-{$ENDIF}
-
-    // those values still aren't perfect
-    cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
-    cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
-    cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
-
-    if isPhone() then
-        cMaxCaptions:= 3
-    else
-        cMaxCaptions:= 4;
 
 {$IFDEF DEBUGFILE}
 {$I-}
@@ -862,25 +614,6 @@
     flush(f);
     close(f);
 {$ENDIF}
-
-    // re-init flags so they will always contain safe values
-    cScreenWidth    := 1024;
-    cScreenHeight   := 768;
-    cBits           := 32;
-    //ipcPort is in uIO
-    cFullScreen     := false;
-    isSoundEnabled  := true;
-    isMusicEnabled  := false;
-    cLocaleFName    := 'en.txt';
-    cInitVolume     := 100;
-    cTimerInterval  := 8;
-    PathPrefix := './';
-    cShowFPS        := false;
-    cAltDamage      := true;
-    cReducedQuality := rqNone;
-    //userNick is in uChat
-    recordFileName  := '';
-    cReadyDelay     := 0;
 end;
 
 end.
--- a/hedgewars/uMobile.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uMobile.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -42,7 +42,6 @@
 procedure perfExt_SaveFinishedSynching; inline;
 
 implementation
-uses uTeams, uConsole;
 
 function isPhone: Boolean; inline;
 begin
--- a/hedgewars/uScript.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uScript.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -54,7 +54,8 @@
     uChat,
     uStats,
     uRandom,
-    uTypes;
+    uTypes,
+    uVariables;
 
 var luaState : Plua_State;
     ScriptAmmoLoadout : shortstring;
--- a/hedgewars/uSound.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uSound.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -52,7 +52,7 @@
 
 
 implementation
-uses uMisc, uConsole;
+uses uMisc, uVariables, uConsole;
 
 const chanTPU = 32;
 var Volume: LongInt;
--- a/hedgewars/uStats.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uStats.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -55,7 +55,8 @@
 procedure SendStats;
 
 implementation
-uses uTeams, uSound, uMisc, uLocale, uWorld;
+uses uTeams, uSound, uMisc, uLocale, uWorld, uVariables;
+
 var DamageGiven : Longword = 0;
     DamageClan  : Longword = 0;
     DamageTotal : Longword = 0;
--- a/hedgewars/uStore.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uStore.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -82,7 +82,7 @@
 procedure Tint(c: Longword); inline;
 
 implementation
-uses uMisc, uConsole, uLocale, uMobile;
+uses uMisc, uConsole, uLocale, uMobile, uVariables;
 
 type TGPUVendor = (gvUnknown, gvNVIDIA, gvATI, gvIntel, gvApple);
 
--- a/hedgewars/uTeams.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uTeams.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -119,7 +119,7 @@
 function  GetTeamStatString(p: PTeam): shortstring;
 
 implementation
-uses uMisc, uWorld, uLocale, uAmmos, uChat, uMobile;
+uses uMisc, uWorld, uLocale, uAmmos, uChat, uMobile, uVariables;
 const MaxTeamHealth: LongInt = 0;
 
 function CheckForWin: boolean;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hedgewars/uVariables.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -0,0 +1,288 @@
+{$INCLUDE options.inc}
+
+unit uVariables;
+interface
+
+uses SDLh, uTypes, uFloat, GLunit, uConsts, Math, uMobile;
+
+var
+/////// init flags ///////
+    cScreenWidth    : LongInt     = 1024;
+    cScreenHeight   : LongInt     = 768;
+    cBits           : LongInt     = 32;
+    //ipcPort is in uIO
+    cFullScreen     : boolean     = false;
+    isSoundEnabled  : boolean     = true;
+    isMusicEnabled  : boolean     = false;
+    cLocaleFName    : shortstring = 'en.txt';
+    cInitVolume     : LongInt     = 100;
+    cTimerInterval  : LongInt     = 8;
+    PathPrefix      : shortstring = './';
+    cShowFPS        : boolean     = false;
+    cAltDamage      : boolean     = true;
+    cReducedQuality : LongWord    = rqNone;
+    //userNick is in uChat
+    recordFileName  : shortstring = '';
+    cReadyDelay     : Longword    = 0;
+    cLogfileBase    : shortstring = 'debug';
+//////////////////////////
+    
+    isCursorVisible : boolean;
+    isTerminated    : boolean;
+    isInLag         : boolean;
+    isPaused        : boolean;
+
+    isSEBackup      : boolean;
+    isInMultiShoot  : boolean;
+    isSpeed         : boolean;
+    isFirstFrame    : boolean;
+
+    fastUntilLag    : boolean;
+
+    GameState       : TGameState;
+    GameType        : TGameType;
+    GameFlags       : Longword;
+    TrainingFlags   : Longword;
+    TurnTimeLeft    : Longword;
+    ReadyTimeLeft   : Longword;
+    cSuddenDTurns   : LongInt;
+    cDamagePercent  : LongInt;
+    cMineDudPercent : LongWord;
+    cTemplateFilter : LongInt;
+    cMapGen         : LongInt;
+    cMazeSize       : LongInt;
+
+    cHedgehogTurnTime: Longword;
+    cMinesTime       : LongInt;
+    cMaxAIThinkTime  : Longword;
+
+    cHealthCaseProb  : LongInt;
+    cHealthCaseAmount: LongInt;
+    cWaterRise       : LongInt;
+    cHealthDecrease  : LongInt;
+
+    cCloudsNumber    : LongInt;
+
+    cTagsMask        : byte;
+    zoom             : GLfloat;
+    ZoomValue        : GLfloat;
+
+    cWaterLine       : LongInt;
+    cGearScrEdgesDist: LongInt;
+
+    GameTicks   : LongWord;
+    TrainingTimeInc : Longword;
+    TrainingTimeInD : Longword;
+    TrainingTimeInM : Longword;
+    TrainingTimeMax : Longword;
+
+    TimeTrialStartTime: Longword;
+    TimeTrialStopTime : Longword;
+
+    // originally from uConsts
+    Pathz: array[TPathType] of shortstring;
+    CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture;
+    LAND_WIDTH       : LongInt;
+    LAND_HEIGHT      : LongInt;
+    LAND_WIDTH_MASK  : LongWord;
+    LAND_HEIGHT_MASK : LongWord;
+    cMaxCaptions     : LongInt;
+
+    cLeftScreenBorder     : LongInt;
+    cRightScreenBorder    : LongInt;
+    cScreenSpace          : LongInt;
+
+    cCaseFactor     : Longword;
+    cLandMines      : Longword;
+    cExplosives     : Longword;
+
+    cSeed           : shortstring;
+    cVolumeDelta    : LongInt;
+    cHasFocus       : boolean;
+    cInactDelay     : Longword;
+
+    bBetweenTurns   : boolean;
+    bWaterRising    : boolean;
+
+    ShowCrosshair   : boolean;
+    CursorMovementX : LongInt;
+    CursorMovementY : LongInt;
+    cDrownSpeed     : hwFloat;
+    cDrownSpeedf    : float;
+    cMaxWindSpeed   : hwFloat;
+    cWindSpeed      : hwFloat;
+    cWindSpeedf     : float;
+    cGravity        : hwFloat;
+    cGravityf       : float;
+    cDamageModifier : hwFloat;
+    cLaserSighting  : boolean;
+    cVampiric       : boolean;
+    cArtillery      : boolean;
+    WeaponTooltipTex : PTexture;
+
+    flagMakeCapture : boolean;
+
+    InitStepsFlags  : Longword;
+    RealTicks       : Longword;
+    AttackBar       : LongInt;
+
+    WaterColorArray : array[0..3] of HwColor4f;
+
+    CursorPoint     : TPoint;
+    TargetPoint     : TPoint;
+
+    TextureList     : PTexture;
+
+    ScreenFade      : TScreenFade;
+    ScreenFadeValue : LongInt;
+    ScreenFadeSpeed : LongInt;
+
+{$IFDEF SDL13}
+    SDLwindow       : PSDL_Window;
+{$ENDIF}
+
+procedure initModule;
+procedure freeModule;
+
+implementation
+
+
+procedure initModule;
+begin
+    Pathz:= cPathz;
+        {*  REFERENCE
+      4096 -> $FFFFF000
+      2048 -> $FFFFF800
+      1024 -> $FFFFFC00
+       512 -> $FFFFFE00  *}
+    if (cReducedQuality and rqLowRes) <> 0 then
+    begin
+        LAND_WIDTH:= 2048;
+        LAND_HEIGHT:= 1024;
+        LAND_WIDTH_MASK:= $FFFFF800;
+        LAND_HEIGHT_MASK:= $FFFFFC00;
+    end
+    else
+    begin
+        LAND_WIDTH:= 4096;
+        LAND_HEIGHT:= 2048;
+        LAND_WIDTH_MASK:= $FFFFF000;
+        LAND_HEIGHT_MASK:= $FFFFF800
+    end;
+
+    cDrownSpeed.QWordValue  := 257698038;       // 0.06
+    cDrownSpeedf            := 0.06;
+    cMaxWindSpeed.QWordValue:= 1073742;     // 0.00025
+    cWindSpeed.QWordValue   := 429496;      // 0.0001
+    cWindSpeedf             := 0.0001;
+    cGravity                := cMaxWindSpeed * 2;
+    cGravityf               := 0.00025 * 2;
+    cDamageModifier         := _1;
+    TargetPoint             := cTargetPointRef;
+    TextureList             := nil;
+
+    // int, longint longword and byte
+    CursorMovementX     := 0;
+    CursorMovementY     := 0;
+    GameTicks           := 0;
+    TrainingTimeInc     := 10000;
+    TrainingTimeInD     := 500;
+    TrainingTimeInM     := 5000;
+    TrainingTimeMax     := 60000;
+    TimeTrialStartTime  := 0;
+    TimeTrialStopTime   := 0;
+    cWaterLine          := LAND_HEIGHT;
+    cGearScrEdgesDist   := 240;
+
+    GameFlags           := 0;
+    TrainingFlags       := 0;
+    TurnTimeLeft        := 0;
+    cSuddenDTurns       := 15;
+    cDamagePercent      := 100;
+    cMineDudPercent     := 0;
+    cTemplateFilter     := 0;
+    cMapGen             := 0;   // MAPGEN_REGULAR
+    cMazeSize           := 0;
+    cHedgehogTurnTime   := 45000;
+    cMinesTime          := 3;
+    cMaxAIThinkTime     := 9000;
+    cCloudsNumber       := 9;
+    cHealthCaseProb     := 35;
+    cHealthCaseAmount   := 25;
+    cWaterRise          := 47;
+    cHealthDecrease     := 5;
+
+    cTagsMask       := 0;
+    InitStepsFlags  := 0;
+    RealTicks       := 0;
+    AttackBar       := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon
+    cCaseFactor     := 5;  {0..9}
+    cLandMines      := 4;
+    cExplosives     := 2;
+
+    GameState       := Low(TGameState);
+    GameType        := gmtLocal;
+    zoom            := cDefaultZoomLevel;
+    ZoomValue       := cDefaultZoomLevel;
+    WeaponTooltipTex:= nil;
+    cLaserSighting  := false;
+    cVampiric       := false;
+    cArtillery      := false;
+    flagMakeCapture := false;
+    bBetweenTurns   := false;
+    bWaterRising    := false;
+    isCursorVisible := false;
+    isTerminated    := false;
+    isInLag         := false;
+    isPaused        := false;
+    isInMultiShoot  := false;
+    isSpeed         := false;
+    fastUntilLag    := false;
+    isFirstFrame    := true;
+    isSEBackup      := true;
+    cSeed           := '';
+    cVolumeDelta    := 0;
+    cHasFocus       := true;
+    cInactDelay     := 1250;
+    ReadyTimeLeft   := 0;
+
+    ScreenFade      := sfNone;
+
+{$IFDEF SDL13}
+    SDLwindow       := nil;
+{$ENDIF}
+
+    // those values still aren't perfect
+    cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
+    cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
+    cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
+
+    if isPhone() then
+        cMaxCaptions:= 3
+    else
+        cMaxCaptions:= 4;
+end;
+
+procedure freeModule;
+begin
+    // re-init flags so they will always contain safe values
+    cScreenWidth    := 1024;
+    cScreenHeight   := 768;
+    cBits           := 32;
+    //ipcPort is in uIO
+    cFullScreen     := false;
+    isSoundEnabled  := true;
+    isMusicEnabled  := false;
+    cLocaleFName    := 'en.txt';
+    cInitVolume     := 100;
+    cTimerInterval  := 8;
+    PathPrefix := './';
+    cShowFPS        := false;
+    cAltDamage      := true;
+    cReducedQuality := rqNone;
+    //userNick is in uChat
+    recordFileName  := '';
+    cReadyDelay     := 0;
+end;
+
+end.
\ No newline at end of file
--- a/hedgewars/uVisualGears.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uVisualGears.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -62,7 +62,7 @@
     vobVelocity, vobFallSpeed: LongInt;
 
 implementation
-uses uWorld, uMisc, uStore, uTeams, uSound, uMobile;
+uses uWorld, uMisc, uStore, uTeams, uSound, uMobile, uVariables;
 const cExplFrameTicks = 110;
 
 {$INCLUDE "VGSHandlers.inc"}
--- a/hedgewars/uWorld.pas	Wed Nov 17 17:22:36 2010 +0300
+++ b/hedgewars/uWorld.pas	Wed Nov 17 17:45:55 2010 +0300
@@ -51,7 +51,22 @@
 procedure MoveCamera;
 
 implementation
-uses    uStore, uMisc, uTeams, uIO, uKeys, uLocale, uSound, uAmmos, uVisualGears, uChat, uLandTexture, uLand, GLunit;
+uses
+    uStore,
+    uMisc,
+    uTeams,
+    uIO,
+    uKeys,
+    uLocale,
+    uSound,
+    uAmmos,
+    uVisualGears,
+    uChat,
+    uLandTexture,
+    uLand,
+    GLunit,
+    uVariables
+    ;
 
 type TCaptionStr = record
                    Tex: PTexture;