Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
SystemMenu.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <string>
5#include "system_utils.h"
6
7// Lightweight System menu singleton used by GameEngine to provide global
8// application-level menu controls (show/hide, basic commands).
9// This implementation is intentionally minimal and independent from the
10// event system so it can be activated simply by calling SystemMenu::Get().
11
13{
14public:
16 {
17 // default entries
18 m_items.push_back("About");
19 m_items.push_back("Settings");
20 m_items.push_back("Exit");
21 name = "SystemMenu";
22 SYSTEM_LOG << "SystemMenu Initialized\n";
23 }
24 virtual ~SystemMenu()
25 {
26 SYSTEM_LOG << "SystemMenu Shutdown\n";
27 }
28
29 static SystemMenu& GetInstance();
30 static SystemMenu& Get() { return GetInstance(); }
31
32 void Activate(); // make menu active / visible
33 void Deactivate(); // hide menu
34 void Toggle();
35 bool IsActive() const { return m_active; }
36
37 // Basic operations that a system menu might expose
38 void AddItem(const std::string& item);
39 void RemoveItem(const std::string& item);
40 const std::vector<std::string>& Items() const { return m_items; }
41
42private:
43 std::string name;
44 bool m_active = false;
45 std::vector<std::string> m_items;
46};
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
std::string name
Definition SystemMenu.h:43
void Toggle()
void Activate()
bool IsActive() const
Definition SystemMenu.h:35
static SystemMenu & Get()
Definition SystemMenu.h:30
std::vector< std::string > m_items
Definition SystemMenu.h:45
bool m_active
Definition SystemMenu.h:44
void AddItem(const std::string &item)
const std::vector< std::string > & Items() const
Definition SystemMenu.h:40
static SystemMenu & GetInstance()
Definition SystemMenu.cpp:6
virtual ~SystemMenu()
Definition SystemMenu.h:24
void Deactivate()
void RemoveItem(const std::string &item)
#define SYSTEM_LOG