This commit is contained in:
NaiJi ✨ 2021-04-03 20:14:31 +03:00
commit 5b1a00adeb
5 changed files with 196 additions and 0 deletions

73
.gitignore vendored Normal file
View File

@ -0,0 +1,73 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe

19
CMakeLists.txt Normal file
View File

@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
project(project-kyoku LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(SOURCES application.cpp main.cpp)
set(HEADER_FILES application.h)
# STATIC #
# You need to build SFML from sources with cmake
set(SFML_LIB_DIR
${CMAKE_SOURCE_DIR}/SFML-2.5.1/lib/libsfml-graphics.so.2.5
${CMAKE_SOURCE_DIR}/SFML-2.5.1/lib/libsfml-system.so.2.5
${CMAKE_SOURCE_DIR}/SFML-2.5.1/lib/libsfml-window.so.2.5)
set(SFML_INCL_DIR ${CMAKE_SOURCE_DIR}/SFML-2.5.1/include)
include_directories(${SFML_INCL_DIR})
add_executable(project-kyoku ${SOURCES} ${HEADER_FILES} )
target_link_libraries(project-kyoku ${SFML_LIB_DIR})

66
application.cpp Normal file
View File

@ -0,0 +1,66 @@
#include "application.h"
#include <SFML/Graphics/Color.hpp>
#include <SFML/Window/Event.hpp>
Application::Application() :
game_window({1280, 720}, "Test")
{
float x = game_window.getSize().x;
float y = game_window.getSize().y;
pulse_mask.setSize({x, y});
pulse_mask.setOrigin(0.f, 0.f);
pulse_mask.setFillColor(sf::Color(255, 0, 0, 0));
}
void Application::run()
{
game_window.display();
timeline.push(5500000);
timeline.push(5000000);
timeline.push(4500000);
timeline.push(4000000);
timeline.push(3500000);
timeline.push(3000000);
timeline.push(2500000);
timeline.push(2000000);
timeline.push(1500000);
timeline.push(1000000);
//music.openFromFile("/home/egor/test.flac");
//usic.play();
music.restart();
while (game_window.isOpen())
{
sf::Event event;
while (game_window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
game_window.close();
}
update();
draw();
}
}
void Application::update()
{
if (!timeline.empty() && timeline.top() <= music.getElapsedTime().asMicroseconds())
{
timeline.pop();
pulse_mask.setFillColor(sf::Color(255, 0, 0, 255));
}
if (pulse_mask.getFillColor().a > 0)
{
const auto alpha = pulse_mask.getFillColor().a - 1;
pulse_mask.setFillColor(sf::Color(255, 0, 0, alpha));
}
}
void Application::draw()
{
game_window.clear();
game_window.draw(pulse_mask);
game_window.display();
}

28
application.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef APPLICATION_H
#define APPLICATION_H
#include <SFML/Graphics/RenderWindow.hpp>
//#include <SFML/Audio/Music.hpp>
#include <SFML/System/Clock.hpp>
#include <SFML/Graphics/RectangleShape.hpp>
#include <stack>
class Application
{
public:
Application();
void run();
void update();
void draw();
private:
sf::RenderWindow game_window;
sf::Clock music;
//sf::Music music;
sf::RectangleShape pulse_mask;
std::stack<sf::Int64> timeline;
};
#endif // APPLICATION_H

10
main.cpp Normal file
View File

@ -0,0 +1,10 @@
#include <iostream>
#include "application.h"
using namespace std;
int main()
{
Application app;
app.run();
}