Skip to content

Commit 1dc56f7

Browse files
committed
Removed Redundant Code, Fixes for Raid Mod Installs
1 parent 19b1ee1 commit 1dc56f7

4 files changed

Lines changed: 169 additions & 202 deletions

File tree

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,12 @@ venv
1010
mob.log
1111
vsbuild
1212
lib
13+
/.vs/modorganizer-basic_games/CopilotIndices
14+
/pyproject.toml
15+
/pyrightconfig.json
16+
/.vs/VSWorkspaceState.json
17+
/.vs/slnx.sqlite
18+
/.vs/modorganizer-basic_games.slnx/copilot-chat/5bceb36a/sessions
19+
/.vs/modorganizer-basic_games.slnx/FileContentIndex
20+
*.json
21+
*.wsuo

games/game_payday1.py

Lines changed: 44 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ..basic_game import BasicGame
2121

2222

23-
def sanitize_folder_name(name: str) -> str:
23+
def sanitizeFolderName(name: str) -> str:
2424
# Remove invalid characters for Windows folder names
2525
invalid_chars = '+&<>:"|?*\\/'
2626
for char in invalid_chars:
@@ -136,7 +136,7 @@ def fixInstalledMod(self, mod: mobase.IModInterface):
136136
return
137137
filetree: mobase.IFileTree = mod.fileTree()
138138
fixed = False
139-
modname = sanitize_folder_name(mod.name())
139+
modname = sanitizeFolderName(mod.name())
140140
if filetree.exists("mods/FOLDERNAME", mobase.IFileTree.DIRECTORY):
141141
path = mod.absolutePath()
142142
old_path = os.path.join(path, "mods/FOLDERNAME")
@@ -181,20 +181,6 @@ def dataLooksValid(
181181
return mobase.ModDataChecker.VALID
182182
return mobase.ModDataChecker.FIXABLE
183183

184-
def fileExistsInNextSubDir(self, filetree: mobase.IFileTree, name: str):
185-
for branch in filetree:
186-
if isinstance(branch, mobase.IFileTree):
187-
for e in branch:
188-
if e.name() == name:
189-
return True
190-
return False
191-
192-
def firstTree(self, filetree: mobase.IFileTree) -> mobase.IFileTree | None:
193-
for e in filetree:
194-
if isinstance(e, mobase.IFileTree) and e.isDir():
195-
return e
196-
return None
197-
198184
def moveTreeContent(
199185
self,
200186
sourcetree: mobase.IFileTree,
@@ -277,6 +263,7 @@ def collectModCandidates(
277263
self, tree: mobase.IFileTree | mobase.FileTreeEntry
278264
) -> bool:
279265
if isinstance(tree, mobase.IFileTree):
266+
sanitizedName = sanitizeFolderName(tree.name())
280267
hasDisallowedPath = False
281268
disallowedFolders = {"assets", "levels", "lua", "map_replacements"}
282269
tree_path = tree.path()
@@ -287,65 +274,53 @@ def collectModCandidates(
287274
tree.exists(validFolder, mobase.IFileTree.DIRECTORY)
288275
for validFolder in self.folderList
289276
)
290-
if (
291-
tree.exists("mod.txt", mobase.IFileTree.FILE)
292-
and not hasFolderListSubfolder
293-
):
294-
self.addModDetectionCandidate(
295-
tree,
296-
sanitize_folder_name(tree.name()),
297-
"Mods Folder with mod.txt",
298-
"mods/FOLDERNAME/",
299-
)
300-
return True
301-
elif (
302-
tree.exists("main.xml", mobase.IFileTree.FILE)
303-
and tree.exists("levels", mobase.IFileTree.DIRECTORY)
304-
and not hasDisallowedPath
305-
):
306-
self.addModDetectionCandidate(
307-
tree,
308-
sanitize_folder_name(tree.name()),
309-
"Maps Folder with main.xml and levels folder",
310-
"maps/FOLDERNAME/",
311-
)
312-
return True
313-
elif (
314-
tree.exists("main.xml", mobase.IFileTree.FILE)
315-
or tree.exists("add.xml", mobase.IFileTree.FILE)
316-
or tree.exists("supermod.xml", mobase.IFileTree.FILE)
317-
):
318-
if not hasDisallowedPath:
277+
if not hasDisallowedPath:
278+
if (
279+
tree.exists("mod.txt", mobase.IFileTree.FILE)
280+
and not hasFolderListSubfolder
281+
):
282+
self.addModDetectionCandidate(
283+
tree,
284+
sanitizeFolderName(tree.name()),
285+
"BLT",
286+
"mods/" + sanitizedName + "/",
287+
)
288+
return True
289+
elif tree.exists("main.xml", mobase.IFileTree.FILE) and tree.exists(
290+
"levels", mobase.IFileTree.DIRECTORY
291+
):
319292
self.addModDetectionCandidate(
320293
tree,
321-
sanitize_folder_name(tree.name()),
322-
"Mod Override Folder with main.xml/add.xml",
323-
"assets/mod_overrides/FOLDERNAME/",
294+
sanitizeFolderName(tree.name()),
295+
"Map Core",
296+
"maps/" + sanitizedName + "/",
324297
)
325298
return True
326-
elif tree.exists("mod_overrides", mobase.IFileTree.DIRECTORY):
327-
sourcetree = tree.find("mod_overrides", mobase.IFileTree.DIRECTORY)
328-
if isinstance(sourcetree, mobase.IFileTree):
299+
elif (
300+
tree.exists("main.xml", mobase.IFileTree.FILE)
301+
or tree.exists("add.xml", mobase.IFileTree.FILE)
302+
or tree.exists("supermod.xml", mobase.IFileTree.FILE)
303+
):
329304
self.addModDetectionCandidate(
330-
sourcetree,
331-
sanitize_folder_name(sourcetree.name()),
332-
"Mod Override Folder",
333-
"assets/mod_overrides/FOLDERNAME/",
305+
tree,
306+
sanitizeFolderName(tree.name()),
307+
"SuperBLT",
308+
"assets/mod_overrides/" + sanitizedName + "/",
334309
)
335310
return True
336-
elif not hasDisallowedPath:
337-
for validFolder in self.folderList:
338-
if tree.exists(validFolder, mobase.IFileTree.DIRECTORY):
339-
self.addModDetectionCandidate(
340-
tree,
341-
sanitize_folder_name(tree.name()),
342-
"Fallback Mod Override Folder",
343-
"assets/mod_overrides/FOLDERNAME/",
344-
)
345-
return True
311+
else:
312+
for validFolder in self.folderList:
313+
if tree.exists(validFolder, mobase.IFileTree.DIRECTORY):
314+
self.addModDetectionCandidate(
315+
tree,
316+
sanitizeFolderName(tree.name()),
317+
"Override",
318+
"assets/mod_overrides/" + sanitizedName + "/",
319+
)
320+
return True
346321
return False
347322

348-
def walk_entry(self, path: str, entry: mobase.FileTreeEntry):
323+
def walkEntry(self, path: str, entry: mobase.FileTreeEntry):
349324
if entry.isDir():
350325
if isinstance(entry, mobase.IFileTree):
351326
self.collectModCandidates(entry)
@@ -355,7 +330,7 @@ def fix(self, filetree: mobase.IFileTree) -> mobase.IFileTree | None:
355330
self.modDetectionCandidates = []
356331
newtree = filetree.createOrphanTree("Fixed Tree")
357332

358-
filetree.walk(self.walk_entry, "/")
333+
filetree.walk(self.walkEntry, "/")
359334

360335
if len(self.modDetectionCandidates) == 1:
361336
selectedIndexes = {0}
@@ -366,10 +341,6 @@ def fix(self, filetree: mobase.IFileTree) -> mobase.IFileTree | None:
366341

367342
for index in selectedIndexes:
368343
candidate = self.modDetectionCandidates[index]
369-
candidate["destination"] = candidate["destination"].replace(
370-
"FOLDERNAME",
371-
candidate["name"],
372-
)
373344
if isinstance(candidate["tree"], mobase.IFileTree):
374345
print(
375346
f"Installing Mod: {candidate['name']} to {candidate['destination']}"
@@ -404,7 +375,7 @@ def init(self, organizer: mobase.IOrganizer) -> bool:
404375
self.dataChecker = Payday1ModDataChecker(organizer)
405376
self._register_feature(self.dataChecker)
406377
self._register_feature(Payday1ModDataContent())
407-
organizer.modList().onModStateChanged(self.dll_copy)
378+
organizer.modList().onModStateChanged(self.dllCopy)
408379
return True
409380

410381
def executables(self):
@@ -415,7 +386,7 @@ def executables(self):
415386
)
416387
]
417388

418-
def dll_copy(self, mods: dict[str, mobase.ModState]):
389+
def dllCopy(self, mods: dict[str, mobase.ModState]):
419390
game_path = self.dataDirectory().absolutePath() + "/"
420391

421392
for key, value in mods.items():

games/game_payday2.py

Lines changed: 40 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ..basic_game import BasicGame
2121

2222

23-
def sanitize_folder_name(name: str) -> str:
23+
def sanitizeFolderName(name: str) -> str:
2424
# Remove invalid characters for Windows folder names
2525
invalid_chars = '+&<>:"|?*\\/'
2626
for char in invalid_chars:
@@ -136,7 +136,7 @@ def fixInstalledMod(self, mod: mobase.IModInterface):
136136
return
137137
filetree: mobase.IFileTree = mod.fileTree()
138138
fixed = False
139-
modname = sanitize_folder_name(mod.name())
139+
modname = sanitizeFolderName(mod.name())
140140
if filetree.exists("mods/FOLDERNAME", mobase.IFileTree.DIRECTORY):
141141
path = mod.absolutePath()
142142
old_path = os.path.join(path, "mods/FOLDERNAME")
@@ -181,20 +181,6 @@ def dataLooksValid(
181181
return mobase.ModDataChecker.VALID
182182
return mobase.ModDataChecker.FIXABLE
183183

184-
def fileExistsInNextSubDir(self, filetree: mobase.IFileTree, name: str):
185-
for branch in filetree:
186-
if isinstance(branch, mobase.IFileTree):
187-
for e in branch:
188-
if e.name() == name:
189-
return True
190-
return False
191-
192-
def firstTree(self, filetree: mobase.IFileTree) -> mobase.IFileTree | None:
193-
for e in filetree:
194-
if isinstance(e, mobase.IFileTree) and e.isDir():
195-
return e
196-
return None
197-
198184
def moveTreeContent(
199185
self,
200186
sourcetree: mobase.IFileTree,
@@ -277,6 +263,7 @@ def collectModCandidates(
277263
self, tree: mobase.IFileTree | mobase.FileTreeEntry
278264
) -> bool:
279265
if isinstance(tree, mobase.IFileTree):
266+
sanitizedName = sanitizeFolderName(tree.name())
280267
hasDisallowedPath = False
281268
disallowedFolders = {"assets", "levels", "lua", "map_replacements"}
282269
tree_path = tree.path()
@@ -287,62 +274,50 @@ def collectModCandidates(
287274
tree.exists(validFolder, mobase.IFileTree.DIRECTORY)
288275
for validFolder in self.folderList
289276
)
290-
if (
291-
tree.exists("mod.txt", mobase.IFileTree.FILE)
292-
and not hasFolderListSubfolder
293-
):
294-
self.addModDetectionCandidate(
295-
tree,
296-
sanitize_folder_name(tree.name()),
297-
"Mods Folder with mod.txt",
298-
"mods/FOLDERNAME/",
299-
)
300-
return True
301-
elif (
302-
tree.exists("main.xml", mobase.IFileTree.FILE)
303-
and tree.exists("levels", mobase.IFileTree.DIRECTORY)
304-
and not hasDisallowedPath
305-
):
306-
self.addModDetectionCandidate(
307-
tree,
308-
sanitize_folder_name(tree.name()),
309-
"Maps Folder with main.xml and levels folder",
310-
"maps/FOLDERNAME/",
311-
)
312-
return True
313-
elif (
314-
tree.exists("main.xml", mobase.IFileTree.FILE)
315-
or tree.exists("add.xml", mobase.IFileTree.FILE)
316-
or tree.exists("supermod.xml", mobase.IFileTree.FILE)
317-
):
318-
if not hasDisallowedPath:
277+
if not hasDisallowedPath:
278+
if (
279+
tree.exists("mod.txt", mobase.IFileTree.FILE)
280+
and not hasFolderListSubfolder
281+
):
282+
self.addModDetectionCandidate(
283+
tree,
284+
sanitizeFolderName(tree.name()),
285+
"SuperBLT",
286+
"mods/" + sanitizedName + "/",
287+
)
288+
return True
289+
elif tree.exists("main.xml", mobase.IFileTree.FILE) and tree.exists(
290+
"levels", mobase.IFileTree.DIRECTORY
291+
):
319292
self.addModDetectionCandidate(
320293
tree,
321-
sanitize_folder_name(tree.name()),
322-
"Mod Override Folder with main.xml/add.xml",
323-
"assets/mod_overrides/FOLDERNAME/",
294+
sanitizeFolderName(tree.name()),
295+
"Map Core",
296+
"maps/" + sanitizedName + "/",
324297
)
325298
return True
326-
elif tree.exists("mod_overrides", mobase.IFileTree.DIRECTORY):
327-
sourcetree = tree.find("mod_overrides", mobase.IFileTree.DIRECTORY)
328-
if isinstance(sourcetree, mobase.IFileTree):
299+
elif (
300+
tree.exists("main.xml", mobase.IFileTree.FILE)
301+
or tree.exists("add.xml", mobase.IFileTree.FILE)
302+
or tree.exists("supermod.xml", mobase.IFileTree.FILE)
303+
):
329304
self.addModDetectionCandidate(
330-
sourcetree,
331-
sanitize_folder_name(sourcetree.name()),
332-
"Mod Override Folder",
333-
"assets/mod_overrides/FOLDERNAME/",
305+
tree,
306+
sanitizeFolderName(tree.name()),
307+
"Beard Lib",
308+
"assets/mod_overrides/" + sanitizedName + "/",
334309
)
335310
return True
336-
elif not hasDisallowedPath:
337-
for validFolder in self.folderList:
338-
if tree.exists(validFolder, mobase.IFileTree.DIRECTORY):
339-
self.addModDetectionCandidate(
340-
tree,
341-
sanitize_folder_name(tree.name()),
342-
"Fallback Mod Override Folder",
343-
"assets/mod_overrides/FOLDERNAME/",
344-
)
345-
return True
311+
else:
312+
for validFolder in self.folderList:
313+
if tree.exists(validFolder, mobase.IFileTree.DIRECTORY):
314+
self.addModDetectionCandidate(
315+
tree,
316+
sanitizeFolderName(tree.name()),
317+
"Override",
318+
"assets/mod_overrides/" + sanitizedName + "/",
319+
)
320+
return True
346321
return False
347322

348323
def walk_entry(self, path: str, entry: mobase.FileTreeEntry):
@@ -366,10 +341,6 @@ def fix(self, filetree: mobase.IFileTree) -> mobase.IFileTree | None:
366341

367342
for index in selectedIndexes:
368343
candidate = self.modDetectionCandidates[index]
369-
candidate["destination"] = candidate["destination"].replace(
370-
"FOLDERNAME",
371-
candidate["name"],
372-
)
373344
if isinstance(candidate["tree"], mobase.IFileTree):
374345
print(
375346
f"Installing Mod: {candidate['name']} to {candidate['destination']}"

0 commit comments

Comments
 (0)