mirror of
https://github.com/ModOrganizer2/modorganizer-basic_games.git
synced 2026-07-27 14:07:29 -07:00
Add save file to W3 and DS2.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import sys
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Callable, Optional
|
||||
from typing import Callable, List, Optional, Type
|
||||
|
||||
from PyQt5.QtCore import QDateTime, Qt
|
||||
from PyQt5.QtGui import QPixmap, QImage
|
||||
@@ -13,23 +13,23 @@ import mobase
|
||||
|
||||
|
||||
class BasicGameSaveGame(mobase.ISaveGame):
|
||||
def __init__(self, filename):
|
||||
def __init__(self, filename: str):
|
||||
super().__init__()
|
||||
self._filename = filename
|
||||
|
||||
def getFilename(self):
|
||||
def getFilename(self) -> str:
|
||||
return self._filename
|
||||
|
||||
def getCreationTime(self):
|
||||
return QDateTime(Path(self._filename).stat().st_mtime)
|
||||
|
||||
def getSaveGroupIdentifier(self):
|
||||
def getSaveGroupIdentifier(self) -> str:
|
||||
return ""
|
||||
|
||||
def allFiles(self):
|
||||
def allFiles(self) -> List[str]:
|
||||
return [self._filename]
|
||||
|
||||
def hasScriptExtenderFile(self):
|
||||
def hasScriptExtenderFile(self) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
@@ -86,14 +86,19 @@ class BasicGameSaveGameInfoWidget(mobase.ISaveGameInfoWidget):
|
||||
|
||||
|
||||
class BasicGameSaveGameInfo(mobase.SaveGameInfo):
|
||||
def __init__(self, get_preview: Optional[Callable[[str], str]] = None):
|
||||
def __init__(
|
||||
self,
|
||||
get_preview: Optional[Callable[[str], str]] = None,
|
||||
savegame_class: Type[BasicGameSaveGame] = BasicGameSaveGame,
|
||||
):
|
||||
super().__init__()
|
||||
self._get_preview = get_preview
|
||||
self._savegame_class = savegame_class
|
||||
|
||||
def getSaveGameInfo(self, filename):
|
||||
return BasicGameSaveGame(filename)
|
||||
def getSaveGameInfo(self, filename: str):
|
||||
return self._savegame_class(filename)
|
||||
|
||||
def getMissingAssets(self, filename):
|
||||
def getMissingAssets(self, filename: str):
|
||||
return {}
|
||||
|
||||
def getSaveGameWidget(self, parent=None):
|
||||
@@ -101,5 +106,5 @@ class BasicGameSaveGameInfo(mobase.SaveGameInfo):
|
||||
return BasicGameSaveGameInfoWidget(parent, self._get_preview)
|
||||
return None
|
||||
|
||||
def hasScriptExtenderSave(self, filename):
|
||||
def hasScriptExtenderSave(self, filename: str):
|
||||
return False
|
||||
|
||||
+1
-1
@@ -416,7 +416,7 @@ class BasicGame(mobase.IPluginGame):
|
||||
for iniFile in self.iniFiles():
|
||||
shutil.copyfile(
|
||||
self.documentsDirectory().absoluteFilePath(iniFile),
|
||||
path.absoluteFilePath(iniFile),
|
||||
path.absoluteFilePath(QFileInfo(iniFile).fileName()),
|
||||
)
|
||||
|
||||
def primarySources(self):
|
||||
|
||||
@@ -69,8 +69,9 @@ class DungeonSiegeIIGame(BasicGame):
|
||||
GameSteamId = 39200
|
||||
GameBinary = "DungeonSiege2.exe"
|
||||
GameDataPath = ""
|
||||
|
||||
GameSavesDirectory = "%GAME_DOCUMENTS%/Save"
|
||||
GameDocumentsDirectory = "%DOCUMENTS%/My Games/Dungeon Siege 2"
|
||||
GameSaveExtension = "ds2party"
|
||||
|
||||
def init(self, organizer: mobase.IOrganizer):
|
||||
super().init(organizer)
|
||||
|
||||
@@ -4,9 +4,15 @@ import mobase
|
||||
|
||||
|
||||
from ..basic_game import BasicGame
|
||||
from ..basic_features.basic_save_game_info import BasicGameSaveGame
|
||||
from ..basic_features import BasicGameSaveGameInfo
|
||||
|
||||
|
||||
class Witcher3SaveGame(BasicGameSaveGame):
|
||||
def allFiles(self):
|
||||
return [self._filename, self._filename.replace(".sav", ".png")]
|
||||
|
||||
|
||||
class Witcher3Game(BasicGame):
|
||||
|
||||
Name = "Witcher 3 Support Plugin"
|
||||
@@ -28,7 +34,7 @@ class Witcher3Game(BasicGame):
|
||||
def init(self, organizer: mobase.IOrganizer):
|
||||
super().init(organizer)
|
||||
self._featureMap[mobase.SaveGameInfo] = BasicGameSaveGameInfo(
|
||||
lambda s: s.replace(".sav", ".png")
|
||||
lambda s: s.replace(".sav", ".png"), Witcher3SaveGame
|
||||
)
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user