Skip to content

Commit bc759be

Browse files
committed
Fixed sorting option and direction being flipped. Fixed errors when moving replays, causing the explorer not to update correctly. Added an icon for replays on explorer. Made replay sound play when invalidation is actually incorrect. Added extra cases for when the explorer is null.
1 parent d72abcb commit bc759be

5 files changed

Lines changed: 44 additions & 26 deletions

File tree

8 KB
Binary file not shown.

src/Core/Main.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,9 @@ public class Validation : ValidationParameters
5050
public override bool DoValidation(string Input)
5151
{
5252
if (Enum.TryParse(typeof(ReplayExplorer.SortingType), Input, true, out _))
53-
{
54-
Main.ReplayError();
5553
return true;
56-
}
5754

55+
Main.ReplayError();
5856
return false;
5957
}
6058
}
@@ -1537,7 +1535,7 @@ public void LoadReplayObjects()
15371535
ReplaySettings.replayExplorerGO = replayExplorerGO;
15381536

15391537
ReplayFiles.folderIcon = bundle.LoadAsset<Texture2D>("FolderIcon");
1540-
ReplayFiles.replayIcon = bundle.LoadAsset<Texture2D>("RenameIcon");
1538+
ReplayFiles.replayIcon = bundle.LoadAsset<Texture2D>("ReplayIcon");
15411539

15421540
for (int i = 0; i <= 5; i++)
15431541
{

src/Core/replayobjects

7.43 KB
Binary file not shown.

src/Replay/Files/ReplayExplorer.cs

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Linq;
5-
using ReplayMod.Core;
65
using ReplayMod.Replay.Serialization;
76
using ReplayMod.Replay.UI;
87
using static UnityEngine.Mathf;
8+
using Main = ReplayMod.Core.Main;
99

1010
namespace ReplayMod.Replay.Files;
1111

@@ -50,7 +50,7 @@ public ReplayExplorer(string root)
5050

5151
public void Refresh()
5252
{
53-
Enum.TryParse((string)Main.instance.ExplorerSorting.SavedValue, true, out SortingType sortingType);
53+
Enum.TryParse((string)Main.instance.ExplorerSorting.Value, true, out SortingType sortingType);
5454
currentReplayEntries = GetEntries(sortingType);
5555

5656
currentIndex = Clamp(currentIndex, -1, currentReplayEntries.Count - 1);
@@ -71,12 +71,26 @@ public List<Entry> GetEntries(SortingType sorting = SortingType.Date)
7171

7272
var files = Directory
7373
.GetFiles(CurrentFolderPath, "*.replay")
74-
.Select(file => new Entry
74+
.Select(file =>
7575
{
76-
Name = Path.GetFileNameWithoutExtension(file),
77-
FullPath = file,
78-
header = ReplayArchive.GetManifest(file),
79-
IsFolder = false,
76+
ReplaySerializer.ReplayHeader header;
77+
78+
try
79+
{
80+
header = ReplayArchive.GetManifest(file);
81+
}
82+
catch
83+
{
84+
return null;
85+
}
86+
87+
return new Entry
88+
{
89+
Name = Path.GetFileNameWithoutExtension(file),
90+
FullPath = file,
91+
header = header,
92+
IsFolder = false
93+
};
8094
})
8195
.ToList();
8296

@@ -102,26 +116,29 @@ public List<Entry> GetEntries(SortingType sorting = SortingType.Date)
102116

103117
private List<Entry> SortFiles(List<Entry> files, SortingType sorting)
104118
{
105-
if ((bool)Main.instance.FavoritesFirst.SavedValue)
106-
files = files.OrderByDescending(f => f.header.isFavorited).ToList();
119+
IOrderedEnumerable<Entry> query =
120+
(bool)Main.instance.FavoritesFirst.SavedValue
121+
? files.OrderByDescending(f => f.header?.isFavorited ?? false)
122+
: files.OrderBy(f => 0);
107123

108-
var newFiles = sorting switch
124+
query = sorting switch
109125
{
110-
SortingType.Name => files.OrderBy(f => f.Name).ToList(),
111-
SortingType.Date => files.OrderByDescending(f => File.GetLastWriteTimeUtc(f.FullPath)).ToList(),
112-
SortingType.Duration => files.OrderByDescending(f => f.header.Duration).ToList(),
113-
SortingType.Map => files.OrderBy(f => ReplayFormatting.GetMapName(header: f.header), StringComparer.OrdinalIgnoreCase).ToList(),
114-
SortingType.PlayerCount => files.OrderByDescending(f => f.header.Players?.Length).ToList(),
115-
SortingType.OpponentBP => files.OrderByDescending(f => f.header.Players
126+
SortingType.Name => query.ThenBy(f => f.Name),
127+
SortingType.Date => query.ThenByDescending(f => File.GetLastWriteTimeUtc(f.FullPath)),
128+
SortingType.Duration => query.ThenByDescending(f => f.header?.Duration ?? 0),
129+
SortingType.Map => query.ThenBy(f => ReplayFormatting.GetMapName(header: f.header), StringComparer.OrdinalIgnoreCase),
130+
SortingType.PlayerCount => query.ThenByDescending(f => f.header?.Players?.Length ?? 0),
131+
SortingType.OpponentBP => query.ThenByDescending(f => f.header?.Players
116132
.Where(p => !p.IsLocal)
117133
.Select(p => p.BattlePoints)
118-
.DefaultIfEmpty(0).Max()
119-
).ToList(),
120-
121-
_ => files
134+
.DefaultIfEmpty(0)
135+
.Max()),
136+
_ => query
122137
};
123138

124-
if ((bool)Main.instance.SortingDirection.SavedValue)
139+
var newFiles = query.ToList();
140+
141+
if ((bool)Main.instance.SortingDirection.Value)
125142
newFiles.Reverse();
126143

127144
return newFiles;

src/Replay/Files/ReplayFiles.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,9 @@ private static void SelectReplayFromExplorer()
350350

351351
public static void ReloadReplays()
352352
{
353+
if (ReplaySettings.replayExplorerGO == null)
354+
return;
355+
353356
var previousGuid = currentHeader?.Guid;
354357

355358
explorer.currentPage = 0;
@@ -438,7 +441,7 @@ IEnumerator ApplySizeDelta() {
438441

439442
var icon = button.transform.GetChild(1).GetChild(3).GetComponent<MeshRenderer>();
440443
icon.material.SetTexture("_Texture", entry.IsFolder ? folderIcon : replayIcon);
441-
icon.transform.localScale = Vector3.one * (entry.IsFolder ? 0.0522f : 0.0522f);
444+
icon.transform.localScale = (entry.IsFolder ? Vector3.one * 0.0522f : new Vector3(0.0422f, 0.0402f, 0.0422f));
442445

443446
if (!entry.IsFolder)
444447
button.transform.GetChild(1).GetChild(7).gameObject.SetActive(entry.header.isFavorited);

0 commit comments

Comments
 (0)