Rename ship/station scrap drop entities to "debris"
This commit is contained in:
@@ -40,7 +40,7 @@
|
||||
#include "RecipeSelectionDialog.h"
|
||||
#include "RecipeSelectionRequestedEvent.h"
|
||||
#include "Rotation.h"
|
||||
#include "ScrapSystem.h"
|
||||
#include "DebrisSystem.h"
|
||||
#include "ShipLayoutPreview.h"
|
||||
#include "Simulation.h"
|
||||
#include "WeaponComponent.h"
|
||||
@@ -225,7 +225,7 @@ void SelectedBuildingPanel::onSelectionChanged(const std::vector<BuildingId>& id
|
||||
// A building selection is exclusive: it supersedes any field selection —
|
||||
// actors and scrap (REQ-UI-SELECTION-CATEGORIES).
|
||||
clearEntityDisplay();
|
||||
m_selectedScrap.clear();
|
||||
m_selectedDebris.clear();
|
||||
m_scrapLabel->hide();
|
||||
}
|
||||
rebuild();
|
||||
@@ -667,19 +667,19 @@ void SelectedBuildingPanel::handleEvent(
|
||||
|
||||
void SelectedBuildingPanel::refreshSelectionDisplay(RefreshReason reason)
|
||||
{
|
||||
if (!m_selectedEntities.empty() || !m_selectedScrap.empty())
|
||||
if (!m_selectedEntities.empty() || !m_selectedDebris.empty())
|
||||
{
|
||||
// Field selection. Keep the live values current: the single-actor stats panel,
|
||||
// the standalone scrap total, or the count summary (whose scrap line shrinks as
|
||||
// piles are collected) — matching the layout chosen by buildFieldSelection()
|
||||
// (REQ-UI-SHIP-STATS-PANEL, REQ-UI-SCRAP-PANEL).
|
||||
if (m_selectedEntities.size() == 1 && m_selectedScrap.empty())
|
||||
// the single-debris stats panel (whose Scrap row shrinks as it is collected), or
|
||||
// the count summary (whose Scrap line shrinks likewise) — matching the layout
|
||||
// chosen by buildFieldSelection() (REQ-UI-SHIP-STATS-PANEL, REQ-UI-DEBRIS-PANEL).
|
||||
if (m_selectedEntities.size() == 1 && m_selectedDebris.empty())
|
||||
{
|
||||
refreshEntityStats();
|
||||
}
|
||||
else if (m_selectedEntities.empty())
|
||||
else if (m_selectedEntities.empty() && m_selectedDebris.size() == 1)
|
||||
{
|
||||
refreshScrapTotal();
|
||||
buildDebrisSingle();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -936,7 +936,7 @@ void SelectedBuildingPanel::handleEvent(std::shared_ptr<const EntitySelectionCha
|
||||
|
||||
void SelectedBuildingPanel::buildFieldSelection()
|
||||
{
|
||||
if (m_selectedEntities.empty() && m_selectedScrap.empty())
|
||||
if (m_selectedEntities.empty() && m_selectedDebris.empty())
|
||||
{
|
||||
// Nothing in the field category. Fall back to empty unless buildings own the panel.
|
||||
clearEntityDisplay();
|
||||
@@ -953,10 +953,11 @@ void SelectedBuildingPanel::buildFieldSelection()
|
||||
|
||||
EntityAdmin& admin = m_sim->getAdmin();
|
||||
|
||||
// Full single-actor stats are shown only for a lone actor with no scrap. As soon as
|
||||
// the selection holds more than one object (multiple actors, or an actor plus scrap),
|
||||
// the panel switches to the compact count summary (REQ-UI-FIELD-MULTI-SELECTION).
|
||||
if (m_selectedEntities.size() == 1 && m_selectedScrap.empty())
|
||||
// A full single-object stats panel is shown only for a lone field object: one actor
|
||||
// with no debris, or one piece of debris with no actors. As soon as the selection holds
|
||||
// more than one object (multiple actors, multiple debris, or actors plus debris), the
|
||||
// panel switches to the compact count summary (REQ-UI-FIELD-MULTI-SELECTION).
|
||||
if (m_selectedEntities.size() == 1 && m_selectedDebris.empty())
|
||||
{
|
||||
m_entitySummaryLabel->hide();
|
||||
m_scrapLabel->hide();
|
||||
@@ -978,25 +979,36 @@ void SelectedBuildingPanel::buildFieldSelection()
|
||||
return;
|
||||
}
|
||||
|
||||
m_entityTitleLabel->hide();
|
||||
m_entityStatsPanel->hide();
|
||||
m_stationStatsLabel->hide();
|
||||
|
||||
if (m_selectedEntities.empty())
|
||||
if (m_selectedEntities.empty() && m_selectedDebris.size() == 1)
|
||||
{
|
||||
// Scrap only: a single "Scrap: N" line.
|
||||
// Single piece of debris: a "Debris" heading plus a "Scrap" stat row, styled like
|
||||
// the ship/station stats panels (REQ-UI-DEBRIS-PANEL).
|
||||
m_entitySummaryLabel->hide();
|
||||
refreshScrapTotal();
|
||||
m_scrapLabel->show();
|
||||
m_entityStatsPanel->hide();
|
||||
m_stationStatsLabel->hide();
|
||||
buildDebrisSingle();
|
||||
return;
|
||||
}
|
||||
|
||||
// Actor counts, with the scrap total appended into the same label so every line
|
||||
// shares the same spacing.
|
||||
// More than one field object: a compact count summary. buildEntitySummary() appends the
|
||||
// "Debris x N" and "Scrap x N" lines when debris is part of the selection.
|
||||
m_entityTitleLabel->hide();
|
||||
m_entityStatsPanel->hide();
|
||||
m_stationStatsLabel->hide();
|
||||
m_scrapLabel->hide();
|
||||
buildEntitySummary();
|
||||
}
|
||||
|
||||
void SelectedBuildingPanel::buildDebrisSingle()
|
||||
{
|
||||
// "Debris" heading + a single "Scrap" stat row for the piece's remaining amount,
|
||||
// mirroring the single-actor stats panels (REQ-UI-DEBRIS-PANEL).
|
||||
m_entityTitleLabel->setText(tr("Debris"));
|
||||
m_entityTitleLabel->show();
|
||||
m_scrapLabel->setText(tr("Scrap: %1").arg(selectedDebrisScrapTotal()));
|
||||
m_scrapLabel->show();
|
||||
}
|
||||
|
||||
void SelectedBuildingPanel::buildEntitySummary()
|
||||
{
|
||||
EntityAdmin& admin = m_sim->getAdmin();
|
||||
@@ -1042,16 +1054,18 @@ void SelectedBuildingPanel::buildEntitySummary()
|
||||
}
|
||||
|
||||
// One "<type> x <count>" line per group (matching the recipe tooltip and the building
|
||||
// multi-selection). No total-count header, consistent with the building panel. The
|
||||
// scrap total, when present, is appended as another line in the same label so the
|
||||
// line spacing is uniform (REQ-UI-FIELD-MULTI-SELECTION, REQ-UI-SCRAP-PANEL).
|
||||
// multi-selection). No total-count header, consistent with the building panel. When
|
||||
// debris is part of the selection, a "Debris x <count>" line followed by a
|
||||
// "Scrap x <total>" line are appended into the same label so the line spacing is
|
||||
// uniform (REQ-UI-FIELD-MULTI-SELECTION, REQ-UI-DEBRIS-PANEL).
|
||||
QStringList lines;
|
||||
for (const QString& key : keys)
|
||||
{
|
||||
lines << tr("%1 x %2").arg(labels[key]).arg(counts[key]);
|
||||
}
|
||||
if (!m_selectedScrap.empty())
|
||||
if (!m_selectedDebris.empty())
|
||||
{
|
||||
lines << tr("Debris x %1").arg(static_cast<int>(m_selectedDebris.size()));
|
||||
lines << scrapTotalText();
|
||||
}
|
||||
m_entitySummaryLabel->setText(lines.join('\n'));
|
||||
@@ -1173,36 +1187,36 @@ void SelectedBuildingPanel::handleEvent(std::shared_ptr<const SelectionChangedEv
|
||||
}
|
||||
|
||||
void SelectedBuildingPanel::handleEvent(
|
||||
std::shared_ptr<const ScrapSelectionChangedEvent> event)
|
||||
std::shared_ptr<const DebrisSelectionChangedEvent> event)
|
||||
{
|
||||
m_selectedScrap = event->scrap;
|
||||
if (!m_selectedScrap.empty())
|
||||
m_selectedDebris = event->debris;
|
||||
if (!m_selectedDebris.empty())
|
||||
{
|
||||
// Scrap is a field object: it supersedes any building selection but coexists
|
||||
// Debris is a field object: it supersedes any building selection but coexists
|
||||
// with actors (REQ-UI-SELECTION-CATEGORIES).
|
||||
m_selectedBuildingIds.clear();
|
||||
}
|
||||
buildFieldSelection();
|
||||
}
|
||||
|
||||
QString SelectedBuildingPanel::scrapTotalText() const
|
||||
int SelectedBuildingPanel::selectedDebrisScrapTotal() const
|
||||
{
|
||||
// Sum the remaining amounts of the still-living selected piles (REQ-UI-SCRAP-PANEL).
|
||||
// Sum the remaining scrap across the still-living selected debris (REQ-UI-DEBRIS-PANEL).
|
||||
int total = 0;
|
||||
for (const ScrapInfo& info : m_sim->getScraps().getAllScrapInfo())
|
||||
for (const DebrisInfo& info : m_sim->getDebrisSystem().getAllDebrisInfo())
|
||||
{
|
||||
if (std::find(m_selectedScrap.begin(), m_selectedScrap.end(), info.entity)
|
||||
!= m_selectedScrap.end())
|
||||
if (std::find(m_selectedDebris.begin(), m_selectedDebris.end(), info.entity)
|
||||
!= m_selectedDebris.end())
|
||||
{
|
||||
total += info.amount;
|
||||
}
|
||||
}
|
||||
return tr("Scrap x %1").arg(total);
|
||||
return total;
|
||||
}
|
||||
|
||||
void SelectedBuildingPanel::refreshScrapTotal()
|
||||
QString SelectedBuildingPanel::scrapTotalText() const
|
||||
{
|
||||
m_scrapLabel->setText(scrapTotalText());
|
||||
return tr("Scrap x %1").arg(selectedDebrisScrapTotal());
|
||||
}
|
||||
|
||||
void SelectedBuildingPanel::handleEvent(std::shared_ptr<const DebugDrawToggledEvent> event)
|
||||
|
||||
Reference in New Issue
Block a user