diff options
Diffstat (limited to 'chord.h')
-rw-r--r-- | chord.h | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +#ifndef __CHORD_H__ +#define __CHORD_H__ + +#include <regex> + +// Chords are used to represent a set of notes that are played together. +// For this guitar hero implementation, a single note is technically a chord. +// This analogy is used to make sure that simultaneous notes are always grouped +// under a single chord since they have information in common (start/end time). + +#define BUTTON1 0 // green +#define BUTTON2 1 // red +#define BUTTON3 2 // yellow +#define BUTTON4 3 // blue +#define BUTTON5 4 // orange + + +class Chord { + private: + bool notes[5]; // which buttons are pressed + int start; // when to play in ms (relative to song start) + int end; // when to stop playing in ms (relative to song start) + int renderStart; // when to render (no need to define on construction) + public: + // Chords are initialized with a single button. + // Other notes are added as notes with the same "start" are encountered + // in .chart files. + // End time is initialized to 0 but can be changed if the .chart indicates + // that the chord is held for longer than the default 1/16th note. + Chord(int btn, int startTime, int endTime); + ~Chord(); + void change(int button); // change note in existing chord + void setEnd(int endTime); // set the end time of the chord + void setRenderStart(int renderTime); // sets when to start rendering + bool* getNotes(); // get the notes in the chord + int getStart(); // get the start time of the chord + int getEnd(); // get the end time of the chord + int getRenderStart(); // get the render time of the chord + std::regex getRegex(); // regex for this chord + // compares the player's input to + // the expected chord +}; + +#include "chord.cpp" +#endif // __CHORD_H__ |