1
0
Fork 0

Codechange: Use FlatSet for sprite picker list.

pull/14219/head
Peter Nelson 2025-05-05 01:12:12 +01:00 committed by Peter Nelson
parent b06273f716
commit e23de03a99
3 changed files with 5 additions and 4 deletions

View File

@ -1162,7 +1162,7 @@ static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mo
if (topleft <= clicked && clicked <= bottomright) {
uint offset = (((size_t)clicked - (size_t)topleft) / (blitter->GetScreenDepth() / 8)) % bp.pitch;
if (offset < (uint)bp.width) {
include(_newgrf_debug_sprite_picker.sprites, sprite_id);
_newgrf_debug_sprite_picker.sprites.insert(sprite_id);
}
}
}

View File

@ -10,6 +10,7 @@
#ifndef NEWGRF_DEBUG_H
#define NEWGRF_DEBUG_H
#include "core/flatset_type.hpp"
#include "newgrf.h"
#include "tile_type.h"
#include "vehicle_type.h"
@ -25,7 +26,7 @@ enum NewGrfDebugSpritePickerMode : uint8_t {
struct NewGrfDebugSpritePicker {
NewGrfDebugSpritePickerMode mode; ///< Current state
void *clicked_pixel; ///< Clicked pixel (pointer to blitter buffer)
std::vector<SpriteID> sprites; ///< Sprites found
FlatSet<SpriteID> sprites; ///< Sprites found
};
extern NewGrfDebugSpritePicker _newgrf_debug_sprite_picker;

View File

@ -50,7 +50,7 @@
#include "safeguards.h"
/** The sprite picker. */
NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, nullptr, std::vector<SpriteID>() };
NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, nullptr, {} };
/**
* Get the feature index related to the window number.
@ -957,7 +957,7 @@ struct SpriteAlignerWindow : Window {
const NWidgetBase *nwid = this->GetWidget<NWidgetBase>(widget);
int step_size = nwid->resize_y;
const std::vector<SpriteID> &list = _newgrf_debug_sprite_picker.sprites;
const FlatSet<SpriteID> &list = _newgrf_debug_sprite_picker.sprites;
Rect ir = r.Shrink(WidgetDimensions::scaled.matrix);
auto [first, last] = this->vscroll->GetVisibleRangeIterators(list);