commit d1756896
Add an option to pick random from favorites.
Changed files
| M | src/MainGameState.cpp before |
| M | src/MainGameState.hpp before |
diff --git a/src/MainGameState.cpp b/src/MainGameState.cpp
index e89f5d6..cf43645 100644
--- a/src/MainGameState.cpp
+++ b/src/MainGameState.cpp
@@ -23,7 +23,13 @@ https://github.com/sago007/saland
#include "MainGameState.hpp"
#include <string>
+#include <random>
+#include <iostream>
#include "globals.hpp"
+#include "SagoImGui.hpp"
+#include "config.hpp"
+#include "PuzzleSingleImageState.hpp"
+#include "sago_common.hpp"
MainGameState::MainGameState() {
}
@@ -33,20 +39,58 @@ MainGameState::~MainGameState() {
}
bool MainGameState::IsActive() {
- return true;
+ return isActive;
}
void MainGameState::ProcessInput(const SDL_Event& event, bool& processed) {
-
+ ImGui_ImplSDL2_ProcessEvent(&event);
}
void MainGameState::Draw(SDL_Renderer* target) {
DrawRectYellow(target, 5, 5, 200, 200);
+
+ ImGui::BeginMainMenuBar();
+ if (ImGui::BeginMenu("File")) {
+ if (ImGui::MenuItem("Random image from favorites")) {
+ shouldLoadRandomFavorite = true;
+ }
+ if (ImGui::MenuItem("Quit")) {
+ isActive = false;
+ }
+ ImGui::EndMenu();
+ }
+ ImGui::EndMainMenuBar();
}
void MainGameState::Update() {
+ if (shouldLoadRandomFavorite) {
+ shouldLoadRandomFavorite = false;
+ LoadRandomFavorite();
+ }
+}
+
+void MainGameState::LoadRandomFavorite() {
+ std::vector<std::string> favorites = LoadFavorites();
+
+ if (favorites.empty()) {
+ std::cerr << "No favorites found!" << std::endl;
+ return;
+ }
+
+ // Pick a random favorite
+ std::random_device rd;
+ std::mt19937 gen(rd());
+ std::uniform_int_distribution<> dis(0, favorites.size() - 1);
+ int randomIndex = dis(gen);
+
+ std::string randomFavorite = favorites[randomIndex];
+ std::cout << "Loading random favorite: " << randomFavorite << std::endl;
+ // Load the puzzle
+ PuzzleSingleImageState psi;
+ psi.LoadPictureFromFile(randomFavorite, globalData.screen);
+ RunGameState(psi);
}
diff --git a/src/MainGameState.hpp b/src/MainGameState.hpp
index 2350933..bf0860b 100644
--- a/src/MainGameState.hpp
+++ b/src/MainGameState.hpp
@@ -39,6 +39,8 @@ public:
private:
bool isActive = true;
+ bool shouldLoadRandomFavorite = false;
+ void LoadRandomFavorite();
};
void DrawRectWhite(SDL_Renderer* target, int topx, int topy, int height, int width);