OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
menuroot.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Widget>
4
5#include <zenkit/DaedalusVm.hh>
6#include <zenkit/addon/daedalus.hh>
7
8#include "utils/keycodec.h"
9
10class GameMenu;
11class Npc;
12
13class MenuRoot : public Tempest::Widget {
14 public:
15 MenuRoot(KeyCodec& keyCodec);
16 ~MenuRoot() override;
17
18 void setMainMenu();
19 void setMenu(std::string_view menu, KeyCodec::Action key = KeyCodec::Escape);
20 void setMenu(GameMenu* w);
21 void pushMenu(GameMenu* w);
22 void popMenu();
23 void closeAll();
24 bool isActive() const;
25 void setPlayer(const Npc& pl);
26 void processMusicTheme();
27
28 void showVersion(bool s);
29 bool hasVersionLine() const;
30
31 void mouseWheelEvent(Tempest::MouseEvent& event) override;
32 void keyRepeatEvent (Tempest::KeyEvent& event) override;
33 void keyDownEvent (Tempest::KeyEvent& event) override;
34
35 protected:
36 void mouseDownEvent (Tempest::MouseEvent& event) override;
37 void mouseUpEvent (Tempest::MouseEvent& event) override;
38
39 private:
40 void initSettings();
41
42 std::unique_ptr<zenkit::DaedalusVm> vm;
43 int32_t vmLang = -1;
44
45 GameMenu* current=nullptr;
46 std::vector<std::unique_ptr<GameMenu>> menuStack;
47 KeyCodec& keyCodec;
48
49 Tempest::Event::KeyType cheatCode[6] = {};
50 bool showVersionHint = false;
51 };
void popMenu()
Definition menuroot.cpp:79
void mouseDownEvent(Tempest::MouseEvent &event) override
Definition menuroot.cpp:129
void setPlayer(const Npc &pl)
Definition menuroot.cpp:110
void processMusicTheme()
Definition menuroot.cpp:115
bool isActive() const
Definition menuroot.cpp:106
void setMainMenu()
Definition menuroot.cpp:47
void pushMenu(GameMenu *w)
Definition menuroot.cpp:67
void mouseUpEvent(Tempest::MouseEvent &event) override
Definition menuroot.cpp:141
void showVersion(bool s)
Definition menuroot.cpp:120
~MenuRoot() override
Definition menuroot.cpp:18
void closeAll()
Definition menuroot.cpp:98
void keyDownEvent(Tempest::KeyEvent &event) override
Definition menuroot.cpp:171
void mouseWheelEvent(Tempest::MouseEvent &event) override
Definition menuroot.cpp:144
void keyRepeatEvent(Tempest::KeyEvent &event) override
Definition menuroot.cpp:155
void setMenu(std::string_view menu, KeyCodec::Action key=KeyCodec::Escape)
Definition menuroot.cpp:52
bool hasVersionLine() const
Definition menuroot.cpp:125
Definition npc.h:25