mirror of
https://github.com/ModOrganizer2/modorganizer-basic_games.git
synced 2026-07-27 14:07:29 -07:00
Fix DS2 and Stardew Valley following MO2 changes.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
from typing import List, Tuple
|
||||
|
||||
from PyQt5.QtCore import QFileInfo
|
||||
|
||||
import mobase
|
||||
@@ -7,7 +9,55 @@ import mobase
|
||||
from ..basic_game import BasicGame
|
||||
|
||||
|
||||
class DarkMessiahOfMightAndMagicGame(BasicGame):
|
||||
class DungeonSiegeIIModDataChecker(mobase.ModDataChecker):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def get_resources_and_maps(
|
||||
self, tree: mobase.IFileTree
|
||||
) -> Tuple[List[mobase.FileTreeEntry], List[mobase.FileTreeEntry]]:
|
||||
|
||||
ress: List[mobase.FileTreeEntry] = []
|
||||
maps: List[mobase.FileTreeEntry] = []
|
||||
|
||||
for e in tree:
|
||||
if e.isFile():
|
||||
if e.suffix().lower() == "ds2res":
|
||||
ress.append(e)
|
||||
elif e.suffix().lower() == "ds2map":
|
||||
maps.append(e)
|
||||
|
||||
return ress, maps
|
||||
|
||||
def dataLooksValid(
|
||||
self, tree: mobase.IFileTree
|
||||
) -> mobase.ModDataChecker.CheckReturn:
|
||||
# Check if we have a Resources / Maps folder or .ds2res/.ds2map
|
||||
ress, maps = self.get_resources_and_maps(tree)
|
||||
|
||||
if not ress and not maps:
|
||||
if tree.exists("Resources") or tree.exists("Maps"):
|
||||
return mobase.ModDataChecker.VALID
|
||||
else:
|
||||
return mobase.ModDataChecker.INVALID
|
||||
|
||||
return mobase.ModDataChecker.FIXABLE
|
||||
|
||||
def fix(self, tree: mobase.IFileTree) -> mobase.IFileTree:
|
||||
ress, maps = self.get_resources_and_maps(tree)
|
||||
|
||||
if ress:
|
||||
rfolder = tree.addDirectory("Resources")
|
||||
for r in ress:
|
||||
rfolder.insert(r, mobase.IFileTree.REPLACE)
|
||||
if maps:
|
||||
rfolder = tree.addDirectory("Maps")
|
||||
for r in maps:
|
||||
rfolder.insert(r, mobase.IFileTree.REPLACE)
|
||||
return tree
|
||||
|
||||
|
||||
class DungeonSiegeIIGame(BasicGame):
|
||||
Name = "Dungeon Siege II"
|
||||
Author = "Holt59"
|
||||
Version = "0.1.0"
|
||||
@@ -24,6 +74,7 @@ class DarkMessiahOfMightAndMagicGame(BasicGame):
|
||||
|
||||
def init(self, organizer: mobase.IOrganizer):
|
||||
super().init(organizer)
|
||||
self._featureMap[mobase.ModDataChecker] = DungeonSiegeIIModDataChecker()
|
||||
return True
|
||||
|
||||
def executables(self):
|
||||
|
||||
@@ -11,15 +11,17 @@ class StardewValleyModDataChecker(mobase.ModDataChecker):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def getDataFolderName(self) -> str:
|
||||
return "mods"
|
||||
|
||||
def dataLooksValid(self, tree: mobase.IFileTree) -> bool:
|
||||
def dataLooksValid(
|
||||
self, tree: mobase.IFileTree
|
||||
) -> mobase.ModDataChecker.CheckReturn:
|
||||
count_ok = 0
|
||||
for e in tree:
|
||||
if e.isDir():
|
||||
count_ok = e.exists("manifest.json", mobase.IFileTree.FILE) # type: ignore
|
||||
return count_ok > 0
|
||||
|
||||
if count_ok > 0:
|
||||
return mobase.ModDataChecker.VALID
|
||||
return mobase.ModDataChecker.INVALID
|
||||
|
||||
|
||||
class StardewValleyGame(BasicGame):
|
||||
|
||||
Reference in New Issue
Block a user