GUI: implement paste mix

This commit is contained in:
tildearrow 2022-03-11 23:47:16 -05:00
parent cf07e1861e
commit fe9b379ca9
1 changed files with 15 additions and 5 deletions

View File

@ -2985,9 +2985,15 @@ void FurnaceGUI::doPaste(PasteMode mode) {
note[2]=line[charPos++]; note[2]=line[charPos++];
note[3]=0; note[3]=0;
if (!decodeNote(note,pat->data[j][0],pat->data[j][1])) { if ((mode==GUI_PASTE_MODE_MIX_BG || mode==GUI_PASTE_MODE_MIX_FG) && strcmp(note,"...")==0) {
invalidData=true; // do nothing.
break; } else {
if (mode!=GUI_PASTE_MODE_MIX_BG || (pat->data[j][0]==0 && pat->data[j][1]==0)) {
if (!decodeNote(note,pat->data[j][0],pat->data[j][1])) {
invalidData=true;
break;
}
}
} }
} else { } else {
if (charPos>=line.size()) { if (charPos>=line.size()) {
@ -3003,14 +3009,18 @@ void FurnaceGUI::doPaste(PasteMode mode) {
note[2]=0; note[2]=0;
if (strcmp(note,"..")==0) { if (strcmp(note,"..")==0) {
pat->data[j][iFine+1]=-1; if (!(mode==GUI_PASTE_MODE_MIX_BG || mode==GUI_PASTE_MODE_MIX_FG)) {
pat->data[j][iFine+1]=-1;
}
} else { } else {
unsigned int val=0; unsigned int val=0;
if (sscanf(note,"%2X",&val)!=1) { if (sscanf(note,"%2X",&val)!=1) {
invalidData=true; invalidData=true;
break; break;
} }
if (iFine<(3+e->song.pat[iCoarse].effectRows*2)) pat->data[j][iFine+1]=val; if (mode!=GUI_PASTE_MODE_MIX_BG || pat->data[j][iFine+1]==-1) {
if (iFine<(3+e->song.pat[iCoarse].effectRows*2)) pat->data[j][iFine+1]=val;
}
} }
} }
iFine++; iFine++;