Skip to content

Commit 20cc4c0

Browse files
committed
chore: add S1 and make tweak to language folder check
1 parent edea88d commit 20cc4c0

4 files changed

Lines changed: 201 additions & 5 deletions

File tree

Games/IW7.cs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,30 @@ private void MoveLanguageFolders(bool isReverting)
9494
{
9595
try
9696
{
97-
string source = isReverting ? entry.Value : entry.Key;
98-
string dest = isReverting ? entry.Key : entry.Value;
99-
Helpers.MoveDirectoryTo(source, dest);
97+
if (isReverting)
98+
{
99+
Helpers.MoveDirectoryTo(entry.Value, entry.Key);
100+
string langName = Path.GetFileName(entry.Key);
101+
string langVideoFolder = Path.Combine(RAW_VIDEO_FOLDER, langName);
102+
103+
Helpers.MoveSpecificFiles(langVideoFolder, entry.Key, "*.bik");
104+
Helpers.TryCleanupDirectory(langVideoFolder);
105+
}
106+
else
107+
{
108+
if (Directory.Exists(entry.Key))
109+
{
110+
string langName = Path.GetFileName(entry.Key);
111+
string langVideoTarget = Path.Combine(RAW_VIDEO_FOLDER, langName);
112+
Helpers.MoveSpecificFiles(entry.Key, langVideoTarget, "*.bik");
113+
Helpers.MoveDirectoryTo(entry.Key, entry.Value);
114+
}
115+
}
116+
}
117+
catch (Exception ex)
118+
{
119+
Helpers.WriteColor($"Error processing {entry.Key}: {ex.Message}", ConsoleColor.Red);
100120
}
101-
catch (Exception ex) { Console.WriteLine(ex.Message); }
102121
}
103122
}
104123

Games/S1.cs

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
namespace FileCleaner.Games
2+
{
3+
public class S1 : Base
4+
{
5+
public override string WELCOME_MESSAGE => "COD: Advanced Warfare Cleaner";
6+
public override string[] GAME_EXECUTABLES { get; } = { "s1_mp64_ship.exe", "s1_sp64_ship.exe" };
7+
8+
public override string ENGLISH_FOLDER { get; } = "English";
9+
public override string ENGLISH_SAFE_FOLDER { get; } = "English_safe";
10+
public override string FRENCH_FOLDER { get; } = "French";
11+
public override string GERMAN_FOLDER { get; } = "German";
12+
public override string RUSSIAN_FOLDER { get; } = "Russian";
13+
public override string POLISH_FOLDER { get; } = "Polish";
14+
public override string KOREAN_FOLDER { get; } = "Korean";
15+
public override string PORTUGUESE_FOLDER { get; } = "Portuguese";
16+
public override string SPANISH_FOLDER { get; } = "Spanish";
17+
public override string ITALIAN_FOLDER { get; } = "Italian";
18+
19+
public override async Task Process()
20+
{
21+
RUNNING = true;
22+
while (RUNNING)
23+
{
24+
Helpers.WriteColor(WELCOME_MESSAGE);
25+
Helpers.WriteColor("[1] Clean Game Files");
26+
Helpers.WriteColor("[2] Revert Cleaning");
27+
Helpers.WriteColor("[Q] Quit", ConsoleColor.DarkGray);
28+
29+
var choice = Console.ReadLine()?.ToUpperInvariant();
30+
31+
switch (choice)
32+
{
33+
case "1":
34+
await CleanGameFiles();
35+
break;
36+
case "2":
37+
await RevertCleaning();
38+
break;
39+
case "Q":
40+
RUNNING = false;
41+
break;
42+
default:
43+
Helpers.WriteColor("Not a Valid Choice!\n", ConsoleColor.Red);
44+
break;
45+
}
46+
}
47+
}
48+
49+
private async Task CleanGameFiles()
50+
{
51+
if (!File.Exists(COMMON_MP_FASTFILE) || !File.Exists(COMMON_FASTFILE))
52+
{
53+
Helpers.WriteColor("Your game is already clean!\nIf not, make sure you have put the file in the correct game folder.\n", ConsoleColor.Yellow);
54+
return;
55+
}
56+
57+
Helpers.EnsureDirectoriesExist([ZONE_FOLDER,
58+
RAW_FOLDER,
59+
RAW_VIDEO_FOLDER,
60+
CLEAN_ZONE_FOLDER,
61+
CLEAN_RAW_VIDEO_FOLDER]);
62+
63+
var fileTypeMap = new Dictionary<string, string>
64+
{
65+
{ FASTFILE_EXTENSION, CLEAN_ZONE_FOLDER },
66+
{ PAK_EXTENSION, CLEAN_ZONE_FOLDER },
67+
{ BIK_EXTENSION, CLEAN_RAW_VIDEO_FOLDER }
68+
};
69+
70+
foreach (var entry in fileTypeMap)
71+
{
72+
string[] files = Directory.GetFiles("./", entry.Key);
73+
if (files.Length > 0)
74+
{
75+
Helpers.MoveFileTo(files, entry.Value);
76+
}
77+
}
78+
79+
MoveLanguageFolders(isReverting: false);
80+
Helpers.WriteColor("Finished Processing Files\n", ConsoleColor.Green);
81+
}
82+
83+
private void MoveLanguageFolders(bool isReverting)
84+
{
85+
var folderMap = new Dictionary<string, string>
86+
{
87+
{ ENGLISH_FOLDER, ENGLISH_ZONE_FOLDER },
88+
{ ENGLISH_SAFE_FOLDER, ENGLISH_SAFE_ZONE_FOLDER },
89+
{ FRENCH_FOLDER, FRENCH_ZONE_FOLDER },
90+
{ GERMAN_FOLDER, GERMAN_ZONE_FOLDER },
91+
{ RUSSIAN_FOLDER, RUSSIAN_ZONE_FOLDER },
92+
{ POLISH_FOLDER, POLISH_ZONE_FOLDER },
93+
{ JAPAN_FOLDER, JAPAN_ZONE_FOLDER },
94+
{ KOREAN_FOLDER, KOREAN_ZONE_FOLDER },
95+
{ PORTUGUESE_FOLDER, PORTUGUESE_ZONE_FOLDER },
96+
{ SPANISH_FOLDER, SPANISH_ZONE_FOLDER },
97+
{ ITALIAN_FOLDER, ITALIAN_ZONE_FOLDER },
98+
{ SCHINA_FOLDER, SCHINA_ZONE_FOLDER },
99+
{ TCHINA_FOLDER, TCHINA_ZONE_FOLDER }
100+
};
101+
102+
foreach (var entry in folderMap)
103+
{
104+
try
105+
{
106+
if (isReverting)
107+
{
108+
Helpers.MoveDirectoryTo(entry.Value, entry.Key);
109+
string langName = Path.GetFileName(entry.Key);
110+
string langVideoFolder = Path.Combine(RAW_VIDEO_FOLDER, langName);
111+
112+
Helpers.MoveSpecificFiles(langVideoFolder, entry.Key, "*.bik");
113+
Helpers.TryCleanupDirectory(langVideoFolder);
114+
}
115+
else
116+
{
117+
if (Directory.Exists(entry.Key))
118+
{
119+
string langName = Path.GetFileName(entry.Key);
120+
string langVideoTarget = Path.Combine(RAW_VIDEO_FOLDER, langName);
121+
Helpers.MoveSpecificFiles(entry.Key, langVideoTarget, "*.bik");
122+
Helpers.MoveDirectoryTo(entry.Key, entry.Value);
123+
}
124+
}
125+
}
126+
catch (Exception ex)
127+
{
128+
Helpers.WriteColor($"Error processing {entry.Key}: {ex.Message}", ConsoleColor.Red);
129+
}
130+
}
131+
}
132+
133+
private async Task RevertCleaning()
134+
{
135+
Helpers.WriteColor("Reverting Game Files...", ConsoleColor.Cyan);
136+
137+
string[] sourceFolders = { CLEAN_ZONE_FOLDER, CLEAN_RAW_VIDEO_FOLDER };
138+
139+
foreach (var folder in sourceFolders)
140+
{
141+
if (Directory.Exists(folder))
142+
{
143+
var files = Directory.GetFiles(folder, "*.*");
144+
if (files.Length > 0)
145+
{
146+
Helpers.MoveFileTo(files, "./");
147+
}
148+
}
149+
}
150+
151+
MoveLanguageFolders(isReverting: true);
152+
153+
Helpers.TryCleanupDirectory(CLEAN_RAW_VIDEO_FOLDER);
154+
Helpers.TryCleanupDirectory(RAW_VIDEO_FOLDER);
155+
Helpers.TryCleanupDirectory(RAW_FOLDER);
156+
Helpers.TryCleanupDirectory(CLEAN_ZONE_FOLDER);
157+
Helpers.TryCleanupDirectory(ZONE_FOLDER);
158+
159+
Helpers.WriteColor("Done Reverting Files\n", ConsoleColor.Green);
160+
}
161+
}
162+
}

Helpers.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ public static void EnsureDirectoriesExist(string[] requiredFolders)
3939
}
4040
}
4141

42+
public static void MoveSpecificFiles(string sourceDir, string destDir, string pattern)
43+
{
44+
if (!Directory.Exists(sourceDir)) return;
45+
if (!Directory.Exists(destDir)) Directory.CreateDirectory(destDir);
46+
47+
string[] files = Directory.GetFiles(sourceDir, pattern);
48+
foreach (var file in files)
49+
{
50+
string destFile = Path.Combine(destDir, Path.GetFileName(file));
51+
if (File.Exists(destFile)) File.Delete(destFile);
52+
File.Move(file, destFile);
53+
}
54+
}
55+
4256
public static void TryCleanupDirectory(string path)
4357
{
4458
try

Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class Program
66
{
77
private static readonly Base[] SupportedGames =
88
[
9-
new IW7()
9+
new IW7(),
10+
new S1()
1011
];
1112

1213
private static Base? DetectGame()

0 commit comments

Comments
 (0)