From e429118bc99dbeeb29e22dcfd702a1e101175e51 Mon Sep 17 00:00:00 2001 From: Crizomb Date: Thu, 12 Jun 2025 15:29:22 +0200 Subject: [PATCH] NoteTile create --- SimpleGame/src/Include/NotePlaceEnum.hpp | 1 + SimpleGame/src/Include/NoteTile.hpp | 28 ++++++++++++++++++++++++ SimpleGame/src/Source/NoteTile.cpp | 25 +++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 SimpleGame/src/Include/NotePlaceEnum.hpp create mode 100644 SimpleGame/src/Include/NoteTile.hpp create mode 100644 SimpleGame/src/Source/NoteTile.cpp diff --git a/SimpleGame/src/Include/NotePlaceEnum.hpp b/SimpleGame/src/Include/NotePlaceEnum.hpp new file mode 100644 index 0000000..1facd4b --- /dev/null +++ b/SimpleGame/src/Include/NotePlaceEnum.hpp @@ -0,0 +1 @@ +enum NotePlaceEnum { Left, Middle, Right }; diff --git a/SimpleGame/src/Include/NoteTile.hpp b/SimpleGame/src/Include/NoteTile.hpp new file mode 100644 index 0000000..84bfe41 --- /dev/null +++ b/SimpleGame/src/Include/NoteTile.hpp @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include + +class NoteTile { +private: + static std::vector> existing_tiles; + // logic things + float play_time; + float good_interval; + NotePlaceEnum place; + // used for Graphics + sf::Vector2f position; + // probably some tileSprite class here in the future <- + + // Constructor private, use create to create + NoteTile(float play_time, float good_interval, NotePlaceEnum place); + +public: + // Good key press for this note, is if player press good place, within + // [play_time - good_interval/2, play_time + good_interval/2] + static void create(float play_time, float good_interval, NotePlaceEnum place); + // Should be called when one of arrows key pressed, return True if it's a good + // press + bool CheckPress(float press_time, NotePlaceEnum key_pressed); +}; diff --git a/SimpleGame/src/Source/NoteTile.cpp b/SimpleGame/src/Source/NoteTile.cpp new file mode 100644 index 0000000..ae19611 --- /dev/null +++ b/SimpleGame/src/Source/NoteTile.cpp @@ -0,0 +1,25 @@ +#include "NoteTile.hpp" + +std::vector> NoteTile::existing_tiles; + +// private +NoteTile::NoteTile(float play_time, float good_interval, NotePlaceEnum place) + : play_time(play_time), good_interval(good_interval), place(place) { + NoteTile::existing_tiles.push_back(std::unique_ptr(this)); +} + +// public +void NoteTile::create(float play_time, float good_interval, + NotePlaceEnum place) { + NoteTile(play_time, good_interval, place); +} + +bool NoteTile::CheckPress(float press_time, NotePlaceEnum) { + for (const auto ¬e_tile : NoteTile::existing_tiles) { + if (note_tile->play_time - note_tile->good_interval / 2 < press_time && + note_tile->play_time + note_tile->good_interval / 2 > press_time) { + return true; + } + } + return false; +}