-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMenu.cpp
More file actions
83 lines (73 loc) · 2.81 KB
/
Menu.cpp
File metadata and controls
83 lines (73 loc) · 2.81 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
//
// Created by vb-jakub on 03.06.24.
//
#include "Menu.h"
#include <iostream>
//Font is taken from the website with free assets - https://fontstruct.com/fontstructions/show/1501665/mine-sweeper
Menu::Menu(sf::RenderWindow &windowRef): win(windowRef) {
offsetX=50;
offsetY=75;
buttonsOffset=100;
letterSize=40;
debugModeCounter=0;
gameModeIsChosen=false;
gamemode=DEBUG;
if(!font.loadFromFile("assets/mine-sweeper.ttf"))
std::cout << "ERROR: Font didn't open" << std::endl;
button.resize(3);
setButton(0,"EASY",sf::Color::Green);
setButton(1,"NORMAL",sf::Color(255,128,0));
setButton(2,"HARD",sf::Color::Red);
snakePicture.setPosition(offsetX+375,offsetY+75);
snakePicture.setSize(sf::Vector2f(300, 300));
if(!snakeTexture.loadFromFile("assets/snake_picture.png"))
std::cout << "ERROR: SnakeMenu picture didn't open" << std::endl;
snakePicture.setTexture(&snakeTexture);
}
void Menu::setButton(int buttonNr,const std::string &caption, sf::Color color) {
button[buttonNr].setFont(font);
button[buttonNr].setPosition(offsetX, offsetY+static_cast<float>(buttonNr+1)*buttonsOffset);
button[buttonNr].setCharacterSize(letterSize);
button[buttonNr].setString(caption);
button[buttonNr].setFillColor(color);
}
void Menu::drawMenu() const {
sf::Text text;
text.setFont(font);
text.setPosition(offsetX, offsetY);
text.setCharacterSize(letterSize-8);
text.setFillColor(sf::Color::White);
text.setString("CHOOSE YOUR GAME MODE:");
win.draw(text);
for(int Nr=0; Nr<3; ++Nr) win.draw(button[Nr]);
win.draw(snakePicture);
}
void Menu::boldLetters(sf::Vector2i mousePosition) {
for(int buttonNr=0; buttonNr<3; ++buttonNr) {
if(button[buttonNr].getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePosition)))
button[buttonNr].setCharacterSize(letterSize+15);
else button[buttonNr].setCharacterSize(letterSize);
}
}
void Menu::setGameMode(int buttonNr, sf::Vector2i mousePosition, GameMode gameMode) {
if(button[buttonNr].getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePosition))) {
gameModeIsChosen=true;
gamemode=gameMode;
}
}
void Menu::controllMenu(const sf::Event &event) {
sf::Vector2i mousePosition=sf::Mouse::getPosition(win);
boldLetters(mousePosition);
if(event.type==sf::Event::MouseButtonPressed and event.mouseButton.button==sf::Mouse::Left) {
setGameMode(0,mousePosition,EASY);
setGameMode(1,mousePosition,NORMAL);
setGameMode(2,mousePosition,HARD);
if(snakePicture.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePosition))) {
++debugModeCounter;
if(debugModeCounter==3) {
gameModeIsChosen=true;
gamemode=DEBUG;
}
}
}
}