Civ6: Use AutoPatchRegister to make patch downloadable on webhost #4752

This commit is contained in:
qwint
2025-03-20 13:28:16 -05:00
committed by GitHub
parent 08d2909b0e
commit 74cbf10930

View File

@@ -1,9 +1,10 @@
from dataclasses import dataclass from dataclasses import dataclass
import os import os
import io
from typing import TYPE_CHECKING, Dict, List, Optional, cast from typing import TYPE_CHECKING, Dict, List, Optional, cast
import zipfile import zipfile
from BaseClasses import Location from BaseClasses import Location
from worlds.Files import APContainer from worlds.Files import APContainer, AutoPatchRegister
from .Enum import CivVICheckType from .Enum import CivVICheckType
from .Locations import CivVILocation, CivVILocationData from .Locations import CivVILocation, CivVILocationData
@@ -25,18 +26,22 @@ class CivTreeItem:
ui_tree_row: int ui_tree_row: int
class CivVIContainer(APContainer): class CivVIContainer(APContainer, metaclass=AutoPatchRegister):
""" """
Responsible for generating the dynamic mod files for the Civ VI multiworld Responsible for generating the dynamic mod files for the Civ VI multiworld
""" """
game: Optional[str] = "Civilization VI" game: Optional[str] = "Civilization VI"
patch_file_ending = ".apcivvi"
def __init__(self, patch_data: Dict[str, str], base_path: str, output_directory: str, def __init__(self, patch_data: Dict[str, str] | io.BytesIO, base_path: str = "", output_directory: str = "",
player: Optional[int] = None, player_name: str = "", server: str = ""): player: Optional[int] = None, player_name: str = "", server: str = ""):
self.patch_data = patch_data if isinstance(patch_data, io.BytesIO):
self.file_path = base_path super().__init__(patch_data, player, player_name, server)
container_path = os.path.join(output_directory, base_path + ".apcivvi") else:
super().__init__(container_path, player, player_name, server) self.patch_data = patch_data
self.file_path = base_path
container_path = os.path.join(output_directory, base_path + ".apcivvi")
super().__init__(container_path, player, player_name, server)
def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None: def write_contents(self, opened_zipfile: zipfile.ZipFile) -> None:
for filename, yml in self.patch_data.items(): for filename, yml in self.patch_data.items():