hedgewars/hwengine.pas
changeset 6580 6155187bf599
parent 6415 af2047bb4f70
child 6598 fa518383563b
--- a/hedgewars/hwengine.pas	Mon Jan 16 10:22:21 2012 +0100
+++ b/hedgewars/hwengine.pas	Tue Jan 17 09:01:31 2012 -0500
@@ -55,55 +55,61 @@
         inc(RealTicks, Lag);
 
     case GameState of
-        gsLandGen: begin
-                GenMap;
-                ParseCommand('sendlanddigest', true);
-                GameState:= gsStart;
+        gsLandGen:
+            begin
+            GenMap;
+            ParseCommand('sendlanddigest', true);
+            GameState:= gsStart;
+            end;
+        gsStart:
+            begin
+            if HasBorder then
+                DisableSomeWeapons;
+            AddClouds;
+            AddFlakes;
+            AssignHHCoords;
+            AddMiscGears;
+            StoreLoad;
+            InitWorld;
+            ResetKbd;
+            SoundLoad;
+            if GameType = gmtSave then
+                begin
+                isSEBackup:= isSoundEnabled;
+                isSoundEnabled:= false
                 end;
-        gsStart: begin
-                if HasBorder then DisableSomeWeapons;
-                AddClouds;
-                AddFlakes;
-                AssignHHCoords;
-                AddMiscGears;
-                StoreLoad;
-                InitWorld;
-                ResetKbd;
-                SoundLoad;
-                if GameType = gmtSave then
-                    begin
-                    isSEBackup:= isSoundEnabled;
-                    isSoundEnabled:= false
-                    end;
-                FinishProgress;
-                PlayMusic;
-                SetScale(zoom);
-                ScriptCall('onGameStart');
-                GameState:= gsGame;
+            FinishProgress;
+            PlayMusic;
+            SetScale(zoom);
+            ScriptCall('onGameStart');
+            GameState:= gsGame;
+            end;
+        gsConfirm, gsGame:
+            begin
+            DrawWorld(Lag); // never place between ProcessKbd and DoGameTick - bugs due to /put cmd and isCursorVisible
+            ProcessKbd;
+            if not isPaused then
+                begin
+                DoGameTick(Lag);
+                ProcessVisualGears(Lag);
                 end;
-        gsConfirm,
-        gsGame: begin
-                DrawWorld(Lag); // never place between ProcessKbd and DoGameTick - bugs due to /put cmd and isCursorVisible
-                ProcessKbd;
-                if not isPaused then
-                    begin
-                    DoGameTick(Lag);
-                    ProcessVisualGears(Lag);
-                    end;
+            end;
+        gsChat:
+            begin
+            DrawWorld(Lag);
+            if not isPaused then
+                begin
+                DoGameTick(Lag);
+                ProcessVisualGears(Lag);
                 end;
-        gsChat: begin
-                DrawWorld(Lag);
-                if not isPaused then
-                    begin
-                    DoGameTick(Lag);
-                    ProcessVisualGears(Lag);
-                    end;
-                end;
-        gsExit: begin
-                isTerminated:= true;
-                end;
-        gsSuspend: exit;
-        end;
+            end;
+        gsExit:
+            begin
+            isTerminated:= true;
+            end;
+        gsSuspend:
+            exit;
+            end;
 
 {$IFDEF SDL13}
     SDL_GL_SwapWindow(SDLwindow);
@@ -112,17 +118,20 @@
 {$ENDIF}
 
     if flagMakeCapture then
-    begin
+        begin
         flagMakeCapture:= false;
         s:= 'hw_' + FormatDateTime('YYYY-MM-DD_HH-mm-ss', Now()) + inttostr(GameTicks);
 
         playSound(sndShutter);
-        if MakeScreenshot(s) then WriteLnToConsole('Screenshot saved: ' + s)
-        else begin
+        
+        if MakeScreenshot(s) then
+            WriteLnToConsole('Screenshot saved: ' + s)
+        else
+            begin
             WriteLnToConsole('Screenshot failed.');
             AddChatString(#5 + 'screen capture failed (lack of memory or write permissions)');
             end
-    end;
+        end;
 end;
 
 ////////////////////
@@ -162,9 +171,11 @@
         begin
             case event.type_ of
 {$IFDEF SDL13}
-                SDL_KEYDOWN: if GameState = gsChat then
+                SDL_KEYDOWN:
+                if GameState = gsChat then
                     // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3
                     KeyPressChat(event.key.keysym.sym);
+                    
                 SDL_WINDOWEVENT:
                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
                         begin
@@ -189,14 +200,28 @@
                         cScreenResizeDelay:= RealTicks+500;
                         *)
                         end;
-                SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
-                SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
-                SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
+                        
+                SDL_FINGERMOTION:
+                    onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
+                
+                SDL_FINGERDOWN:
+                    onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
+                
+                SDL_FINGERUP:
+                    onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
 {$ELSE}
-                SDL_KEYDOWN: if GameState = gsChat then
-                    KeyPressChat(event.key.keysym.unicode);
-                SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true;
-                SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true;
+                SDL_KEYDOWN:
+                    if GameState = gsChat then
+                        KeyPressChat(event.key.keysym.unicode);
+                    
+                SDL_MOUSEBUTTONDOWN:
+                    if event.button.button = SDL_BUTTON_WHEELDOWN then
+                        wheelDown:= true;
+                
+                SDL_MOUSEBUTTONUP:
+                    if event.button.button = SDL_BUTTON_WHEELUP then
+                        wheelUp:= true;
+                    
                 SDL_ACTIVEEVENT:
                     if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then
                         begin
@@ -205,7 +230,9 @@
                         if prevFocusState xor cHasFocus then
                             onFocusStateChanged()
                         end;
-                SDL_VIDEORESIZE: begin
+                        
+                SDL_VIDEORESIZE:
+                    begin
                     // using lower values than cMinScreenWidth or cMinScreenHeight causes widget overlap and off-screen widget parts
                     // Change by sheepluva:
                     // Let's only use even numbers for custom width/height since I ran into scaling issues with odd width values.
@@ -215,15 +242,21 @@
                     cScreenResizeDelay:= RealTicks+500;
                     end;
 {$ENDIF}
-                SDL_JOYAXISMOTION: ControllerAxisEvent(event.jaxis.which, event.jaxis.axis, event.jaxis.value);
-                SDL_JOYHATMOTION: ControllerHatEvent(event.jhat.which, event.jhat.hat, event.jhat.value);
-                SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true);
-                SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
-                SDL_QUITEV: isTerminated:= true
-            end; //end case event.type_ of
-        end; //end while SDL_PollEvent(@event) <> 0 do
+                SDL_JOYAXISMOTION:
+                    ControllerAxisEvent(event.jaxis.which, event.jaxis.axis, event.jaxis.value);
+                SDL_JOYHATMOTION:
+                    ControllerHatEvent(event.jhat.which, event.jhat.hat, event.jhat.value);
+                SDL_JOYBUTTONDOWN:
+                    ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true);
+                SDL_JOYBUTTONUP:
+                    ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
+                SDL_QUITEV:
+                    isTerminated:= true
+        end; //end case event.type_ of
+    end; //end while SDL_PollEvent(@event) <> 0 do
 
-        if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then
+        if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks)
+        and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then
             begin
             cScreenResizeDelay:= 0;
             cScreenWidth:= cNewScreenWidth;
@@ -251,7 +284,8 @@
 
 ///////////////
 procedure Game{$IFDEF HWLIBRARY}(gameArgs: PPChar); cdecl; export{$ENDIF};
-var p: TPathType;
+var
+    p: TPathType;
     s: shortstring;
     i: LongInt;
 begin
@@ -265,8 +299,12 @@
     val(gameArgs[2], cScreenHeight);
     val(gameArgs[3], cReducedQuality);
     cLocaleFName:= gameArgs[4];
-    if (Length(cLocaleFName) > 6) then cLocale := Copy(cLocaleFName,1,5)
-    else cLocale := Copy(cLocaleFName,1,2);
+    
+    if (Length(cLocaleFName) > 6) then
+        cLocale := Copy(cLocaleFName,1,5)
+    else
+        cLocale := Copy(cLocaleFName,1,2);
+        
     UserNick:= gameArgs[5];
     isSoundEnabled:= gameArgs[6] = '1';
     isMusicEnabled:= gameArgs[7] = '1';
@@ -285,16 +323,19 @@
     WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')');
     AddFileLog('Prefix: "' + PathPrefix +'"');
     AddFileLog('UserPrefix: "' + UserPathPrefix +'"');
+    
     for i:= 0 to ParamCount do
         AddFileLog(inttostr(i) + ': ' + ParamStr(i));
 
     for p:= Succ(Low(TPathType)) to High(TPathType) do
-        if (p <> ptMapCurrent) and (p <> ptData) then UserPathz[p]:= UserPathPrefix + '/Data/' + Pathz[p];
+        if (p <> ptMapCurrent) and (p <> ptData) then
+            UserPathz[p]:= UserPathPrefix + '/Data/' + Pathz[p];
 
     UserPathz[ptData]:= UserPathPrefix + '/Data';
 
     for p:= Succ(Low(TPathType)) to High(TPathType) do
-        if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p];
+        if p <> ptMapCurrent then
+            Pathz[p]:= PathPrefix + '/' + Pathz[p];
 
     WriteToConsole('Init SDL... ');
     SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true);
@@ -308,8 +349,10 @@
     WriteLnToConsole(msgOK);
 
     // show main window
-    if cFullScreen then ParseCommand('fullscr 1', true)
-    else ParseCommand('fullscr 0', true);
+    if cFullScreen then
+        ParseCommand('fullscr 1', true)
+    else
+        ParseCommand('fullscr 0', true);
 
     ControllerInit(); // has to happen before InitKbdKeyTable to map keys
     InitKbdKeyTable();
@@ -362,15 +405,18 @@
     OnDestroy();
     // clean up all the other memory allocated
     freeEverything(true);
-    if alsoShutdownFrontend then halt;
+    if alsoShutdownFrontend then
+        halt;
 end;
 
 procedure initEverything (complete:boolean);
 begin
     Randomize();
 
-    if complete then cLogfileBase:= 'game'
-    else cLogfileBase:= 'preview';
+    if complete then
+        cLogfileBase:= 'game'
+    else
+        cLogfileBase:= 'preview';
 
     // uConsts does not need initialization as they are all consts
     uUtils.initModule;
@@ -386,7 +432,7 @@
     uIO.initModule;
 
     if complete then
-    begin
+        begin
 {$IFDEF ANDROID}GLUnit.init;{$ENDIF}
 {$IFDEF SDL13}uTouch.initModule;{$ENDIF}
         uAI.initModule;
@@ -414,13 +460,13 @@
         uVisualGears.initModule;
         uWorld.initModule;
         uCaptions.initModule;
-    end;
+        end;
 end;
 
 procedure freeEverything (complete:boolean);
 begin
     if complete then
-    begin
+        begin
         uCaptions.freeModule;
         uWorld.freeModule;
         uVisualGears.freeModule;
@@ -446,7 +492,7 @@
         //uAIAmmoTests does not need to be freed
         //uAIActions does not need to be freed
         uAI.freeModule;             //stub
-    end;
+        end;
 
     uIO.freeModule;             //stub
     uLand.freeModule;
@@ -462,7 +508,8 @@
 
 /////////////////////////
 procedure GenLandPreview{$IFDEF HWLIBRARY}(port: LongInt); cdecl; export{$ENDIF};
-var Preview: TPreview;
+var
+    Preview: TPreview;
 begin
     initEverything(false);
 {$IFDEF HWLIBRARY}
@@ -502,8 +549,10 @@
     WriteLn('Read documentation online at http://code.google.com/p/hedgewars/wiki/CommandLineOptions for more information');
     WriteLn();
     Write('PARSED COMMAND: ');
+    
     for i:=0 to ParamCount do
         Write(ParamStr(i) + ' ');
+        
     WriteLn();
 end;
 
@@ -529,11 +578,15 @@
 ////////////////////////////////////////////////////////////////////////////////
 begin
     GetParams();
-    if (Length(cLocaleFName) > 6) then cLocale := Copy(cLocaleFName,1,5)
-    else cLocale := Copy(cLocaleFName,1,2);
+    if (Length(cLocaleFName) > 6) then
+        cLocale := Copy(cLocaleFName,1,5)
+    else
+        cLocale := Copy(cLocaleFName,1,2);
 
-    if GameType = gmtLandPreview then GenLandPreview()
-    else if GameType = gmtSyntax then DisplayUsage()
+    if GameType = gmtLandPreview then
+        GenLandPreview()
+    else if GameType = gmtSyntax then
+        DisplayUsage()
     else Game();
 
     // return 1 when engine is not called correctly