2021-07-18 10:33:08 +02:00
|
|
|
from typing import List, Optional
|
2020-08-06 12:06:37 +02:00
|
|
|
|
|
|
|
|
import mobase
|
|
|
|
|
|
|
|
|
|
from ..basic_game import BasicGame
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ZeusAndPoseidonModDataChecker(mobase.ModDataChecker):
|
|
|
|
|
def __init__(self):
|
|
|
|
|
super().__init__()
|
|
|
|
|
|
|
|
|
|
def dataLooksValid(
|
2023-09-15 19:35:32 -05:00
|
|
|
self, filetree: mobase.IFileTree
|
2020-08-06 12:06:37 +02:00
|
|
|
) -> mobase.ModDataChecker.CheckReturn:
|
|
|
|
|
folders: List[mobase.IFileTree] = []
|
|
|
|
|
files: List[mobase.FileTreeEntry] = []
|
|
|
|
|
|
2023-09-15 19:35:32 -05:00
|
|
|
for entry in filetree:
|
2020-08-06 12:06:37 +02:00
|
|
|
if isinstance(entry, mobase.IFileTree):
|
|
|
|
|
folders.append(entry)
|
|
|
|
|
else:
|
|
|
|
|
files.append(entry)
|
|
|
|
|
|
|
|
|
|
if len(folders) != 1:
|
|
|
|
|
return mobase.ModDataChecker.INVALID
|
|
|
|
|
|
|
|
|
|
folder = folders[0]
|
|
|
|
|
pakfile = folder.name() + ".pak"
|
|
|
|
|
if folder.exists(pakfile):
|
2023-09-15 19:35:32 -05:00
|
|
|
if filetree.exists(pakfile):
|
2020-08-06 12:06:37 +02:00
|
|
|
return mobase.ModDataChecker.VALID
|
|
|
|
|
else:
|
|
|
|
|
return mobase.ModDataChecker.FIXABLE
|
|
|
|
|
|
|
|
|
|
return mobase.ModDataChecker.INVALID
|
|
|
|
|
|
2023-09-15 19:35:32 -05:00
|
|
|
def fix(self, filetree: mobase.IFileTree) -> Optional[mobase.IFileTree]:
|
|
|
|
|
first_entry = filetree[0]
|
|
|
|
|
if not isinstance(first_entry, mobase.IFileTree):
|
2020-08-06 12:06:37 +02:00
|
|
|
return None
|
2023-09-15 19:35:32 -05:00
|
|
|
entry = first_entry.find(filetree[0].name() + ".pak")
|
2020-08-06 12:06:37 +02:00
|
|
|
if entry is None:
|
|
|
|
|
return None
|
2023-09-15 19:35:32 -05:00
|
|
|
filetree.copy(entry, "", mobase.IFileTree.InsertPolicy.FAIL_IF_EXISTS)
|
|
|
|
|
return filetree
|
2020-08-06 12:06:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ZeusAndPoseidonGame(BasicGame):
|
|
|
|
|
Name = "Zeus and Poseidon Support Plugin"
|
|
|
|
|
Author = "Holt59"
|
|
|
|
|
Version = "1.0.0a"
|
|
|
|
|
|
|
|
|
|
GameName = "Zeus and Poseidon"
|
|
|
|
|
GameShortName = "zeusandposeidon" # No Nexus support
|
|
|
|
|
GameSteamId = 566050
|
|
|
|
|
GameGogId = 1207659039
|
|
|
|
|
GameBinary = "Zeus.exe"
|
|
|
|
|
GameDataPath = "Adventures"
|
|
|
|
|
GameDocumentsDirectory = "%GAME_PATH%"
|
|
|
|
|
GameSavesDirectory = "%GAME_PATH%/Save"
|
|
|
|
|
GameSaveExtension = "sav"
|
2021-12-27 00:57:18 -07:00
|
|
|
GameSupportURL = (
|
|
|
|
|
r"https://github.com/ModOrganizer2/modorganizer-basic_games/wiki/"
|
|
|
|
|
"Game:-Zeus%EF%BC%8BPoseidon"
|
|
|
|
|
)
|
2020-08-06 12:06:37 +02:00
|
|
|
|
|
|
|
|
def init(self, organizer: mobase.IOrganizer):
|
|
|
|
|
super().init(organizer)
|
2024-06-09 12:25:46 +02:00
|
|
|
self._register_feature(ZeusAndPoseidonModDataChecker())
|
2020-08-06 12:06:37 +02:00
|
|
|
return True
|