public object GetPreview(object item) {
var preset = item as ISavedPresetEntry;
if (preset == null) return null;
RaceGridViewModel.SaveableData saved;
try {
var data = preset.ReadData();
saved = JsonConvert.DeserializeObject<RaceGridViewModel.SaveableData>(data);
} catch (Exception) {
return null;
}
var mode = RaceGridViewModel.Modes.GetByIdOrDefault<IRaceGridMode>(saved.ModeId);
if (mode == null) return null;
var displayMode = mode.CandidatesMode ? $"{mode.DisplayName} ({"Random"})" : mode.DisplayName;
var opponentsNumber = mode.CandidatesMode ? saved.OpponentsNumber : saved.CarIds?.Length;
var description = new[] {
$"Mode: [b]{displayMode}[/b]",
mode == BuiltInGridMode.Custom
? $"Opponents: [b]{(saved.CarIds?.Length ?? saved.OpponentsNumber ?? 0).ToInvariantString() ?? @"?"}[/b]" : null,
mode == BuiltInGridMode.CandidatesManual ? $"Candidates: [b]{saved.CarIds?.Length.ToInvariantString() ?? @"?"}[/b]" : null,
!string.IsNullOrWhiteSpace(saved.FilterValue) ? $"Filter: [b]“{saved.FilterValue}”[/b]" : null,
saved.StartingPosition.HasValue && opponentsNumber.HasValue
? $"Starting position: [b]{GetDisplayPosition(saved.StartingPosition.Value, opponentsNumber.Value)}[/b]" : null,
}.NonNull().JoinToString(Environment.NewLine);
return new BbCodeBlock { BbCode = description };
}
}