Tint not-yet-buildable asteroid area
This commit is contained in:
@@ -349,6 +349,7 @@ selection_rect = "#00ff00" # box-drag selection rectangle (REQ-UI-MULTI-SELE
|
|||||||
tile_highlight = "#ffffff22" # tile under cursor
|
tile_highlight = "#ffffff22" # tile under cursor
|
||||||
selected_outline = "#ffff00" # outline drawn around currently-selected building(s)
|
selected_outline = "#ffff00" # outline drawn around currently-selected building(s)
|
||||||
copy_config = "#33ccff66" # copy-settings eligible-target tint + copy/paste flash (REQ-BLD-COPY-CONFIG-FEEDBACK)
|
copy_config = "#33ccff66" # copy-settings eligible-target tint + copy/paste flash (REQ-BLD-COPY-CONFIG-FEEDBACK)
|
||||||
|
locked_asteroid = "#0000007f" # tint over the asteroid left of the buildable edge (not yet unlocked by expansion)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Schematic-drop toasts (REQ-UI-SCHEMATIC-TOAST)
|
# Schematic-drop toasts (REQ-UI-SCHEMATIC-TOAST)
|
||||||
|
|||||||
@@ -918,15 +918,25 @@ void GameWorldView::drawTiles(QPainter& painter)
|
|||||||
const int rightTile = leftTile + static_cast<int>(std::ceil(viewportWidthTiles())) + 2;
|
const int rightTile = leftTile + static_cast<int>(std::ceil(viewportWidthTiles())) + 2;
|
||||||
const int bottomTile = m_config->world.heightTiles;
|
const int bottomTile = m_config->world.heightTiles;
|
||||||
|
|
||||||
|
// Asteroid columns left of the buildable edge are not yet unlocked by
|
||||||
|
// expansion; tint them so the player sees the reachable-but-locked area.
|
||||||
|
const int buildableLeftX = -m_sim->currentAsteroidWidth_tiles();
|
||||||
|
|
||||||
painter.setPen(Qt::NoPen);
|
painter.setPen(Qt::NoPen);
|
||||||
for (int x = leftTile; x <= rightTile; ++x)
|
for (int x = leftTile; x <= rightTile; ++x)
|
||||||
{
|
{
|
||||||
const QColor& fill = (x < 0)
|
const QColor& fill = (x < 0)
|
||||||
? m_visuals->asteroid.fill
|
? m_visuals->asteroid.fill
|
||||||
: m_visuals->space.fill;
|
: m_visuals->space.fill;
|
||||||
|
const bool locked = (x < buildableLeftX);
|
||||||
for (int y = 0; y < bottomTile; ++y)
|
for (int y = 0; y < bottomTile; ++y)
|
||||||
{
|
{
|
||||||
painter.fillRect(tileRect(QPoint(x, y)), fill);
|
const QRectF rect = tileRect(QPoint(x, y));
|
||||||
|
painter.fillRect(rect, fill);
|
||||||
|
if (locked)
|
||||||
|
{
|
||||||
|
painter.fillRect(rect, m_visuals->overlays.lockedAsteroid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ struct OverlayVisuals
|
|||||||
QColor tileHighlight;
|
QColor tileHighlight;
|
||||||
QColor selectedOutline;
|
QColor selectedOutline;
|
||||||
QColor copyConfig;
|
QColor copyConfig;
|
||||||
|
QColor lockedAsteroid;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ToastVisuals
|
struct ToastVisuals
|
||||||
|
|||||||
@@ -225,6 +225,7 @@ VisualsConfig VisualsLoader::load(const std::string& path)
|
|||||||
cfg.overlays.tileHighlight = parseColor(requireString(ov, "tile_highlight", "overlays"), "overlays.tile_highlight");
|
cfg.overlays.tileHighlight = parseColor(requireString(ov, "tile_highlight", "overlays"), "overlays.tile_highlight");
|
||||||
cfg.overlays.selectedOutline = parseColor(requireString(ov, "selected_outline", "overlays"), "overlays.selected_outline");
|
cfg.overlays.selectedOutline = parseColor(requireString(ov, "selected_outline", "overlays"), "overlays.selected_outline");
|
||||||
cfg.overlays.copyConfig = parseColor(requireString(ov, "copy_config", "overlays"), "overlays.copy_config");
|
cfg.overlays.copyConfig = parseColor(requireString(ov, "copy_config", "overlays"), "overlays.copy_config");
|
||||||
|
cfg.overlays.lockedAsteroid = parseColor(requireString(ov, "locked_asteroid", "overlays"), "overlays.locked_asteroid");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toast
|
// Toast
|
||||||
|
|||||||
Reference in New Issue
Block a user