|
|
@@ -763,6 +763,59 @@ export default class NESBank extends ISurface{ |
|
|
|
this.__redos = []; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
removeDuplicates(sameOrientation){ |
|
|
|
sameOrientation = (sameOrientation === true); |
|
|
|
var remdup = (list, idxoff) => { |
|
|
|
for (let i=1; i < list.length; i++){ |
|
|
|
for (let j=0; j < i; j++){ |
|
|
|
var res = list[i].isEq(list[j], sameOrientation); |
|
|
|
if (res >= 0){ |
|
|
|
list[i].clear(); |
|
|
|
this.emit("tile_drop", { |
|
|
|
oIdx: idxoff + i, |
|
|
|
nIdx: idxoff + j, |
|
|
|
flag: res |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.clearUndos(); |
|
|
|
this.clearRedos(); |
|
|
|
remdup(this.__LP, 0); |
|
|
|
remdup(this.__RP, 256); |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
compact(ignoreTileZero){ |
|
|
|
ignoreTileZero = (ignoreTileZero === true); |
|
|
|
var comp = (list, idxoff, it0) => { |
|
|
|
var etile = (it0) ? 1 : 0; |
|
|
|
while (etile < list.length && !list[etile].isEmpty()){ |
|
|
|
etile++; |
|
|
|
} |
|
|
|
var ctile = etile + 1; |
|
|
|
for (ctile; ctile < list.length; ctile++){ |
|
|
|
if (!list[ctile].isEmpty()){ |
|
|
|
list[etile].copy(list[ctile]); |
|
|
|
list[ctile].clear(); |
|
|
|
this.emit("tile_move", { |
|
|
|
oIdx: idxoff + ctile, |
|
|
|
nIdx: idxoff + etile |
|
|
|
}); |
|
|
|
etile++; |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.clearUndos(); |
|
|
|
this.clearRedos(); |
|
|
|
comp(this.__LP, 0, false); |
|
|
|
comp(this.__RP, 256, ignoreTileZero); |
|
|
|
return this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|