GUI: implement paste mix
This commit is contained in:
parent
cf07e1861e
commit
fe9b379ca9
|
@ -2985,10 +2985,16 @@ void FurnaceGUI::doPaste(PasteMode mode) {
|
||||||
note[2]=line[charPos++];
|
note[2]=line[charPos++];
|
||||||
note[3]=0;
|
note[3]=0;
|
||||||
|
|
||||||
|
if ((mode==GUI_PASTE_MODE_MIX_BG || mode==GUI_PASTE_MODE_MIX_FG) && strcmp(note,"...")==0) {
|
||||||
|
// do nothing.
|
||||||
|
} 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])) {
|
if (!decodeNote(note,pat->data[j][0],pat->data[j][1])) {
|
||||||
invalidData=true;
|
invalidData=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (charPos>=line.size()) {
|
if (charPos>=line.size()) {
|
||||||
invalidData=true;
|
invalidData=true;
|
||||||
|
@ -3003,16 +3009,20 @@ void FurnaceGUI::doPaste(PasteMode mode) {
|
||||||
note[2]=0;
|
note[2]=0;
|
||||||
|
|
||||||
if (strcmp(note,"..")==0) {
|
if (strcmp(note,"..")==0) {
|
||||||
|
if (!(mode==GUI_PASTE_MODE_MIX_BG || mode==GUI_PASTE_MODE_MIX_FG)) {
|
||||||
pat->data[j][iFine+1]=-1;
|
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 (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;
|
if (iFine<(3+e->song.pat[iCoarse].effectRows*2)) pat->data[j][iFine+1]=val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
iFine++;
|
iFine++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue