mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-08-22 00:24:44 -05:00
Refactor Menus to reduce code
This commit is contained in:
15
include/Menus/GenericMenu.hpp
Normal file
15
include/Menus/GenericMenu.hpp
Normal 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
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user