linters
This commit is contained in:
@@ -166,8 +166,8 @@ void TilePicker::render() {
|
||||
int cells_h = row_max - row_min + 1;
|
||||
float rx = tileset_screen_x + static_cast<float>(col_min * out_cell);
|
||||
float ry = tileset_screen_y + static_cast<float>(row_min * out_cell);
|
||||
float rw = static_cast<float>((cells_w * out_cell) - spacing_out_);
|
||||
float rh = static_cast<float>((cells_h * out_cell) - spacing_out_);
|
||||
auto rw = static_cast<float>((cells_w * out_cell) - spacing_out_);
|
||||
auto rh = static_cast<float>((cells_h * out_cell) - spacing_out_);
|
||||
if (ry + rh > 0 && ry < static_cast<float>(visible_height_)) {
|
||||
SDL_FRect rect_box = {.x = rx, .y = ry, .w = rw, .h = rh};
|
||||
game_surface->drawRectBorder(&rect_box, 15);
|
||||
@@ -198,6 +198,27 @@ void TilePicker::render() {
|
||||
}
|
||||
}
|
||||
|
||||
// Invoca el callback con el rect formado por rect_start_tile_ y el hover actual, luego cierra.
|
||||
void TilePicker::commitRectSelection() {
|
||||
int end_tile = (hover_tile_ >= 0) ? hover_tile_ : last_valid_hover_;
|
||||
if (end_tile >= 0 && rect_start_tile_ >= 0) {
|
||||
int c1 = rect_start_tile_ % tileset_width_;
|
||||
int r1 = rect_start_tile_ / tileset_width_;
|
||||
int c2 = end_tile % tileset_width_;
|
||||
int r2 = end_tile / tileset_width_;
|
||||
int col_min = std::min(c1, c2);
|
||||
int col_max = std::max(c1, c2);
|
||||
int row_min = std::min(r1, r2);
|
||||
int row_max = std::max(r1, r2);
|
||||
int width = col_max - col_min + 1;
|
||||
int height = row_max - row_min + 1;
|
||||
if (on_select) { on_select(col_min, row_min, width, height); }
|
||||
}
|
||||
selecting_rect_ = false;
|
||||
rect_start_tile_ = -1;
|
||||
close();
|
||||
}
|
||||
|
||||
// Maneja eventos del picker
|
||||
void TilePicker::handleEvent(const SDL_Event& event) {
|
||||
if (!open_) { return; }
|
||||
@@ -226,23 +247,7 @@ void TilePicker::handleEvent(const SDL_Event& event) {
|
||||
}
|
||||
|
||||
if (event.type == SDL_EVENT_MOUSE_BUTTON_UP && event.button.button == SDL_BUTTON_LEFT && selecting_rect_) {
|
||||
int end_tile = (hover_tile_ >= 0) ? hover_tile_ : last_valid_hover_;
|
||||
if (end_tile >= 0 && rect_start_tile_ >= 0) {
|
||||
int c1 = rect_start_tile_ % tileset_width_;
|
||||
int r1 = rect_start_tile_ / tileset_width_;
|
||||
int c2 = end_tile % tileset_width_;
|
||||
int r2 = end_tile / tileset_width_;
|
||||
int col_min = std::min(c1, c2);
|
||||
int col_max = std::max(c1, c2);
|
||||
int row_min = std::min(r1, r2);
|
||||
int row_max = std::max(r1, r2);
|
||||
int width = col_max - col_min + 1;
|
||||
int height = row_max - row_min + 1;
|
||||
if (on_select) { on_select(col_min, row_min, width, height); }
|
||||
}
|
||||
selecting_rect_ = false;
|
||||
rect_start_tile_ = -1;
|
||||
close();
|
||||
commitRectSelection();
|
||||
}
|
||||
|
||||
if (event.type == SDL_EVENT_MOUSE_WHEEL) {
|
||||
|
||||
Reference in New Issue
Block a user