Add save file to W3 and DS2.

This commit is contained in:
Mikaël Capelle
2020-10-17 12:53:31 +02:00
parent 9b600555ba
commit 53ad1f4f0c
4 changed files with 26 additions and 14 deletions
+16 -11
View File
@@ -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
View File
@@ -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):
+2 -1
View File
@@ -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)
+7 -1
View File
@@ -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