add create new game

This commit is contained in:
2024-09-22 00:01:56 +02:00
parent da6bf7333c
commit 616bf5e36e

View File

@@ -16,7 +16,7 @@ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class SatiAPI: class SatiAPI:
"""A API wrapper for Satisfactory dedicated server""" """A API wrapper for Satisfactory dedicated server"""
__AUTHOR__ = 'anima' __AUTHOR__ = 'anima'
__VERSION__ = '0.11.3' __VERSION__ = '0.13.1'
def __init__(self, host: str = None, port: int = 7777, token: str = None, conffile: str = 'conf.yml', logfile: str = 'SatiAPI.log', loglevel: int = 20) -> None: def __init__(self, host: str = None, port: int = 7777, token: str = None, conffile: str = 'conf.yml', logfile: str = 'SatiAPI.log', loglevel: int = 20) -> None:
"""create a wrapper for satisfactory dedicated server """create a wrapper for satisfactory dedicated server
@@ -394,12 +394,50 @@ class SatiAPI:
return self.__query('HealthCheck', data) return self.__query('HealthCheck', data)
def get_sessions(self): def get_sessions(self):
"""Enumerates all save game files available on the Dedicated Server. Requires Admin privileges. Function does not require any additional parameters.
:return: List of sessions available on the Dedicated Server
:rtype: dict
"""
return self.__query('EnumerateSessions', auth=True) return self.__query('EnumerateSessions', auth=True)
# def create_new_game(self, sessionname, startlocation) -> bool: def create_new_game(self, sessionname: str = None, startLocation: str | int = None) -> bool:
# data = dict() """Creates a new session on the Dedicated Server, and immediately loads it. HTTPS API becomes temporarily unavailable when map loading is in progress | Function does not return any data on success.
# data['NewGameData']
# pass :param sessionname: name of session / world
:type sessionname: string
:param startLocation: selected starting location int or full name (1 = Grass Fields, 2 = Rocky Desert, 3 = Northern Forest, 4 = Dune Destert)
:type startLocation: str | int
:return: true if new session successfull created
:rtype: bool
"""
if not isinstance(sessionname, str):
self._log.error('can not create new game because session name is invalid')
return False
match startLocation:
case 1 | '1' | 'Grass Fields':
startLocation = 'Grass Fields'
case 2 | '2' | 'Rocky Desert':
startLocation = 'Rocky Desert'
case 3 | '3' | 'Northern Forest':
startLocation = 'Northern Forest'
case 4 | '4' | 'Dune Desert':
startLocation = 'Dune Desert' # not working ...
case _:
startLocation = ''
self._log.debug(f'matched {startLocation=}')
data = dict()
data['NewGameData'] = dict()
data['NewGameData']['SessionName'] = sessionname
data['NewGameData']['MapName'] = ''
data['NewGameData']['StartingLocation'] = startLocation
# TODO: add advanced start options
response = self.__query('CreateNewGame', data, True)
return response
def get_server_options(self) -> dict: def get_server_options(self) -> dict:
"""Retrieves currently applied server options and server options that are still pending application (because of needing session or server restart) Does not require input parameters. """Retrieves currently applied server options and server options that are still pending application (because of needing session or server restart) Does not require input parameters.
@@ -426,7 +464,6 @@ class SatiAPI:
#ApplyServerOptions #ApplyServerOptions
#ApplyAdvancedGameSettings #ApplyAdvancedGameSettings
#CreateNewGame
#SaveGame #SaveGame
#LoadGame #LoadGame
#DownloadSaveGame #DownloadSaveGame
@@ -434,11 +471,13 @@ class SatiAPI:
#DeleteSaveFile #DeleteSaveFile
#DeleteSaveSession #DeleteSaveSession
#EnumerateSessions
if __name__ == "__main__": if __name__ == "__main__":
sati = SatiAPI(loglevel=10) sati = SatiAPI(loglevel=10)
# print('Verbundene Spieler: ', sati.get_status()['serverGameState']['numConnectedPlayers']) # print('Verbundene Spieler: ', sati.get_status()['serverGameState']['numConnectedPlayers'])
print(sati.get_status()) print(sati.get_status())
print()
print(sati.get_sessions()) print(sati.get_sessions())
print()
print(sati.create_new_game('MyWorld', 2))