Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
GameMenu.h
Go to the documentation of this file.
1#pragma once
2#include <vector>
3#include <string>
4#include "system_utils.h"
5
6// GameMenu is an instance-based menu attached to a VideoGame object.
7// It receives events (via OnEvent(Message& msg) forwarding) and can be used
8// to navigate a set of menu entries. It is also a GameEntity-like
9// entity so it can be added to the engine's object list if desired.
10
12{
13public:
15 {
16 Resume = 0,
18 Quit = 2,
19 Count = 3
20 };
21
23 {
24 name = "GameMenu";
25 SYSTEM_LOG << "GameMenu Initialized\n";
26 }
27 virtual ~GameMenu()
28 {
29 Deactivate();
30 SYSTEM_LOG << "GameMenu Destroyed\n";
31 }
32
34 {
35 static GameMenu instance;
36 return instance;
37 }
38 static GameMenu& Get() { return GetInstance(); }
39
40 void Activate();
41 void Deactivate();
42 bool IsActive() const { return m_active; }
43
44 void AddEntry(const std::string& e) { m_entries.push_back(e); }
45
46 // Menu navigation
47 void SelectPrevious();
48 void SelectNext();
49 void ValidateSelection();
50
51 int GetSelectedOption() const { return m_selected; }
52
53 // Render simplified text-based menu (placeholder)
54 virtual void Render();
55
56 // Render ImGui F2 menu for loading Tiled levels
57 void RenderF2Menu();
58
59 // Check if F2 menu should be shown
60 void Update();
61
62 bool IsF2MenuOpen() const { return m_f2MenuOpen; }
63 void ToggleF2Menu();
64 void SetF2MenuOpen(bool open);
65
66private:
67 std::string name;
68 bool m_active = false;
69 std::vector<std::string> m_entries;
70 int m_selected = MenuOption::Resume; // Default to Resume
71
72 // F2 menu state
73 bool m_f2MenuOpen = false;
74 std::vector<std::string> m_tiledMapPaths;
77
78 // Helper to scan for .tmj files
79 void ScanForTiledMaps(const std::string& directory);
81};
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
void Activate()
Definition GameMenu.cpp:22
virtual void Render()
Definition GameMenu.cpp:76
void SelectPrevious()
Definition GameMenu.cpp:44
void SetF2MenuOpen(bool open)
Definition GameMenu.cpp:99
void RefreshTiledMapList()
Definition GameMenu.cpp:180
void AddEntry(const std::string &e)
Definition GameMenu.h:44
void Update()
Definition GameMenu.cpp:87
static GameMenu & GetInstance()
Definition GameMenu.h:33
bool m_hasScannedTiledMaps
Definition GameMenu.h:76
bool m_active
Definition GameMenu.h:68
int GetSelectedOption() const
Definition GameMenu.h:51
std::vector< std::string > m_entries
Definition GameMenu.h:69
static GameMenu & Get()
Definition GameMenu.h:38
void ToggleF2Menu()
Definition GameMenu.cpp:94
bool IsF2MenuOpen() const
Definition GameMenu.h:62
void SelectNext()
Definition GameMenu.cpp:49
std::vector< std::string > m_tiledMapPaths
Definition GameMenu.h:74
virtual ~GameMenu()
Definition GameMenu.h:27
void Deactivate()
Definition GameMenu.cpp:33
bool IsActive() const
Definition GameMenu.h:42
void ValidateSelection()
Definition GameMenu.cpp:54
std::string name
Definition GameMenu.h:67
int m_selectedMapIndex
Definition GameMenu.h:75
int m_selected
Definition GameMenu.h:70
void ScanForTiledMaps(const std::string &directory)
Definition GameMenu.cpp:109
void RenderF2Menu()
Definition GameMenu.cpp:200
bool m_f2MenuOpen
Definition GameMenu.h:73
GameMenu()
Definition GameMenu.h:22
@ Restart
Definition GameMenu.h:17
#define SYSTEM_LOG