[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/granatier/src
From:       Mathias Kraus <k.hias () gmx ! de>
Date:       2009-10-10 21:25:03
Message-ID: 1255209903.386168.22781.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1033718 by mkraus:

improve bonus_bad_slow and bonus_bad_hyperactive

 M  +46 -17    player.cpp  


--- trunk/playground/games/granatier/src/player.cpp #1033717:1033718
@@ -358,28 +358,48 @@
             }
             break;
         case Bonus::HYPERACTIVE:
-            if(m_badBonusCountdownTimer->isActive())
             {
-                m_badBonusCountdownTimer->stop();
-                slot_removeBadBonus();
+                if(m_badBonusCountdownTimer->isActive())
+                {
+                    m_badBonusCountdownTimer->stop();
+                    slot_removeBadBonus();
+                }
+                
+                int askedXSpeedTemp = m_askedXSpeed;
+                int askedYSpeedTemp = m_askedYSpeed;
+                m_normalSpeed = m_speed;
+                m_speed = m_maxSpeed * 3;
+                m_askedXSpeed = sign(m_xSpeed) * m_speed;
+                m_askedYSpeed = sign(m_ySpeed) * m_speed;
+                updateDirection();
+                m_askedXSpeed = askedXSpeedTemp;
+                m_askedYSpeed = askedYSpeedTemp;
+                
+                m_badBonusType = Bonus::HYPERACTIVE;
+                m_badBonusCountdownTimer->start();
             }
-            
-            m_normalSpeed = m_speed;
-            m_speed = m_maxSpeed * 3;
-            m_badBonusType = Bonus::HYPERACTIVE;
-            m_badBonusCountdownTimer->start();
             break;
         case Bonus::SLOW:
-            if(m_badBonusCountdownTimer->isActive())
             {
-                m_badBonusCountdownTimer->stop();
-                slot_removeBadBonus();
+                if(m_badBonusCountdownTimer->isActive())
+                {
+                    m_badBonusCountdownTimer->stop();
+                    slot_removeBadBonus();
+                }
+                
+                int askedXSpeedTemp = m_askedXSpeed;
+                int askedYSpeedTemp = m_askedYSpeed;
+                m_normalSpeed = m_speed;
+                m_speed = 1;
+                m_askedXSpeed = sign(m_xSpeed) * m_speed;
+                m_askedYSpeed = sign(m_ySpeed) * m_speed;
+                updateDirection();
+                m_askedXSpeed = askedXSpeedTemp;
+                m_askedYSpeed = askedYSpeedTemp;
+                
+                m_badBonusType = Bonus::SLOW;
+                m_badBonusCountdownTimer->start();
             }
-            
-            m_normalSpeed = m_speed;
-            m_speed = 1;
-            m_badBonusType = Bonus::SLOW;
-            m_badBonusCountdownTimer->start();
             break;
         case Bonus::MIRROR:
             {
@@ -537,7 +557,16 @@
     {
         case Bonus::HYPERACTIVE:
         case Bonus::SLOW:
-            m_speed = m_normalSpeed;
+            {
+                int askedXSpeedTemp = m_askedXSpeed;
+                int askedYSpeedTemp = m_askedYSpeed;
+                m_speed = m_normalSpeed;
+                m_askedXSpeed = sign(m_xSpeed) * m_speed;
+                m_askedYSpeed = sign(m_ySpeed) * m_speed;
+                updateDirection();
+                m_askedXSpeed = askedXSpeedTemp;
+                m_askedYSpeed = askedYSpeedTemp;
+            }
             break;
         case Bonus::MIRROR:
             {
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic