blob: 83bbfafe432a65ec774b84cb737d76ff46090bb4 (
plain)
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
|
#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__
|