merge for the win
authorkoda
Mon, 04 Mar 2013 10:33:30 +0100
changeset 8638 0a6837edb278
parent 8637 bf63104605fe (diff)
parent 8629 76a265f3967c (current diff)
child 8639 33d29ed99faa
merge for the win
--- a/CMakeLists.txt	Sun Mar 03 23:25:34 2013 +0400
+++ b/CMakeLists.txt	Mon Mar 04 10:33:30 2013 +0100
@@ -236,8 +236,6 @@
 #get BUILD_TYPE and enable/disable optimisation
 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration")
 if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
-    set(HW_DEV true) #becomes isDevBuild
-
     list(APPEND pascal_flags "-O-"              # disable all optimisations
                              "-g"               # enable debug symbols
                              "-gl"              # add line info to bt
@@ -245,8 +243,6 @@
                              )
     list(APPEND haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind")
 else()
-    set(HW_DEV false)
-
     list(APPEND pascal_flags "-Os"              # optimise for size
                              "-Xs"              # strip binary
                              "-Si"              # turn on inlining
@@ -265,7 +261,6 @@
     endif()
 
     if(ghc_executable)
-        set(HAVE_NETSERVER true)
         add_subdirectory(gameServer)
         message(STATUS "Found GHC: ${ghc_executable}")
     else()
--- a/QTfrontend/hwconsts.cpp.in	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/hwconsts.cpp.in	Mon Mar 04 10:33:30 2013 +0100
@@ -73,8 +73,5 @@
 QString * netHost = new QString();
 quint16 netPort = NETGAME_DEFAULT_PORT;
 
-bool haveServer = ${HAVE_NETSERVER};
-bool isDevBuild = ${HW_DEV};
-
 int season = SEASON_NONE;
 int years_since_foundation = 0;
--- a/QTfrontend/hwconsts.h	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/hwconsts.h	Mon Mar 04 10:33:30 2013 +0100
@@ -50,8 +50,6 @@
 extern QString * netHost;
 extern quint16 netPort;
 
-extern bool haveServer;
-extern bool isDevBuild;
 
 //Current season, SEASON_NONE by default
 extern int season;
--- a/QTfrontend/net/tcpBase.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/net/tcpBase.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -141,9 +141,10 @@
     connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(StartProcessError(QProcess::ProcessError)));
     QStringList arguments=getArguments();
 
+#ifdef DEBUG
     // redirect everything written on stdout/stderr
-    if(isDevBuild)
-        process->setProcessChannelMode(QProcess::ForwardedChannels);
+    process->setProcessChannelMode(QProcess::ForwardedChannels);
+#endif
 
     process->start(bindir->absolutePath() + "/hwengine", arguments);
 #endif
--- a/QTfrontend/ui/page/pagemain.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/ui/page/pagemain.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -127,17 +127,15 @@
 {
     initPage();
 
-    if(frontendEffects) setAttribute(Qt::WA_NoSystemBackground, true);
+    if(frontendEffects)
+        setAttribute(Qt::WA_NoSystemBackground, true);
     mainNote->setOpenExternalLinks(true);
 
-    if(!isDevBuild)
-    {
-        setDefautDescription(QLabel::tr("Tip: ") + randomTip());
-    }
-    else
-    {
-        setDefautDescription(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!"));
-    }
+#ifdef DEBUG
+    setDefautDescription(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!"));
+#else
+    setDefautDescription(QLabel::tr("Tip: ") + randomTip());
+#endif
 
 }
 
--- a/QTfrontend/ui/page/pagenet.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/ui/page/pagenet.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -72,7 +72,12 @@
 
     BtnNetSvrStart = formattedButton(QPushButton::tr("Start server"));
     BtnNetSvrStart->setMinimumWidth(180);
-    BtnNetSvrStart->setVisible(haveServer);
+    QString serverPath = bindir->absolutePath() + "/hedgewars-server";
+#ifdef Q_WS_WIN
+    serverPath += + ".exe";
+#endif
+    QFile server(serverPath);
+    BtnNetSvrStart->setVisible(server.exists());
 
     footerLayout->addStretch();
     footerLayout->addWidget(BtnNetSvrStart);
--- a/QTfrontend/ui/page/pageroomslist.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/ui/page/pageroomslist.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -75,7 +75,7 @@
     corner->setFixedSize(10, 10);
 
     const QIcon& lp = QIcon(":/res/new.png");
-    QSize sz = lp.actualSize(QSize(65535, 65535));
+    //QSize sz = lp.actualSize(QSize(65535, 65535));
     BtnCreate = new QPushButton();
     BtnCreate->setText(tr("Create room"));
     BtnCreate->setIcon(lp);
--- a/QTfrontend/ui/widget/feedbackdialog.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/ui/widget/feedbackdialog.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -273,7 +273,7 @@
     delete process;
 #endif
 
-#ifdef __i386__ || __x86_64__
+#if defined(__i386__) || defined(__x86_64__)
     // cpu info
     quint32 registers[4];
     quint32 i;
--- a/QTfrontend/ui_hwform.cpp	Sun Mar 03 23:25:34 2013 +0400
+++ b/QTfrontend/ui_hwform.cpp	Mon Mar 04 10:33:30 2013 +0100
@@ -54,9 +54,10 @@
     HWForm->setObjectName(QString::fromUtf8("HWForm"));
     HWForm->resize(QSize(640, 480).expandedTo(HWForm->minimumSizeHint()));
     HWForm->setMinimumSize(QSize(720, 450));
-    QString suffix = isDevBuild ?
-        QMainWindow::tr("-r%1 (%2)").arg(*cRevisionString, *cHashString) : QString("");
-    QString title = QMainWindow::tr("Hedgewars %1").arg(*cVersionString) + suffix;
+    QString title = QMainWindow::tr("Hedgewars %1").arg(*cVersionString);
+#ifdef DEBUG
+    title += QMainWindow::tr("-r%1 (%2)").arg(*cRevisionString, *cHashString);
+#endif
     HWForm->setWindowTitle(title);
     centralWidget = new QWidget(HWForm);
     centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
--- a/hedgewars/GSHandlers.inc	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/GSHandlers.inc	Mon Mar 04 10:33:30 2013 +0100
@@ -92,7 +92,7 @@
                     
                 else
                     begin
-                    if (gi^.State and gstMoving) = 0 then
+                    if ((gi^.State and gstMoving) = 0) and (gi^.Hedgehog^.Effects[heFrozen] = 0) then
                         begin
                         gi^.dX.isNegative:= X<gi^.X;
                         gi^.State := gi^.State or gstLoser;
@@ -3635,7 +3635,7 @@
             break;
 
         // don't port portals or other gear that wouldn't make sense
-        if (iterator^.Kind in [gtPortal, gtRope, gtAirAttack])
+        if (iterator^.Kind in [gtPortal, gtRope, gtAirAttack, gtIceGun])
         or (iterator^.PortalCounter > 32) then
             continue;
 
@@ -4584,8 +4584,8 @@
         if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9)
            , lfIndestructible) then
             begin
-            Gear^.X := Gear^.X + Gear^.dX;
-            Gear^.Y := Gear^.Y + _1_9;
+            //Gear^.X := Gear^.X + Gear^.dX;
+            Gear^.Y := Gear^.Y + _1_9
             end;
         end;
     if TestCollisionYwithGear(Gear, 1) <> 0 then
@@ -4596,14 +4596,15 @@
         end
     else
         begin
-        Gear^.dY := Gear^.dY + cGravity;
-        Gear^.Y := Gear^.Y + Gear^.dY;
+        //Gear^.dY := Gear^.dY + cGravity;
+        //Gear^.Y := Gear^.Y + Gear^.dY;
         if hwRound(Gear^.Y) > cWaterLine then
             Gear^.Timer := 1
         end;
 
-    Gear^.X := Gear^.X + HitGear^.dX;
+    //Gear^.X := Gear^.X + HitGear^.dX;
     HitGear^.X := Gear^.X;
+    HitGear^.Y := Gear^.Y;
     SetLittle(HitGear^.dY);
     HitGear^.Active:= true;
 end;
@@ -4956,7 +4957,7 @@
         end;
     Gear^.Pos:= 4;
     // This condition might need tweaking
-    Gear^.Timer:= GetRandom(cHedgehogTurnTime*TeamsCount*2)+cHedgehogTurnTime*2
+    Gear^.Timer:= GetRandom(cHedgehogTurnTime*TeamsCount)+cHedgehogTurnTime
     end;
 
 if (Gear^.Pos = 4) then
@@ -4992,7 +4993,7 @@
             Gear^.Power:= 0;
             end
         end
-    else dec(Gear^.Timer);
+    else if (CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan) then dec(Gear^.Timer)
     end;
 
 end;
@@ -5124,10 +5125,7 @@
         AfterAttack;
         exit
         end
-    else
-        begin
-        updateFuel(Gear);
-        end;
+    else if Gear^.Message and (gmUp or gmDown) = 0 then updateFuel(Gear);
 
     with Gear^ do
         begin
@@ -5182,14 +5180,14 @@
                     begin 
                     FillRoundInLandWithIce(Target.X, Target.Y, iceRadius);
                     SetAllHHToActive;                                     
-                    IceState := iceWaitNextTarget;
+                    IceState := iceWaitCollision;
                     end;
 
                 if (IceState = iceCollideWithWater) and ((GameTicks - IceTime) > groundFreezingTime) then
                     begin                    
                     DrawIceBreak(Target.X, cWaterLine - iceHeight, iceRadius, iceHeight);
                     SetAllHHToActive; 
-                    IceState := iceWaitNextTarget;
+                    IceState := iceWaitCollision;
                     end;
 
 // freeze nearby hogs
@@ -5203,7 +5201,7 @@
                                 if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then
                                     hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1
                                 else if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] = 256 then
-                                    hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 100000
+                                    hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= cHedgehogTurnTime + cReadyDelay
                                 end;
                 inc(Pos)
             end
--- a/hedgewars/uGears.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uGears.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -838,7 +838,7 @@
                 ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch
                 end;
 
-            if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then
+            if (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then
                 begin
                 Gear^.dX:= Ammo^.dX * Power * _0_005;
                 Gear^.dY:= Ammo^.dY * Power * _0_005
--- a/hedgewars/uGearsHedgehog.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uGearsHedgehog.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -65,7 +65,12 @@
         begin
         if (CurAmmoType = amSniperRifle) and ((GameFlags and gfArtillery) = 0) then
             cArtillery := false;
-        OnUsedAmmo(HHGear^.Hedgehog^)
+        if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0 then
+            begin
+            MultiShootAttacks:= Ammoz[CurAmmoType].Ammo.NumPerTurn;
+            AfterAttack
+            end
+        else OnUsedAmmo(HHGear^.Hedgehog^)
         end;
 
     MultiShootAttacks:= 0;
@@ -1219,6 +1224,7 @@
 begin
     if (Gear^.Message and (gmAllStoppable or gmLJump or gmHJump) = 0)
     and (Gear^.State and (gstHHJumping or gstHHHJump or gstAttacking) = 0)
+    and ((Gear^.Hedgehog = nil) or ((Gear^.Hedgehog^.Effects[heFrozen] = 0) or (Gear^.Hedgehog^.Effects[heFrozen] > 255)))
     and (not Gear^.dY.isNegative) and (TurnTimeLeft > 0) and (TestCollisionYwithGear(Gear, 1) and lfIce <> 0) then
         begin
         slope:= CalcSlopeBelowGear(Gear);
@@ -1256,7 +1262,7 @@
 if GameTicks mod 100 = 0 then CheckIce(Gear);
 if Gear^.Hedgehog^.Effects[heFrozen] > 0 then 
     begin
-    if Gear^.Hedgehog^.Effects[heFrozen] > 256 then
+    if (Gear^.Hedgehog^.Effects[heFrozen] > 256) and (CurrentHedgehog^.Team^.Clan <> Gear^.Hedgehog^.Team^.Clan) then
         dec(Gear^.Hedgehog^.Effects[heFrozen])
     else if GameTicks mod 10 = 0 then
         dec(Gear^.Hedgehog^.Effects[heFrozen])
--- a/hedgewars/uGearsRender.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uGearsRender.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -1271,8 +1271,13 @@
                                 begin
                                 i:= random(100)+100;
                                 if Gear^.Target.X <> NoPointX then
-                                    DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40)
-                                else DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40);
+                                    begin
+                                    DrawLine(Gear^.Target.X, Gear^.Target.Y, hwRound(HHGear^.X), hwRound(HHGear^.Y), 4.0, i, i, $FF, $40);
+                                    end
+                                else
+                                    begin
+                                    DrawLine(hwRound(HHGear^.X), hwRound(HHGear^.Y), hwRound(Gear^.X), hwRound(Gear^.Y), 4.0, i, i, $FF, $40);                                    
+                                    end;
                                 end
                           end
                       end;
--- a/hedgewars/uGearsUtils.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uGearsUtils.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -182,8 +182,7 @@
 i:= _1;
 if (CurrentHedgehog <> nil) and CurrentHedgehog^.King then
     i:= _1_5;
-if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Effects[heFrozen] > 0) then i:=i*_0_2;
-if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.King) then
+if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then
     ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent * _0_5)
 else
     ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent)
--- a/hedgewars/uLandGraphics.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uLandGraphics.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -265,7 +265,7 @@
            (j < 0) or
            (j > LAND_HEIGHT -1) then
            begin               
-           result := 0;
+           result := 9;
            exit;
            end;
 
--- a/hedgewars/uRender.pas	Sun Mar 03 23:25:34 2013 +0400
+++ b/hedgewars/uRender.pas	Mon Mar 04 10:33:30 2013 +0100
@@ -349,7 +349,7 @@
 end;
 
 procedure DrawLine(X0, Y0, X1, Y1, Width: Single; r, g, b, a: Byte);
-var VertexBuffer: array [0..3] of TVertex2f;
+var VertexBuffer: array [0..1] of TVertex2f;
 begin
     glDisable(GL_TEXTURE_2D);
     glEnable(GL_LINE_SMOOTH);