From 0b725cc4d239e9d4b58aaeb16c3bb56971924929 Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Tue, 14 Aug 2007 22:35:58 +0000 Subject: [PATCH] some touch up and empty() function added to preset chooser git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/personal/carm/dev-1.0@330 6778bc44-b910-0410-a7a0-be141de4315d --- src/projectM-engine/PresetChooser.hpp | 12 +++++++++++- src/projectM-engine/console_interface.cpp | 9 +++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/projectM-engine/PresetChooser.hpp b/src/projectM-engine/PresetChooser.hpp index f1771b413..5f6064963 100644 --- a/src/projectM-engine/PresetChooser.hpp +++ b/src/projectM-engine/PresetChooser.hpp @@ -121,6 +121,11 @@ public: template std::auto_ptr weightedRandom(const PresetInputs & presetInputs, PresetOutputs & preseOutputs); + + + /// True if no presets in directory + bool empty() const; + private: template std::auto_ptr doWeightedSample(WeightFunctor & weightFunctor, const PresetInputs & presetInputs, PresetOutputs & presetOutputs); @@ -191,6 +196,11 @@ std::auto_ptr PresetChooser::weightedRandom(const PresetInputs & presetI return doWeightedSample(weightFunctor); } +inline bool PresetChooser::empty() const { + return m_presetLoader->getNumPresets() == 0; + +} + template inline std::auto_ptr PresetChooser::weightedRandom(const PresetInputs & presetInputs, PresetOutputs & presetOutputs){ @@ -202,7 +212,7 @@ inline std::auto_ptr PresetChooser::weightedRandom(const PresetInputs & inline std::auto_ptr PresetChooser::directoryIndex(std::size_t index, const PresetInputs & presetInputs, PresetOutputs & presetOutputs) const { - return m_presetLoader->loadPreset(index,presetInputs, presetOutputs); + return m_presetLoader->loadPreset(index, presetInputs, presetOutputs); } template diff --git a/src/projectM-engine/console_interface.cpp b/src/projectM-engine/console_interface.cpp index 33af4714d..8599e26fc 100755 --- a/src/projectM-engine/console_interface.cpp +++ b/src/projectM-engine/console_interface.cpp @@ -169,7 +169,6 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode if (((*m_presetPos) == m_presetChooser->end())) { *m_presetPos = m_presetChooser->begin(); } - m_activePreset = std::auto_ptr(0); m_activePreset = m_presetPos->allocate(this->presetInputs, this->presetOutputs); @@ -178,13 +177,19 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode break; case PROJECTM_K_r: + + if (m_presetChooser->empty()) + break; + m_activePreset = m_presetChooser->weightedRandom (this->presetInputs, this->presetOutputs); presetInputs.frame = 0; smoothFrame = 0; break; case PROJECTM_K_p: - + if (m_presetChooser->empty()) + break; + if (*m_presetPos != m_presetChooser->begin()) { --(*m_presetPos); } else {