Compare commits
2 Commits
e1c6f4d2f9
...
57e105ca91
| Author | SHA1 | Date | |
|---|---|---|---|
| 57e105ca91 | |||
| e7cbf8bed1 |
@ -10,6 +10,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -76,7 +77,7 @@ const Color INSTRUMENT_COLORS[MAX_INSTRUMENT_TYPES] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] {
|
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] {
|
||||||
{ // Instrument 0
|
{ // Instrument 0 - Bass
|
||||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
||||||
@ -90,19 +91,19 @@ const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_
|
|||||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||||
},
|
},
|
||||||
{ // Instrument 1
|
{ // Instrument 1 - Synth
|
||||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
"assets/sounds/snes_synth/snes_synth_048.wav", "assets/sounds/snes_synth/snes_synth_049.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
"assets/sounds/snes_synth/snes_synth_050.wav", "assets/sounds/snes_synth/snes_synth_051.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
"assets/sounds/snes_synth/snes_synth_052.wav", "assets/sounds/snes_synth/snes_synth_053.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
"assets/sounds/snes_synth/snes_synth_054.wav", "assets/sounds/snes_synth/snes_synth_055.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
"assets/sounds/snes_synth/snes_synth_056.wav", "assets/sounds/snes_synth/snes_synth_057.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
"assets/sounds/snes_synth/snes_synth_058.wav", "assets/sounds/snes_synth/snes_synth_059.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
"assets/sounds/snes_synth/snes_synth_060.wav", "assets/sounds/snes_synth/snes_synth_061.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
"assets/sounds/snes_synth/snes_synth_062.wav", "assets/sounds/snes_synth/snes_synth_063.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
"assets/sounds/snes_synth/snes_synth_064.wav", "assets/sounds/snes_synth/snes_synth_065.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
"assets/sounds/snes_synth/snes_synth_066.wav", "assets/sounds/snes_synth/snes_synth_067.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
"assets/sounds/snes_synth/snes_synth_068.wav", "assets/sounds/snes_synth/snes_synth_069.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
"assets/sounds/snes_synth/snes_synth_070.wav", "assets/sounds/snes_synth/snes_synth_071.wav"
|
||||||
},
|
},
|
||||||
{ // Instrument 2
|
{ // Instrument 2
|
||||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||||
@ -119,18 +120,18 @@ const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_
|
|||||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||||
},
|
},
|
||||||
{ // Instrument 3
|
{ // Instrument 3
|
||||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
"assets/sounds/snes_synth/snes_synth_048.wav", "assets/sounds/snes_synth/snes_synth_049.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
"assets/sounds/snes_synth/snes_synth_050.wav", "assets/sounds/snes_synth/snes_synth_051.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
"assets/sounds/snes_synth/snes_synth_052.wav", "assets/sounds/snes_synth/snes_synth_053.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
"assets/sounds/snes_synth/snes_synth_054.wav", "assets/sounds/snes_synth/snes_synth_055.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
"assets/sounds/snes_synth/snes_synth_056.wav", "assets/sounds/snes_synth/snes_synth_057.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
"assets/sounds/snes_synth/snes_synth_058.wav", "assets/sounds/snes_synth/snes_synth_059.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
"assets/sounds/snes_synth/snes_synth_060.wav", "assets/sounds/snes_synth/snes_synth_061.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
"assets/sounds/snes_synth/snes_synth_062.wav", "assets/sounds/snes_synth/snes_synth_063.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
"assets/sounds/snes_synth/snes_synth_064.wav", "assets/sounds/snes_synth/snes_synth_065.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
"assets/sounds/snes_synth/snes_synth_066.wav", "assets/sounds/snes_synth/snes_synth_067.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
"assets/sounds/snes_synth/snes_synth_068.wav", "assets/sounds/snes_synth/snes_synth_069.wav",
|
||||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
"assets/sounds/snes_synth/snes_synth_070.wav", "assets/sounds/snes_synth/snes_synth_071.wav"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -235,6 +236,7 @@ public:
|
|||||||
float screen_height = 0.0f;
|
float screen_height = 0.0f;
|
||||||
Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{0}};
|
Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{0}};
|
||||||
bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{false}};
|
bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{false}};
|
||||||
|
std::deque<Sound> note_sounds_playing[LANE_COUNT][MAX_INSTRUMENT_TYPES];
|
||||||
static constexpr float PRESS_FLASH_DURATION = 0.12f;
|
static constexpr float PRESS_FLASH_DURATION = 0.12f;
|
||||||
static constexpr float MISS_FLASH_DURATION = 0.15f;
|
static constexpr float MISS_FLASH_DURATION = 0.15f;
|
||||||
float press_flash_timer[LANE_COUNT] = {0};
|
float press_flash_timer[LANE_COUNT] = {0};
|
||||||
@ -352,6 +354,25 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stop_playing_released_notes(int lane)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_GAMEPADS; i++)
|
||||||
|
{
|
||||||
|
if (IsGamepadAvailable(i) && IsGamepadButtonDown(i, GAMEPAD_BUTTONS[lane]))
|
||||||
|
{
|
||||||
|
printf("Button held: [%d][%d]\n", lane, i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!note_sounds_playing[lane][i].empty())
|
||||||
|
{
|
||||||
|
printf("Stopping sound: [%d][%d]\n", lane, i);
|
||||||
|
StopSound(note_sounds_playing[lane][i].front());
|
||||||
|
note_sounds_playing[lane][i].pop_front();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool lane_pressed_by_instrument_owner(int lane, int instrument_slot) const
|
bool lane_pressed_by_instrument_owner(int lane, int instrument_slot) const
|
||||||
{
|
{
|
||||||
int physical_id = INSTRUMENT_PHYSICAL_GAMEPAD[instrument_slot];
|
int physical_id = INSTRUMENT_PHYSICAL_GAMEPAD[instrument_slot];
|
||||||
@ -416,8 +437,11 @@ public:
|
|||||||
spawned.erase(it);
|
spawned.erase(it);
|
||||||
completed_notes.insert(n);
|
completed_notes.insert(n);
|
||||||
printf("note lane: %d, note octave: %d\n", n->lane, n->octave);
|
printf("note lane: %d, note octave: %d\n", n->lane, n->octave);
|
||||||
if (note_sounds_loaded[n->instrument_slot][n->octave])
|
if (note_sounds_loaded[n->instrument_slot][n->octave]) {
|
||||||
PlaySound(note_sounds[n->instrument_slot][n->octave]);
|
Sound sound = note_sounds[n->instrument_slot][n->octave];
|
||||||
|
PlaySound(sound);
|
||||||
|
note_sounds_playing[n->lane][n->instrument_slot].push_back(sound);
|
||||||
|
}
|
||||||
float y_n = glyph_y(*n);
|
float y_n = glyph_y(*n);
|
||||||
for (auto it2 = spawned.begin(); it2 != spawned.end();)
|
for (auto it2 = spawned.begin(); it2 != spawned.end();)
|
||||||
{
|
{
|
||||||
@ -559,6 +583,7 @@ public:
|
|||||||
{
|
{
|
||||||
for (int lane = 0; lane < LANE_COUNT; lane++)
|
for (int lane = 0; lane < LANE_COUNT; lane++)
|
||||||
{
|
{
|
||||||
|
stop_playing_released_notes(lane);
|
||||||
bool pressed = is_lane_pressed(lane);
|
bool pressed = is_lane_pressed(lane);
|
||||||
if (pressed)
|
if (pressed)
|
||||||
press_flash_timer[lane] = PRESS_FLASH_DURATION;
|
press_flash_timer[lane] = PRESS_FLASH_DURATION;
|
||||||
@ -590,7 +615,7 @@ public:
|
|||||||
best = n;
|
best = n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (best != nullptr)
|
if (best != nullptr && pressed)
|
||||||
{
|
{
|
||||||
consume_note(best);
|
consume_note(best);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user