Esempio n. 1
0
static void state_update(){

    old_audio_time = audio_time;
    audio_time = audio_progress;
    audio_dt += audio_time - old_audio_time;
    while(audio_dt >= 441*2){
        audio_dt -= 441*2;
        ms_since_last_beat += 5;

        for(int i=0;i<n_notes;i++){
            notes[i].y--;
            if(notes[i].done || notes[i].y < -30){
                score_greatest_combo = MAX(score_greatest_combo, score_combo);
                score_combo = 0;
                remove_note(i);
                i--;
            }
        }
    }

    redraw_required = 1;

    if(key[KEY_ESC]){
        State_change(MainMenuState);
    }

    if(key[KEY_A]){
        hit_notes(0);
    }

    if(key[KEY_S]){
        hit_notes(1);
    }

    if(key[KEY_D]){
        hit_notes(2);
    }

    if(key[KEY_F]){
        hit_notes(3);
    }

    if(feedback_counter > 0){
        feedback_counter--;
    }


    int ms_per_beat = ms_per_measure / beats_per_measure;
    while(ms_since_last_beat > ms_per_beat){
        ms_since_last_beat -= ms_per_beat;
        beat++;
        if(beat > beats_per_measure){
            beat -= beats_per_measure;
            measure++;
            if(song->measures[measure] == NULL){
                State_change(ScoreScreenState);
                return;
            }
            beats_per_measure = song->measures[measure]->n_rows;
            if(measure == song->BPMs[current_bpm_index + 1]){
                current_bpm_index += 2;
                current_bpm = song->BPMs[current_bpm_index];
                ms_per_measure = 4*60000000 / current_bpm;
            }
        }
        for(int i=0;i<4;i++){
            if(song->measures[measure]->rows[beat][i] == '1'){
                add_note(i, 244);
                total_notes++;
            }
        }
    }

}
Esempio n. 2
0
static void state_update(){
    if(key[KEY_ESC]){
        State_change(MainMenuState);
    }
}