-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
64 lines (55 loc) · 1.63 KB
/
main.cpp
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
#include "HeroPuppeteer.h"
#include <SFML/Graphics.hpp>
constexpr unsigned WINDOW_WIDHT = 800;
constexpr unsigned WINDOW_HEIGHT = 600;
// Функция создаёт окно определённого размера с определённым заголовком.
void createWindow(sf::RenderWindow& window)
{
sf::VideoMode videoMode(WINDOW_WIDHT, WINDOW_HEIGHT);
const std::string title = "Controlling Hero: Animated Sprite + Puppeteer";
sf::ContextSettings settings;
settings.antialiasingLevel = 4;
window.create(videoMode, title, sf::Style::Default, settings);
}
void pollEvents(sf::RenderWindow& window)
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
window.close();
}
}
}
void update(sf::Clock& clock, HeroPuppeteer& puppeteer)
{
float dt = clock.restart().asSeconds();
puppeteer.update(dt);
}
void drawFrame(sf::RenderWindow& window, AnimatedSprite& heroSprite)
{
// Рисуем анимированный спрайт как обычный спрайт: вызовом window.draw.
window.clear(sf::Color(0x20, 0x20, 0x20));
window.draw(heroSprite);
window.display();
}
int main()
{
sf::RenderWindow window;
createWindow(window);
sf::Clock clock;
AnimatedSprite heroSprite;
if (!heroSprite.loadFromFiles("man_hero.png", "man_hero.atlas"))
{
return 1;
}
heroSprite.setPosition({0.1f * float(WINDOW_WIDHT), 0.9f * float(WINDOW_HEIGHT)});
HeroPuppeteer heroPuppeteer(heroSprite);
while (window.isOpen())
{
pollEvents(window);
update(clock, heroPuppeteer);
drawFrame(window, heroSprite);
}
}