Repository navigation
Expand file tree
/
Copy pathMenu.h
More file actions
174 lines (153 loc) · 9.37 KB
/
Copy pathMenu.h
File metadata and controls
174 lines (153 loc) · 9.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#pragma once
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include "Header.h"
#include "Camera.h"
#include <windows.h>
#include <winuser.h>
namespace Menu
{
constexpr auto numOfMenuButtons = 20; // Êîëè÷åñòâî êíîïîê îñíîâíûõ ìåíþ
constexpr auto keyDelay = 1; // Çàäåðæêà íàæàòèÿ êëàâèø â ìåíþ
constexpr auto numOfMonstres = 4; // Êîëè÷åñòâî ìîíñòðîâ â áåñòèàðèè
constexpr auto numOfButton = 3; // Êîëè÷åñòâî òåêñòà áåñòèàðèÿ
constexpr auto numOfDisplay = 7; // Êîëè÷åñòâî ïàðàìåòðîâ ðàçðåøåíèÿ ýêðàíà
constexpr auto numOfAuthors = 8; // Êîëè÷åñòâî òåêñòà ìåíþ "Àâòîðû"
constexpr auto numOfAuthorsTexture = 19; // Êîëè÷åñòâî òåêñòóð ìåíþ "Àâòîðû"
class Menu
{
double cameraOffsetX, cameraOffsetY; // Ñìåùåíèå êàìåðû
double kX, kY; // Ñæèìàþùèé êîýôôèöèåíò
double resizeMistakeX, resizeMistakeY; // Êîýôôèöèåíò, óâåëè÷èâàþùèé òåêñòóðû pauseMenu äëÿ ïîëíîýêðàííîãî ðåæèìà
sf::Font font; // Îñíîâíîé øðèôò
std::vector<std::pair<sf::Text, sf::String>> textVector; // Âåêòîð <Òåêñò ïóíêòà ìåíþ (Text), Ê êàêîìó ìåíþ îòíîñèòñÿ>
std::pair<sf::String, sf::String> nameArray[numOfMenuButtons] = // Ìàññèâ <Òåêñò ïóíêòà ìåíþ (sf::String), Ê êàêîìó ìåíþ îòíîñèòñÿ>
{
std::pair < sf::String, sf::String>(L"Íîâàÿ èãðà", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Áåñòèàðèé", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Âûõîä èç èãðû" , L"mainMenu"),
std::pair < sf::String, sf::String>(L"Ïðîäîëæèòü", L"pauseMenu"),
std::pair < sf::String, sf::String>(L"Íàñòðîéêè", L"pauseMenu"),
std::pair < sf::String, sf::String>(L"Ãëàâíîå ìåíþ", L"pauseMenu"),
std::pair < sf::String, sf::String>(L"Ðåæèì:", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Îêîííûé", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Ïîëíîýêðàííûé", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Çâóê: Âêë", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Çâóê: Âûêë", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Ãðîìêîñòü", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Íàçàä", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Ðàçðåøåíèå ýêðàíà:", L"settingsMenu"),
std::pair < sf::String, sf::String>(L"Ïðîäîëæèòü", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Íàñòðîéêè", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Àâòîðû", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Çàãðóçêà", L"mainMenu"),
std::pair < sf::String, sf::String>(L"Ñîõðàíåíèå", L"pauseMenu"),
std::pair < sf::String, sf::String>(L"Çàãðóçêà", L"pauseMenu")
};
std::vector<sf::Texture> textureVec; // Âåêòîð òåêñòóð áýêãðàóíäà Ãëàâíîãî Ìåíþ
std::vector<sf::Sprite> spriteVec; // Âåêòîð ñïðàéòîâ áýêãðàóíäà Ãëàâíîãî Ìåíþ
sf::Music mainMenuMusic; // Ìóçûêà Ãëàâíîãî Ìåíþ
std::vector<sf::Texture> texPauseVec; // Âåêòîð òåêñòóð áýêãðàóíäà Ìåíþ Ïàóçû
std::vector<sf::Sprite> sprPauseVec; // Âåêòîð ñïðàéòîâ áýêãðàóíäà Ìåíþ Ïàóçû
bool isNewDisplay; // Ôëàã íàëè÷èÿ íîâîãî ïîëüçîâàòåëüñêîãî ðàçðåøåíèÿ ýêðàíà
int whatDisplay; // Èíäèêàòîð òåêóùåãî ðàçðåøåíèÿ ýêðàíà
std::vector<std::pair< sf::Text, std::pair<int, int>>>displayVector; // Âåêòîð ïàðàìåòðîâ ðàçðåøåíèÿ ýêðàíà
std::pair< sf::String, std::pair<int, int>> displayArray[numOfDisplay] // Ìàññèâ ïàðàìåòðîâ ðàçðåøåíèÿ ýêðàíà
{
std::pair < sf::String, std::pair<int, int>>("1920x1080",std::pair<int,int>(1920, 1080)),
std::pair < sf::String, std::pair<int, int>>("1366x768",std::pair<int,int>(1366, 768)),
std::pair < sf::String, std::pair<int, int>>("1280x1024",std::pair<int,int>(1280, 1024)),
std::pair < sf::String, std::pair<int, int>>("1024x768",std::pair<int,int>(1024, 768)),
std::pair < sf::String, std::pair<int, int>>("640x480",std::pair<int,int>(640, 480)),
std::pair < sf::String, std::pair<int, int>>("",std::pair<int,int>(0, 0)),
std::pair < sf::String, std::pair<int, int>>("",std::pair<int,int>(0, 0))
};
sf::Texture arrow; // Òåêñòóðà ñòðåëîê â Íàñòðîéêàõ
sf::Sprite volArrows; // Ñïðàéò ñòðåëîê â Íàñòðîéêàõ
bool isDisp = 1; // Èíäèêàòîð ïîëíîýêðàííîãî ðåæèìà (Äà/Íåò)
bool isVol = 1; // Èíäèêàòîð ðàáîòû çâóêà (Äà/Íåò)
int volValue = 4; // Òåêóùåå çíà÷åíèå ãðîìêîñòè (0 - 0%, 1 - 25%, 2 - 50%, 3 - 75%, 4 - 100%)
sf::Music bestiaryMusic; // Ìóçûêà áåñòèàðèÿ
sf::Font bestiaryFont; // Øðèôò áåñòèàðèÿ
std::pair<sf::String, sf::String> bestiaryArray[numOfMonstres] = // Ìàññèâ òåêñòà áåñòèàðèÿ
{
std::pair < sf::String, sf::String>(L"Ðàá", L"Ñàìûé îáûêíîâåííûé ñëóæèòåëü\nïðåèñïîäíåé. Íè÷åãî íåîáû÷íîãî"),
std::pair < sf::String, sf::String>(L"Áåñ", L"Ñàìûé ìàëåíüêèé ïðèñëóæíèê\nàäà. Ñîâåò: íå ïîäïóñêàéòå åãî\náëèçêî"),
std::pair < sf::String, sf::String>(L"Èôðèò", L"Ïîðîæäåíèå ÷èñòîãî ïëàìåíè.\nÎ÷åíü áîèòñÿ âîäû"),
std::pair < sf::String, sf::String>(L"Äüÿâîë", L"Âëàäûêà ïðåèñïîäíåé\n(Ïîñëå Áèã Áîññà)")
};
std::vector<std::pair<sf::Text, sf::Text>> bestiaryVector; // Âåêòîð òåêñòà áåñòèàðèÿ
sf::String buttonArray[numOfButton] = // Ìàññèâ êíîïîê áåñòèàðèÿ
{
L"Áåñòèàðèé",
L"Âûáîð",
L"Íàçàä"
};
std::vector<sf::Text> buttonVector; // Âåêòîð êíîïîê áåñòèàðèÿ
std::vector<sf::Texture> bestiaryTextureVec; // Âåêòîð òåêñòóð áåñòèàðèÿ
std::vector<sf::Sprite> bestiarySpriteVec; // Âåêòîð ñïðàéòîâ áåñòèàðèÿ
sf::Texture bestiaryBgTexture; // Òåêñòóðà áýêãðàóíäà áåñòèàðèÿ
sf::Sprite bestiaryBg; // Âåêòîð áýêãðàóíäà áåñòðèàðèÿ
int whatMonster; // Èíäèêàòîð îòîáðàæåíèÿ òåêóùåãî ìîíñòðà â áåñòðèàðèè
sf::RectangleShape authorsBg; // Áýêãðàóíä ìåíþ "Àâòîðû"
sf::String authorsTextArray[numOfAuthors] = // Ìàññèâ òåêñòà ìåíþ "Àâòîðû"
{
L"Áëàãîäàðèì âàñ çà ïðîÿâëåííûé èíòåðåñ ê íàøåé èãðå",
L"Àíäðåé Õîõëîâ",
L"GitHub - Andrey1771",
L"Ïàâåë Ñîêîëîâ",
L"GitHub - pavelgrafit",
L"Îñîáàÿ áëàãîäàðíîñòü Äàâèäó Ôåñëèÿíó",
L"çà ïðåäîñòàâëåííóþ ìóçûêó",
L"Äëÿ âûõîäà íàæìèòå Enter"
};
std::vector<sf::Text> authorsTextVec; // Âåêòîð òåêñòà ìåíþ "Àâòîðû"
sf::Music authorsMusic; // Ìóçûêà ìåíá "Àâòîðû"
std::vector<sf::Texture> authorsTextureVec; // Âåêòîð òåêñòóð ìåíþ "Àâòîðû"
std::vector<sf::Sprite> authorsSpriteVec; // Âåêòîð ñïðàéòîâ ìåíþ "Àâòîðû"
sf::SoundBuffer buttonBuffer; // Áóôåð çâóêà íàæàòèÿ êíîïêè
sf::Sound buttonSound; // Çâóê íàæàòèÿ êíîïêè
sf::Window window; // Îêíî
sf::Event event; // Ñîáûòèå
bool isMenu; // Èíäèêàòîð ðàáîòû ìåíþ (äà/íåò)
int key; // Íîìåð òåêóùåé êíîïêè
sf::Clock* clock;
sf::Clock clock2; // ×àñû
float CurrentFrame; // Òàéìåð äëÿ àíèìàöèè áýêãðàóíäà
float menuTimer; // Òàéìåð äëÿ íàæàòèÿ êëàâèø
sf::Image* windowIcon{ nullptr };
Camera* camera{ nullptr };
void closeMainMenu(sf::Music& musicToStop); // Çàêðûòèå ãëàâíîãî ìåíþ
void openBestiary(sf::RenderWindow& window, sf::Music& musicToStop); // Îòêðûòèå áåñòèàðèÿ
void closeGame(sf::RenderWindow& window); // Çàêðûòèå èãðû
void chooseMonster(bool leftArrow); // Ïåðåêëþ÷åíèå ìîíñòðîâ â áåñòèàðèè
void closeBestiary(sf::RenderWindow& window, sf::Music& musicToStop); // Çàêðûòèå áåñòèàðèÿ
void openMainMenu(sf::RenderWindow& window, sf::Music& musicToStop); // Îòêðûòèå ãëàâíîãî ìåíþ
void openSettingsMenu(sf::RenderWindow& window, sf::Music& musicToStop); // Îòêðûòèå ìåíþ íàñòðîåê
void closePauseMenu(); // Çàêðûòèå ìåíþ ïàóçû
void screenModes(sf::RenderWindow& window); // Ïåðåêëþ÷åíèå ìåæäó ïîëíîýêðàííûì è îêîííûì ðåæèìàìè
void screenResolutions(sf::RenderWindow& window, bool leftArrow); // Ïåðåêëþ÷åíèå ðàçðåøåíèÿ ýêðàíà
void onOffMusic(sf::Music& music); // Âêëþ÷åíèå/âûêëþ÷åíèå ìóçûêè è çâóêîâ
void closeSettingsMenu(sf::RenderWindow& window, sf::Music& music); // Çàêðûòèå ìåíþ íàñòðîåê
void frameCreator(sf::RenderWindow& window); // Ñîçäàíèå òåêóùåãî êàäðà è îáðàáîòêè ñîáûòèÿ çàêðûòèÿ îêíà
void chooseVolume(sf::Music& music, bool leftArrow); // Ïåðåêëþ÷åíèå ãðîìêîñòè ìóçûêè è çâóêîâ
void createKeys(int numOfKeys); // Ñîçäàíèå êíîïîê
void usersResolution(sf::RenderWindow& window); // Îáðàáîòêà ïîëüçîâàòåëüñêîãî ðàçðåøåíèÿ ýêðàíà
void playSound(sf::Sound& sound); // Âêëþ÷èòü çâóê ñ òåêóùèì óðîâíåì ãðîìêîñòè
void authors(sf::RenderWindow& window, sf::Music& musicToStop); // Ìåíþ "Àâòîðû"
void drawAuthorsText(sf::RenderWindow& window, int numOfElem, int startFrame, int duration); // Îòðèñîâêà òåêñòà ìåíþ "Àâòîðû"
void closeAuthors(); // Çàêðûòèå ìåíþ "Àâòîðû"
void playMusic(sf::Music& music); // Âêëþ÷èòü ìóçûêó ñ òåêóùèì óðîâíåì ãðîìêîñòè
void drawAuthorsSprites(sf::RenderWindow& window); // Îòðèñîâêà ñïðàéòîâ ìåíþ "Àâòîðû"
void updateSize(); // Îáíîâëåíèå ðàçìåðîâ âñåõ òåêñòóð ïîä òåêóùåå ðàçðåøåíèå îêíà
public:
Menu(sf::RenderWindow& window, sf::Music& music, Camera* camera, sf::Clock& clock); // Êîíñòðóêòîð - ÂÀÆÍÎ: ÇÀÃÐÓÆÀÅÒ ÂÑÅ ÍÅÎÁÕÎÄÈÌÛÅ ÔÀÉËÛ Â ÎÏÅÐÀÒÈÂÊÓ
~Menu(); // Äåñòðóêòîð
void mainMenu(sf::RenderWindow& window, sf::Music& musicToStop); // Ãëàâíîå Ìåíþ
void pauseMenu(sf::RenderWindow& window, sf::Music& music); // Ìåíþ Ïàóçû
void settingsMenu(sf::RenderWindow& window, sf::Music& music); // Ìåíþ íàñòðîéêè
void bestiary(sf::RenderWindow& window, sf::Music& musicToStop); // Áåñòèàðèé
void setCamera(Camera* camera) { this->camera = camera; }; // Õç ÷òî ýòî òàêîå, íî ìá íóæíî)
bool isMenuOn() { return isMenu; }; // Èíäèêàòîð ðàáîòû ìåíþ, íóæåí äëÿ ìåéíà
};
}