Fix #221: Add grid_pos and grid_size properties for Grid children
UIDrawables placed in a Grid's children collection now have: - grid_pos: Position in tile coordinates (get/set) - grid_size: Size in tile coordinates (get/set) Raises RuntimeError if accessed when parent is not a Grid. UIGrid only gets grid_pos (grid_size conflicts with existing property). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
6c5992f1c1
commit
14a6520593
10 changed files with 251 additions and 0 deletions
|
|
@ -2177,6 +2177,7 @@ PyGetSetDef UIGrid::getsetters[] = {
|
|||
{"grid_h", (getter)UIGrid::get_grid_h, NULL, "Grid height in cells", NULL},
|
||||
{"position", (getter)UIGrid::get_position, (setter)UIGrid::set_position, "Position of the grid (x, y)", NULL},
|
||||
{"pos", (getter)UIDrawable::get_pos, (setter)UIDrawable::set_pos, "Position of the grid as Vector", (void*)PyObjectsEnum::UIGRID},
|
||||
{"grid_pos", (getter)UIDrawable::get_grid_pos, (setter)UIDrawable::set_grid_pos, "Position in parent grid's tile coordinates (only when parent is Grid)", (void*)PyObjectsEnum::UIGRID},
|
||||
{"size", (getter)UIGrid::get_size, (setter)UIGrid::set_size, "Size of the grid as Vector (width, height)", NULL},
|
||||
{"center", (getter)UIGrid::get_center, (setter)UIGrid::set_center, "Grid coordinate at the center of the Grid's view (pan)", NULL},
|
||||
|
||||
|
|
@ -2383,6 +2384,13 @@ std::optional<sf::Vector2i> UIGrid::screenToCell(sf::Vector2f screen_pos) const
|
|||
return sf::Vector2i(cell_x, cell_y);
|
||||
}
|
||||
|
||||
// #221 - Get effective cell size (texture size * zoom)
|
||||
sf::Vector2f UIGrid::getEffectiveCellSize() const {
|
||||
float cell_w = ptex ? static_cast<float>(ptex->sprite_width) : static_cast<float>(DEFAULT_CELL_WIDTH);
|
||||
float cell_h = ptex ? static_cast<float>(ptex->sprite_height) : static_cast<float>(DEFAULT_CELL_HEIGHT);
|
||||
return sf::Vector2f(cell_w * zoom, cell_h * zoom);
|
||||
}
|
||||
|
||||
// #142 - Update cell hover state and fire callbacks
|
||||
void UIGrid::updateCellHover(sf::Vector2f mousepos) {
|
||||
auto new_cell = screenToCell(mousepos);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue