Improved plunger handling when in-race menu is shown: now

the plunger is also shown while the menu is on screen.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@12120 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2012-12-01 12:14:46 +00:00
parent 87c6a98744
commit 1f0d603dbd

View File

@ -1030,8 +1030,6 @@ void RaceGUIBase::drawPlungerInFace(const AbstractKart *kart, float dt)
m_plunger_state = PLUNGER_STATE_INIT;
return;
}
if(World::getWorld()->getPhase()==World::IN_GAME_MENU_PHASE)
return;
const core::recti &viewport = kart->getCamera()->getViewport();
@ -1046,49 +1044,52 @@ void RaceGUIBase::drawPlungerInFace(const AbstractKart *kart, float dt)
m_plunger_speed = core::vector2df(0, 0);
}
m_plunger_move_time -= dt;
if(m_plunger_move_time < dt && m_plunger_state!=PLUNGER_STATE_FAST)
if(World::getWorld()->getPhase()!=World::IN_GAME_MENU_PHASE)
{
const float fast_time = 0.3f;
if(kart->getBlockedByPlungerTime()<fast_time)
m_plunger_move_time -= dt;
if(m_plunger_move_time < dt && m_plunger_state!=PLUNGER_STATE_FAST)
{
// First time we reach faste state: select random target point
// at top of screen and set speed accordingly
RandomGenerator random;
float movement_fraction = 0.3f;
int plunger_x_target = screen_width/2
+ random.get((int)(screen_width*movement_fraction))
- (int)(screen_width*movement_fraction*0.5f);
m_plunger_state = PLUNGER_STATE_FAST;
m_plunger_speed =
core::vector2df((plunger_x_target-screen_width/2)/fast_time,
viewport.getHeight()*0.5f/fast_time);
m_plunger_move_time = fast_time;
}
else
{
RandomGenerator random;
m_plunger_move_time = 0.1f+random.get(50)/200.0f;
// Plunger is either moving or not moving
if(m_plunger_state==PLUNGER_STATE_SLOW_1)
const float fast_time = 0.3f;
if(kart->getBlockedByPlungerTime()<fast_time)
{
m_plunger_state = PLUNGER_STATE_SLOW_2;
// First time we reach faste state: select random target point
// at top of screen and set speed accordingly
RandomGenerator random;
float movement_fraction = 0.3f;
int plunger_x_target = screen_width/2
+ random.get((int)(screen_width*movement_fraction))
- (int)(screen_width*movement_fraction*0.5f);
m_plunger_state = PLUNGER_STATE_FAST;
m_plunger_speed =
core::vector2df(0, 0.05f*viewport.getHeight()
/m_plunger_move_time );
core::vector2df((plunger_x_target-screen_width/2)/fast_time,
viewport.getHeight()*0.5f/fast_time);
m_plunger_move_time = fast_time;
}
else
{
m_plunger_state = PLUNGER_STATE_SLOW_1;
m_plunger_speed =
core::vector2df(0, 0.02f*viewport.getHeight()
/m_plunger_move_time );
}
} // has not reach fast moving state
}
RandomGenerator random;
m_plunger_move_time = 0.1f+random.get(50)/200.0f;
// Plunger is either moving or not moving
if(m_plunger_state==PLUNGER_STATE_SLOW_1)
{
m_plunger_state = PLUNGER_STATE_SLOW_2;
m_plunger_speed =
core::vector2df(0, 0.05f*viewport.getHeight()
/m_plunger_move_time );
}
else
{
m_plunger_state = PLUNGER_STATE_SLOW_1;
m_plunger_speed =
core::vector2df(0, 0.02f*viewport.getHeight()
/m_plunger_move_time );
}
} // has not reach fast moving state
}
m_plunger_offset.X += (int)(m_plunger_speed.X * dt);
m_plunger_offset.Y += (int)(m_plunger_speed.Y * dt);
m_plunger_offset.X += (int)(m_plunger_speed.X * dt);
m_plunger_offset.Y += (int)(m_plunger_speed.Y * dt);
}
const int plunger_size = (int)(0.6f * screen_width);
int offset_y = viewport.UpperLeftCorner.Y + viewport.getHeight()/2