diff --git a/app/Filament/Resources/GameResource/RelationManagers/GameScreenshotsRelationManager.php b/app/Filament/Resources/GameResource/RelationManagers/GameScreenshotsRelationManager.php
index a4da48cf07..58b0846a06 100644
--- a/app/Filament/Resources/GameResource/RelationManagers/GameScreenshotsRelationManager.php
+++ b/app/Filament/Resources/GameResource/RelationManagers/GameScreenshotsRelationManager.php
@@ -22,11 +22,13 @@
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
+use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\HtmlString;
use Illuminate\Validation\ValidationException;
use Spatie\Activitylog\ActivityLogger;
@@ -472,7 +474,7 @@ private function getScreenshotValidationRules(): array
]);
}
- private function getScreenshotHelperText(): ?string
+ private function getScreenshotHelperText(): ?Htmlable
{
$system = $this->getOwnerRecord()?->system;
$resolutions = $system?->screenshot_resolutions;
@@ -480,23 +482,32 @@ private function getScreenshotHelperText(): ?string
return null;
}
- $formatted = collect($resolutions)
- ->map(fn (array $r) => "{$r['width']}x{$r['height']}")
- ->join(', ');
+ $supportsUpscaling = (bool) $system->supports_upscaled_screenshots;
+ $isSingleResolution = count($resolutions) === 1;
- $label = count($resolutions) > 1 ? 'Accepted resolutions' : 'Expected resolution';
+ $natives = collect($resolutions)
+ ->map(fn (array $r) => "{$r['width']}×{$r['height']}")
+ ->join(', ');
- $multiplesNote = $system->supports_upscaled_screenshots
- ? ' (or 2x/3x integer multiples)'
- : '';
+ $lines = [];
- $text = "{$label} for {$system->name}: {$formatted}{$multiplesNote}";
+ if ($supportsUpscaling) {
+ $lines[] = ['label' => 'Recommended', 'value' => "2× or 3× native, captured at your emulator's internal resolution"];
+ $lines[] = ['label' => 'Native', 'value' => $natives];
+ } else {
+ $label = $isSingleResolution ? 'Expected resolution' : 'Accepted resolutions';
+ $lines[] = ['label' => $label, 'value' => $natives];
+ }
if ($system->has_analog_tv_output) {
- $text .= '. SMPTE 601 capture resolutions (704x480, 720x480, 720x486, 704x576, 720x576) are also accepted.';
+ $lines[] = ['label' => 'Also accepted', 'value' => 'SMPTE 601 capture sizes'];
}
- return $text;
+ $html = collect($lines)
+ ->map(fn (array $line) => '' . e($line['label']) . ': ' . e($line['value']))
+ ->join('
');
+
+ return new HtmlString($html);
}
private function shouldShowArchivedScreenshots(): bool