diff --git a/src/session_manager.cpp b/src/session_manager.cpp new file mode 100644 index 0000000..71ea227 --- /dev/null +++ b/src/session_manager.cpp @@ -0,0 +1,40 @@ +#include "session_manager.h" + +SessionManager::SessionManager() + : current_user_(""), + current_difficulty_(""), + current_generator_(nullptr) {} + +void SessionManager::SetUser(const std::string& username, + const std::string& difficulty) { + current_user_ = username; + SwitchDifficulty(difficulty); +} + +bool SessionManager::SwitchDifficulty(const std::string& difficulty) { + if (difficulty == "primary") { + current_generator_ = &primary_generator_; + current_difficulty_ = "小学"; + } else if (difficulty == "junior") { + current_generator_ = &junior_generator_; + current_difficulty_ = "初中"; + } else if (difficulty == "senior") { + current_generator_ = &senior_generator_; + current_difficulty_ = "高中"; + } else { + return false; + } + return true; +} + +QuestionGenerator* SessionManager::GetCurrentGenerator() { + return current_generator_; +} + +std::string SessionManager::GetCurrentDifficulty() const { + return current_difficulty_; +} + +std::string SessionManager::GetCurrentUser() const { + return current_user_; +} \ No newline at end of file