map_editor:
- tilepicker s'obri ara amb la T - brush de varios tiles - eyedropper amb botó dret (de uno o varios tiles)
This commit is contained in:
@@ -16,6 +16,7 @@ class Surface;
|
||||
* Muestra el tileset centrado en el play area.
|
||||
* Hover ilumina el tile bajo el cursor.
|
||||
* Click selecciona el tile y cierra el picker.
|
||||
* Si allow_rect_selection es true, click + drag selecciona un rect de tiles.
|
||||
* Mouse wheel para scroll si el tileset es más alto que el play area.
|
||||
* ESC o click derecho para cancelar.
|
||||
*/
|
||||
@@ -29,15 +30,17 @@ class TilePicker {
|
||||
// source_color/target_color: sustitución de color (-1 = sin sustitución)
|
||||
// tile_spacing_in: pixels de separación entre tiles en el fichero fuente
|
||||
// tile_spacing_out: pixels de separación visual entre tiles al mostrar
|
||||
void open(const std::string& tileset_name, int current_tile = -1, int bg_color = -1, int source_color = -1, int target_color = -1, int tile_spacing_in = 0, int tile_spacing_out = 1);
|
||||
// allow_rect_selection: si true, permite arrastrar para seleccionar varios tiles
|
||||
void open(const std::string& tileset_name, int current_tile = -1, int bg_color = -1, int source_color = -1, int target_color = -1, int tile_spacing_in = 0, int tile_spacing_out = 1, bool allow_rect_selection = false);
|
||||
void close();
|
||||
[[nodiscard]] auto isOpen() const -> bool { return open_; }
|
||||
|
||||
void render();
|
||||
void handleEvent(const SDL_Event& event);
|
||||
|
||||
// Callback al seleccionar un tile (índice del tile)
|
||||
std::function<void(int)> on_select;
|
||||
// Callback al seleccionar (col, row, w, h dentro del tileset).
|
||||
// Para selección de un solo tile: w=h=1.
|
||||
std::function<void(int, int, int, int)> on_select;
|
||||
|
||||
private:
|
||||
void updateMousePosition();
|
||||
@@ -50,6 +53,12 @@ class TilePicker {
|
||||
int tileset_height_{0}; // Alto del tileset en tiles
|
||||
int current_tile_{-1}; // Tile actualmente seleccionado (highlight)
|
||||
int hover_tile_{-1}; // Tile bajo el cursor
|
||||
int last_valid_hover_{-1}; // Último hover_tile_ válido (para soltar sobre spacing)
|
||||
|
||||
// Selección rectangular
|
||||
bool allow_rect_{false}; // ¿Se permite drag para seleccionar rect?
|
||||
bool selecting_rect_{false}; // ¿Hay un drag activo?
|
||||
int rect_start_tile_{-1}; // Tile donde empezó el drag
|
||||
|
||||
// Spacing
|
||||
int spacing_in_{0}; // Spacing en el fichero fuente
|
||||
|
||||
Reference in New Issue
Block a user