Refactor Menus to reduce code

This commit is contained in:
Lorenzooone
2025-04-30 19:09:25 +02:00
parent 405bba1cb8
commit d93fd2edb2
6 changed files with 772 additions and 962 deletions

View File

@@ -0,0 +1,15 @@
#ifndef __GENERICMENU_HPP
#define __GENERICMENU_HPP
#include <SFML/Graphics.hpp>
#include "event_structs.hpp"
class GenericMenu {
public:
virtual ~GenericMenu() {}
virtual bool poll(SFEvent &event_data) = 0;
virtual void draw(float scaling_factor, sf::RenderTarget &window) = 0;
virtual void reset_data(bool full_reset) = 0;
virtual void reset_output_option() = 0;
};
#endif

View File

@@ -1,12 +1,12 @@
#ifndef __OPTIONSELECTIONMENU_HPP
#define __OPTIONSELECTIONMENU_HPP
#include <SFML/Graphics.hpp>
#include <chrono>
#include "GenericMenu.hpp"
#include "TextRectangle.hpp"
#include "TextRectanglePool.hpp"
#include "event_structs.hpp"
#define BACK_X_OUTPUT_OPTION -1
@@ -16,7 +16,7 @@
#define INC_ACTION 2
#define FALSE_ACTION 3
class OptionSelectionMenu {
class OptionSelectionMenu : public GenericMenu {
public:
OptionSelectionMenu();
virtual ~OptionSelectionMenu();

View File

@@ -1,13 +1,13 @@
#ifndef __RELPOSMENU_HPP
#define __RELPOSMENU_HPP
#include <SFML/Graphics.hpp>
#include <chrono>
#include "GenericMenu.hpp"
#include "TextRectangle.hpp"
#include "TextRectanglePool.hpp"
#include "display_structs.hpp"
#include "event_structs.hpp"
#define BACK_X_OUTPUT_OPTION -1
@@ -17,7 +17,7 @@ enum RelPosMenuOutAction{
REL_POS_MENU_CONFIRM,
};
class RelativePositionMenu {
class RelativePositionMenu : public GenericMenu {
public:
RelativePositionMenu();
RelativePositionMenu(TextRectanglePool* text_pool);

View File

@@ -156,7 +156,9 @@ private:
const float bad_resolution_timeout = 30.0f;
const float menu_change_timeout = 0.3f;
CurrMenuType curr_menu = DEFAULT_MENU_TYPE;
GenericMenu* curr_menu_ptr = NULL;
CurrMenuType loaded_menu;
GenericMenu* loaded_menu_ptr;
ConnectionMenu *connection_menu;
MainMenu *main_menu;
VideoMenu *video_menu;
@@ -362,6 +364,7 @@ private:
void crop();
void setWinSize(bool is_main_thread);
bool can_setup_menu();
void switch_to_menu(CurrMenuType new_menu_type, GenericMenu* new_menu, bool reset_data = true, bool update_last_menu_change_time = true);
void setup_no_menu();
void setup_main_menu(bool reset_data = true, bool skip_setup_check = false);
void setup_video_menu(bool reset_data = true);

View File

@@ -297,6 +297,7 @@ void WindowScreen::draw(double frame_time, VideoOutputData* out_buf) {
}
this->last_interleaved_3d = this->display_data->interleaved_3d;
this->loaded_menu = this->curr_menu;
this->loaded_menu_ptr = this->curr_menu_ptr;
loaded_operations = future_operations;
if(this->loaded_operations.call_create) {
this->last_draw_time = std::chrono::high_resolution_clock::now();

File diff suppressed because it is too large Load Diff