96 lines
3.4 KiB
C
96 lines
3.4 KiB
C
bool unifyNotes(UnifiedNote *unified, ParsedNote *parsed, Chart *chart) {
|
|
unified->measure_whole = parsed->measure_whole;
|
|
unified->measure_fraction = parsed->mesaure_fraction;
|
|
unified->duration = parsed->duration;
|
|
unified->location = parsed->location;
|
|
unified->slide_id = parsed->slide_id;
|
|
unified->slide_amount = parsed->slide_amount;
|
|
|
|
switch (chart->type) {
|
|
case ChartTypeSR:
|
|
if ((char)parsed->type < '\0') {
|
|
unified->note_type = NoteTypeStartSlide;
|
|
unified->is_start_slide = true;
|
|
} else if (parsed->slide_id == 0) {
|
|
switch (parsed->type & 0xf) {
|
|
case 0:
|
|
case 1:
|
|
unified->note_type = NoteTypeTap;
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
unified->note_type = NoteTypeHold;
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
unified->note_type = NoteTypeBreak;
|
|
}
|
|
} else {
|
|
unified->note_type = NoteTypeStar;
|
|
unified->slide_amount = 1;
|
|
}
|
|
|
|
if (parsed->type & 0x40) {
|
|
unified->field12_0x24 = 2.0;
|
|
} else if (parsed->type & 0x20) {
|
|
unified->field12_0x24 = 4.0;
|
|
} else if (parsed->type & 0x10) {
|
|
unified->field12_0x24 = 6.0;
|
|
}
|
|
|
|
if (parsed->slide_id == 0) {
|
|
unified->slide_pattern = 0;
|
|
return true;
|
|
}
|
|
|
|
unified->slide_amount = 0;
|
|
unified->slide_delay = parsed->slide_delay;
|
|
switch (parsed->slide_pattern) {
|
|
case 0:
|
|
unified->slide_pattern = 1;
|
|
return true;
|
|
case 1:
|
|
unified->slide_pattern = 3;
|
|
return true;
|
|
case 2:
|
|
unified->slide_pattern = 2;
|
|
return true;
|
|
default:
|
|
unified->slide_amount = 0;
|
|
return true;
|
|
}
|
|
|
|
case ChartTypeSZ:
|
|
if (((char)parsed->type < '\0') || (parsed->type == NoteTypeStartSlide)) {
|
|
unified->note_type = NoteTypeStartSlide;
|
|
unified->is_start_slide = true;
|
|
} else {
|
|
unified->note_type = parsed->type;
|
|
}
|
|
unified->slide_pattern = parsed->slide_pattern;
|
|
if (unified->note_type == NoteTypeStar) {
|
|
unified->slide_amount = 1;
|
|
unified->slide_delay = parsed->slide_delay;
|
|
return true;
|
|
}
|
|
unified->slide_delay = parsed->slide_delay;
|
|
return true;
|
|
|
|
case ChartTypeSC:
|
|
case ChartTypeSD:
|
|
if ((-1 < (char)parsed->type) && (parsed->type != NoteTypeStartSlide)) {
|
|
unified->note_type = parsed->type;
|
|
unified->slide_pattern = parsed->slide_pattern;
|
|
unified->slide_delay = parsed->slide_delay;
|
|
return true;
|
|
}
|
|
unified->note_type = NoteTypeStartSlide;
|
|
unified->is_start_slide = true;
|
|
unified->slide_pattern = parsed->slide_pattern;
|
|
unified->slide_delay = parsed->slide_delay;
|
|
return true;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
} |