mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-09 23:50:25 +00:00
Add a helper function to get the current set_index which which checks it is in range.
This commit is contained in:
parent
27082f9efa
commit
6f35f3274f
@ -87,6 +87,7 @@ struct MusicSystem {
|
||||
void PlaylistClear();
|
||||
|
||||
private:
|
||||
uint GetSetIndex();
|
||||
void SetPositionBySetIndex(uint set_index);
|
||||
void ChangePlaylistPosition(int ofs);
|
||||
int playlist_position;
|
||||
@ -191,6 +192,17 @@ void MusicSystem::SetPositionBySetIndex(uint set_index)
|
||||
if (it != std::end(this->active_playlist)) this->playlist_position = std::distance(std::begin(this->active_playlist), it);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get set index from current playlist position.
|
||||
* @return current set index, or UINT_MAX if nothing is selected.
|
||||
*/
|
||||
uint MusicSystem::GetSetIndex()
|
||||
{
|
||||
return static_cast<size_t>(this->playlist_position) < this->active_playlist.size()
|
||||
? this->active_playlist[this->playlist_position].set_index
|
||||
: UINT_MAX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable shuffle mode.
|
||||
*/
|
||||
@ -198,7 +210,7 @@ void MusicSystem::Shuffle()
|
||||
{
|
||||
_settings_client.music.shuffle = true;
|
||||
|
||||
uint set_index = this->active_playlist[this->playlist_position].set_index;
|
||||
uint set_index = this->GetSetIndex();
|
||||
this->active_playlist = this->displayed_playlist;
|
||||
for (size_t i = 0; i < this->active_playlist.size(); i++) {
|
||||
size_t shuffle_index = InteractiveRandom() % (this->active_playlist.size() - i);
|
||||
@ -217,7 +229,7 @@ void MusicSystem::Unshuffle()
|
||||
{
|
||||
_settings_client.music.shuffle = false;
|
||||
|
||||
uint set_index = this->active_playlist[this->playlist_position].set_index;
|
||||
uint set_index = this->GetSetIndex();
|
||||
this->active_playlist = this->displayed_playlist;
|
||||
this->SetPositionBySetIndex(set_index);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user