1) Removed warnings.
2) Enabled up/down events (e.g. pressing arrow up/down). git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2152 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
edbfdece99
commit
df3b8206ed
@ -39,10 +39,7 @@ enum WidgetTokens
|
|||||||
WTOK_IMG0,
|
WTOK_IMG0,
|
||||||
WTOK_IMG1,
|
WTOK_IMG1,
|
||||||
WTOK_AUTHOR,
|
WTOK_AUTHOR,
|
||||||
|
|
||||||
WTOK_EMPTY_UP,
|
|
||||||
WTOK_UP,
|
WTOK_UP,
|
||||||
WTOK_EMPTY_DOWN,
|
|
||||||
WTOK_DOWN,
|
WTOK_DOWN,
|
||||||
WTOK_EMPTY0 = 1000,
|
WTOK_EMPTY0 = 1000,
|
||||||
WTOK_TRACK0 = 2000
|
WTOK_TRACK0 = 2000
|
||||||
@ -94,11 +91,12 @@ TrackSel::TrackSel()
|
|||||||
updateScrollPosition();
|
updateScrollPosition();
|
||||||
|
|
||||||
// Make sure to select one track. The call to update() here is necessary,
|
// Make sure to select one track. The call to update() here is necessary,
|
||||||
// since it guarantees that selectedWgt is indeed track0 (otherwise the
|
// since it guarantees that selectedWgt is indeed a track (otherwise the
|
||||||
// manager might select e.g. arrow up, and then no track is displayed).
|
// manager might select e.g. arrow up, and then no track is displayed).
|
||||||
widget_manager->setSelectedWgt(WTOK_TRACK0+(m_max_entries-1)/2);
|
widget_manager->setSelectedWgt(WTOK_TRACK0+(m_max_entries-1)/2);
|
||||||
update(0);
|
displayImages(0);
|
||||||
widget_manager->layout(WGT_AREA_TOP);
|
widget_manager->layout(WGT_AREA_TOP);
|
||||||
|
//update(0);
|
||||||
} // TrackSel
|
} // TrackSel
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -143,6 +141,7 @@ void TrackSel::updateScrollPosition()
|
|||||||
widget_manager->setWgtText(WTOK_TRACK0+i, g[-indx-1]);
|
widget_manager->setWgtText(WTOK_TRACK0+i, g[-indx-1]);
|
||||||
}
|
}
|
||||||
} // for i
|
} // for i
|
||||||
|
m_current_track = -1; // force new display of tracks
|
||||||
} // updateScrollPosition
|
} // updateScrollPosition
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -190,30 +189,11 @@ void TrackSel::switchGroup()
|
|||||||
} // switchGroup
|
} // switchGroup
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void TrackSel::update(float dt)
|
void TrackSel::displayImages(int selected_track)
|
||||||
{
|
{
|
||||||
int indx = widget_manager->getSelectedWgt() - WTOK_TRACK0;
|
if( m_current_track == selected_track) return;
|
||||||
if(indx<0 || indx >= m_max_entries)
|
m_current_track = selected_track;
|
||||||
{
|
if(selected_track<0)
|
||||||
widget_manager->update(dt);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
indx = m_offset + indx;
|
|
||||||
// Don't use modulo here, otherwise (one extreme short lists, e.g. 1 track,
|
|
||||||
// 1 group, the track is selected when hovering over invisible menu entries
|
|
||||||
if(indx< 0 ) indx += m_index_avail_tracks.size();
|
|
||||||
if(indx>=(int)m_index_avail_tracks.size()) indx -= m_index_avail_tracks.size();
|
|
||||||
if(indx<0 || indx >= (int)m_index_avail_tracks.size())
|
|
||||||
{
|
|
||||||
widget_manager->update(dt);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const int SELECTED_TRACK = m_index_avail_tracks[indx];
|
|
||||||
// Group selected, disable track imagess
|
|
||||||
if( m_current_track != SELECTED_TRACK)
|
|
||||||
{
|
|
||||||
if(SELECTED_TRACK<0)
|
|
||||||
{
|
{
|
||||||
widget_manager->hideWgtTexture(WTOK_IMG0);
|
widget_manager->hideWgtTexture(WTOK_IMG0);
|
||||||
widget_manager->hideWgtTexture(WTOK_IMG1);
|
widget_manager->hideWgtTexture(WTOK_IMG1);
|
||||||
@ -223,21 +203,17 @@ void TrackSel::update(float dt)
|
|||||||
widget_manager->hideWgtBorder(WTOK_IMG1);
|
widget_manager->hideWgtBorder(WTOK_IMG1);
|
||||||
widget_manager->hideWgtRect(WTOK_AUTHOR);
|
widget_manager->hideWgtRect(WTOK_AUTHOR);
|
||||||
widget_manager->hideWgtText(WTOK_AUTHOR);
|
widget_manager->hideWgtText(WTOK_AUTHOR);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
// Now we have to display new images
|
||||||
|
// ---------------------------------
|
||||||
widget_manager->showWgtBorder(WTOK_IMG0);
|
widget_manager->showWgtBorder(WTOK_IMG0);
|
||||||
widget_manager->showWgtBorder(WTOK_IMG1);
|
widget_manager->showWgtBorder(WTOK_IMG1);
|
||||||
widget_manager->showWgtRect(WTOK_AUTHOR);
|
widget_manager->showWgtRect(WTOK_AUTHOR);
|
||||||
widget_manager->showWgtText(WTOK_AUTHOR);
|
widget_manager->showWgtText(WTOK_AUTHOR);
|
||||||
}
|
|
||||||
}
|
const Track* TRACK = track_manager->getTrack(selected_track);
|
||||||
if( m_current_track != SELECTED_TRACK &&
|
|
||||||
SELECTED_TRACK >= 0 &&
|
|
||||||
SELECTED_TRACK < (int)track_manager->getNumberOfTracks() )
|
|
||||||
{
|
|
||||||
const Track* TRACK = track_manager->getTrack( SELECTED_TRACK );
|
|
||||||
bool isAvailable = !unlock_manager->isLocked(TRACK->getIdent());
|
bool isAvailable = !unlock_manager->isLocked(TRACK->getIdent());
|
||||||
|
|
||||||
if( isAvailable )
|
if( isAvailable )
|
||||||
@ -282,14 +258,14 @@ void TrackSel::update(float dt)
|
|||||||
|
|
||||||
widget_manager->hideWgtRect( WTOK_IMG1 );
|
widget_manager->hideWgtRect( WTOK_IMG1 );
|
||||||
widget_manager->hideWgtTexture( WTOK_IMG1 );
|
widget_manager->hideWgtTexture( WTOK_IMG1 );
|
||||||
widget_manager->setWgtTrackNum( WTOK_IMG1, SELECTED_TRACK );
|
widget_manager->setWgtTrackNum( WTOK_IMG1, selected_track );
|
||||||
widget_manager->showWgtTrack( WTOK_IMG1 );
|
widget_manager->showWgtTrack( WTOK_IMG1 );
|
||||||
}
|
}
|
||||||
else if( screenshot.empty() )
|
else if( screenshot.empty() )
|
||||||
{
|
{
|
||||||
widget_manager->hideWgtRect( WTOK_IMG0 );
|
widget_manager->hideWgtRect( WTOK_IMG0 );
|
||||||
widget_manager->hideWgtTexture( WTOK_IMG0 );
|
widget_manager->hideWgtTexture( WTOK_IMG0 );
|
||||||
widget_manager->setWgtTrackNum( WTOK_IMG0, SELECTED_TRACK );
|
widget_manager->setWgtTrackNum( WTOK_IMG0, selected_track );
|
||||||
widget_manager->showWgtTrack( WTOK_IMG0 );
|
widget_manager->showWgtTrack( WTOK_IMG0 );
|
||||||
|
|
||||||
widget_manager->setWgtColor( WTOK_IMG1, WGT_WHITE);
|
widget_manager->setWgtColor( WTOK_IMG1, WGT_WHITE);
|
||||||
@ -302,7 +278,7 @@ void TrackSel::update(float dt)
|
|||||||
{
|
{
|
||||||
widget_manager->hideWgtRect( WTOK_IMG0 );
|
widget_manager->hideWgtRect( WTOK_IMG0 );
|
||||||
widget_manager->hideWgtTexture( WTOK_IMG0 );
|
widget_manager->hideWgtTexture( WTOK_IMG0 );
|
||||||
widget_manager->setWgtTrackNum( WTOK_IMG0, SELECTED_TRACK );
|
widget_manager->setWgtTrackNum( WTOK_IMG0, selected_track );
|
||||||
widget_manager->showWgtTrack( WTOK_IMG0 );
|
widget_manager->showWgtTrack( WTOK_IMG0 );
|
||||||
|
|
||||||
widget_manager->hideWgtRect( WTOK_IMG1 );
|
widget_manager->hideWgtRect( WTOK_IMG1 );
|
||||||
@ -310,9 +286,29 @@ void TrackSel::update(float dt)
|
|||||||
widget_manager->hideWgtTrack( WTOK_IMG1 );
|
widget_manager->hideWgtTrack( WTOK_IMG1 );
|
||||||
}
|
}
|
||||||
} // isAvailable
|
} // isAvailable
|
||||||
} // m_current_track != SELECTED_TRACK && ...
|
} // displayImages
|
||||||
|
|
||||||
m_current_track = SELECTED_TRACK;
|
//-----------------------------------------------------------------------------
|
||||||
|
void TrackSel::update(float dt)
|
||||||
|
{
|
||||||
|
int indx = widget_manager->getSelectedWgt() - WTOK_TRACK0;
|
||||||
|
if(indx<0 || indx >= m_max_entries)
|
||||||
|
{
|
||||||
|
widget_manager->update(dt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
indx = m_offset + indx;
|
||||||
|
// Don't use modulo here, otherwise (one extreme short lists, e.g. 1 track,
|
||||||
|
// 1 group, the track is selected when hovering over invisible menu entries
|
||||||
|
if(indx< 0 ) indx += m_index_avail_tracks.size();
|
||||||
|
if(indx>=(int)m_index_avail_tracks.size()) indx -= m_index_avail_tracks.size();
|
||||||
|
if(indx<0 || indx >= (int)m_index_avail_tracks.size())
|
||||||
|
{
|
||||||
|
widget_manager->update(dt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
displayImages(m_index_avail_tracks[indx]);
|
||||||
widget_manager->update(dt);
|
widget_manager->update(dt);
|
||||||
} // update
|
} // update
|
||||||
|
|
||||||
@ -369,4 +365,28 @@ void TrackSel::select()
|
|||||||
}
|
}
|
||||||
} // select
|
} // select
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void TrackSel::handle(GameAction action, int value)
|
||||||
|
{
|
||||||
|
// Forward keypresses to basegui
|
||||||
|
if(value) return BaseGUI::handle(action, value);
|
||||||
|
|
||||||
|
if(action==GA_CURSOR_UP)
|
||||||
|
{
|
||||||
|
m_offset--;
|
||||||
|
if(m_offset < 0) m_offset = (int)m_index_avail_tracks.size() - 1;
|
||||||
|
updateScrollPosition();
|
||||||
|
return;
|
||||||
|
|
||||||
|
} // if cursor up
|
||||||
|
if(action ==GA_CURSOR_DOWN)
|
||||||
|
{
|
||||||
|
m_offset++;
|
||||||
|
if(m_offset >= (int)m_index_avail_tracks.size()) m_offset = 0;
|
||||||
|
updateScrollPosition();
|
||||||
|
return;
|
||||||
|
} // if cursor down
|
||||||
|
BaseGUI::handle(action, value);
|
||||||
|
} // handle
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
@ -35,11 +35,13 @@ private:
|
|||||||
int computeIndent(int n) {return 40+abs((int)(m_num_entries-1)/2 - n)*3;}
|
int computeIndent(int n) {return 40+abs((int)(m_num_entries-1)/2 - n)*3;}
|
||||||
void updateScrollPosition();
|
void updateScrollPosition();
|
||||||
void switchGroup();
|
void switchGroup();
|
||||||
|
void displayImages(int selected_track);
|
||||||
public:
|
public:
|
||||||
TrackSel();
|
TrackSel();
|
||||||
~TrackSel();
|
~TrackSel();
|
||||||
|
|
||||||
void update(float dt);
|
void update(float dt);
|
||||||
|
virtual void handle(GameAction, int);
|
||||||
void select();
|
void select();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user