asset directories, part 8
This commit is contained in:
parent
160753243d
commit
92cf966a36
|
@ -1572,6 +1572,20 @@ void DivEngine::changeSong(size_t songIndex) {
|
||||||
prevRow=0;
|
prevRow=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivEngine::moveAsset(std::vector<DivAssetDir>& dir, int before, int after) {
|
||||||
|
if (before<0 || after<0) return;
|
||||||
|
for (DivAssetDir& i: dir) {
|
||||||
|
for (size_t j=0; j<i.entries.size(); j++) {
|
||||||
|
// erase matching entry
|
||||||
|
if (i.entries[j]==before) {
|
||||||
|
i.entries[j]=after;
|
||||||
|
} else if (i.entries[j]==after) {
|
||||||
|
i.entries[j]=before;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DivEngine::removeAsset(std::vector<DivAssetDir>& dir, int entry) {
|
void DivEngine::removeAsset(std::vector<DivAssetDir>& dir, int entry) {
|
||||||
if (entry<0) return;
|
if (entry<0) return;
|
||||||
for (DivAssetDir& i: dir) {
|
for (DivAssetDir& i: dir) {
|
||||||
|
@ -4006,6 +4020,7 @@ bool DivEngine::moveInsUp(int which) {
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
song.ins[which]=song.ins[which-1];
|
song.ins[which]=song.ins[which-1];
|
||||||
song.ins[which-1]=prev;
|
song.ins[which-1]=prev;
|
||||||
|
moveAsset(song.insDir,which,which-1);
|
||||||
exchangeIns(which,which-1);
|
exchangeIns(which,which-1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
|
@ -4019,6 +4034,7 @@ bool DivEngine::moveWaveUp(int which) {
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
song.wave[which]=song.wave[which-1];
|
song.wave[which]=song.wave[which-1];
|
||||||
song.wave[which-1]=prev;
|
song.wave[which-1]=prev;
|
||||||
|
moveAsset(song.waveDir,which,which-1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
return true;
|
return true;
|
||||||
|
@ -4034,6 +4050,7 @@ bool DivEngine::moveSampleUp(int which) {
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
song.sample[which]=song.sample[which-1];
|
song.sample[which]=song.sample[which-1];
|
||||||
song.sample[which-1]=prev;
|
song.sample[which-1]=prev;
|
||||||
|
moveAsset(song.sampleDir,which,which-1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
renderSamples();
|
renderSamples();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
|
@ -4048,6 +4065,7 @@ bool DivEngine::moveInsDown(int which) {
|
||||||
song.ins[which]=song.ins[which+1];
|
song.ins[which]=song.ins[which+1];
|
||||||
song.ins[which+1]=prev;
|
song.ins[which+1]=prev;
|
||||||
exchangeIns(which,which+1);
|
exchangeIns(which,which+1);
|
||||||
|
moveAsset(song.insDir,which,which+1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
return true;
|
return true;
|
||||||
|
@ -4060,6 +4078,7 @@ bool DivEngine::moveWaveDown(int which) {
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
song.wave[which]=song.wave[which+1];
|
song.wave[which]=song.wave[which+1];
|
||||||
song.wave[which+1]=prev;
|
song.wave[which+1]=prev;
|
||||||
|
moveAsset(song.waveDir,which,which+1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
return true;
|
return true;
|
||||||
|
@ -4075,6 +4094,7 @@ bool DivEngine::moveSampleDown(int which) {
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
song.sample[which]=song.sample[which+1];
|
song.sample[which]=song.sample[which+1];
|
||||||
song.sample[which+1]=prev;
|
song.sample[which+1]=prev;
|
||||||
|
moveAsset(song.sampleDir,which,which+1);
|
||||||
saveLock.unlock();
|
saveLock.unlock();
|
||||||
renderSamples();
|
renderSamples();
|
||||||
BUSY_END;
|
BUSY_END;
|
||||||
|
|
|
@ -517,6 +517,9 @@ class DivEngine {
|
||||||
// change song (UNSAFE)
|
// change song (UNSAFE)
|
||||||
void changeSong(size_t songIndex);
|
void changeSong(size_t songIndex);
|
||||||
|
|
||||||
|
// move an asset
|
||||||
|
void moveAsset(std::vector<DivAssetDir>& dir, int before, int after);
|
||||||
|
|
||||||
// remove an asset
|
// remove an asset
|
||||||
void removeAsset(std::vector<DivAssetDir>& dir, int entry);
|
void removeAsset(std::vector<DivAssetDir>& dir, int entry);
|
||||||
|
|
||||||
|
|
|
@ -4928,9 +4928,6 @@ DivDataErrors DivEngine::readAssetDirData(SafeReader& reader, std::vector<DivAss
|
||||||
logV("header is invalid: %c%c%c%c",magic[0],magic[1],magic[2],magic[3]);
|
logV("header is invalid: %c%c%c%c",magic[0],magic[1],magic[2],magic[3]);
|
||||||
return DIV_DATA_INVALID_HEADER;
|
return DIV_DATA_INVALID_HEADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
logV("reading");
|
|
||||||
|
|
||||||
reader.readI(); // reserved
|
reader.readI(); // reserved
|
||||||
|
|
||||||
unsigned int numDirs=reader.readI();
|
unsigned int numDirs=reader.readI();
|
||||||
|
@ -4941,8 +4938,6 @@ DivDataErrors DivEngine::readAssetDirData(SafeReader& reader, std::vector<DivAss
|
||||||
d.name=reader.readString();
|
d.name=reader.readString();
|
||||||
unsigned short numEntries=reader.readS();
|
unsigned short numEntries=reader.readS();
|
||||||
|
|
||||||
logV("reading %d entries for %s",numEntries,d.name);
|
|
||||||
|
|
||||||
for (unsigned short j=0; j<numEntries; j++) {
|
for (unsigned short j=0; j<numEntries; j++) {
|
||||||
d.entries.push_back(((unsigned char)reader.readC()));
|
d.entries.push_back(((unsigned char)reader.readC()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue