from ..basic_game import BasicGame

import mobase


class DaggerfallUnityModDataChecker(mobase.ModDataChecker):
    def __init__(self):
        super().__init__()
        self.validDirNames = [
            "biogs",
            "docs",
            "factions",
            "fonts",
            "mods",
            "questpacks",
            "quests",
            "sound",
            "soundfonts",
            "spellicons",
            "tables",
            "text",
            "textures",
            "worlddata",
            "aa",
        ]

    def dataLooksValid(
        self, tree: mobase.IFileTree
    ) -> mobase.ModDataChecker.CheckReturn:
        for entry in tree:
            if not entry.isDir():
                continue
            if entry.name().casefold() in self.validDirNames:
                return mobase.ModDataChecker.VALID
        return mobase.ModDataChecker.INVALID


class DaggerfallUnityGame(BasicGame):
    def init(self, organizer: mobase.IOrganizer) -> bool:
        super().init(organizer)
        self._featureMap[mobase.ModDataChecker] = DaggerfallUnityModDataChecker()
        return True

    Name = "Daggerfall Unity Support Plugin"
    Author = "HomerSimpleton"
    Version = "1.0.0"

    GameName = "Daggerfall Unity"
    GameShortName = "daggerfallunity"
    GameBinary = "DaggerfallUnity.exe"
    GameLauncher = "DaggerfallUnity.exe"
    GameDataPath = "%GAME_PATH%/DaggerfallUnity_Data/StreamingAssets"
