ASYLUM: use Common::sort() for sorting graphics queue items

This commit is contained in:
alxpnv 2021-06-17 11:47:56 +03:00
parent 4d6344e736
commit 670d8d85f4
2 changed files with 6 additions and 28 deletions

View File

@ -696,9 +696,13 @@ void Screen::addGraphicToQueue(GraphicQueueItem const &item) {
_queueItems.push_back(item);
}
bool Screen::graphicQueueItemComparator(const GraphicQueueItem &item1, const GraphicQueueItem &item2) {
return item1.priority > item2.priority;
}
void Screen::drawGraphicsInQueue() {
// Sort by priority first
graphicsSelectionSort();
Common::sort(_queueItems.begin(), _queueItems.end(), &Screen::graphicQueueItemComparator);
for (Common::Array<GraphicQueueItem>::const_iterator i = _queueItems.begin(); i != _queueItems.end(); i++) {
const GraphicQueueItem *item = i;
@ -718,31 +722,6 @@ void Screen::clearGraphicsInQueue() {
_queueItems.clear();
}
void Screen::graphicsSelectionSort() {
uint32 maxIdx;
if (!_queueItems.size())
return;
for (uint32 i = 0; i < _queueItems.size() - 1; i++) {
maxIdx = i;
for (uint32 j = i + 1; j < _queueItems.size(); j++)
if (_queueItems[j].priority > _queueItems[maxIdx].priority)
maxIdx = j;
if (i != maxIdx)
swapGraphicItem(i, maxIdx);
}
}
void Screen::swapGraphicItem(int32 item1, int32 item2) {
GraphicQueueItem temp;
temp = _queueItems[item1];
_queueItems[item1] = _queueItems[item2];
_queueItems[item2] = temp;
}
void Screen::deleteGraphicFromQueue(ResourceId resourceId) {
for (uint32 i = 0; i < _queueItems.size(); i++) {
if (_queueItems[i].resourceId == resourceId) {

View File

@ -175,8 +175,7 @@ private:
void stopPaletteFadeTimer();
// Graphic queue
void graphicsSelectionSort();
void swapGraphicItem(int32 item1, int32 item2);
static bool graphicQueueItemComparator(const GraphicQueueItem &item1, const GraphicQueueItem &item2);
// Misc
void clip(Common::Rect *source, Common::Rect *destination, int32 flags) const;