-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGameHUD.cpp
More file actions
63 lines (54 loc) · 1.99 KB
/
GameHUD.cpp
File metadata and controls
63 lines (54 loc) · 1.99 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
//
// Created by vb-jakub on 20.06.24.
//
#include "GameHUD.h"
#include <iostream>
//Font is taken from the website with free assets - https://www.fontsquirrel.com/fonts/lato?q%5Bterm%5D=Lato&q%5Bsearch_check%5D=Y
GameHUD::GameHUD(sf::RenderWindow &windowRef, Player &playerRef, Board &boardRef) :
window(windowRef), player(playerRef), board(boardRef){
if(!font.loadFromFile("assets/Lato_Font.ttf"))
std::cerr << "ERROR: Font didn't open." << std::endl;
offsetX=25;
offsetY=25;
}
void GameHUD::drawTimer(float elapseTime) const {
float sizeX=400;
float sizeY=50;
float Xo=(static_cast<float>(window.getSize().x)-sizeX)/2.0f;
float Yo=offsetY;
sf::RectangleShape timerField(sf::Vector2f(sizeX,sizeY));
timerField.setPosition(Xo,Yo);
timerField.setFillColor(sf::Color::Black);
timerField.setOutlineThickness(10);
timerField.setOutlineColor(sf::Color(0,51,102));
window.draw(timerField);
float lenght=(board.getTimeToMove()-elapseTime)/board.getTimeToMove()*sizeX;
if(board.getGameState()==FINISHED) lenght=0;
sf::VertexArray timer(sf::Quads,4);
timer[0].position=sf::Vector2f(Xo,Yo);
timer[0].color=sf::Color::Red;
timer[1].position=sf::Vector2f(Xo+lenght,Yo);
timer[1].color=sf::Color::Green;
timer[2].position=sf::Vector2f(Xo+lenght,Yo+sizeY);
timer[2].color=sf::Color::Green;
timer[3].position=sf::Vector2f(Xo,Yo+sizeY);
timer[3].color=sf::Color::Red;
window.draw(timer);
}
void GameHUD::drawScoreCounter() const {
sf::Text scoreCounter;
scoreCounter.setFont(font);
scoreCounter.setCharacterSize(50);
scoreCounter.setPosition(offsetX,offsetY);
scoreCounter.setString("Score:");
window.draw(scoreCounter);
int score=player.getScore();
if(score<100) scoreCounter.move(40,50);
else scoreCounter.move(25,50);
scoreCounter.setString(std::to_string(score));
window.draw(scoreCounter);
}
void GameHUD::draw(float elapseTime) const {
drawTimer(elapseTime);
drawScoreCounter();
}