예제 #1
0
def disable_bcml_gfx():
    if not util.get_settings("no_cemu"):
        settings = util.parse_cemu_settings()
        try:
            gpack = settings.getElementsByTagName("GraphicPack")[0]
        except IndexError:
            gpack = settings.createElement("GraphicPack")
            settings.appendChild(gpack)
        new_cemu = True
        entry: minidom.Element
        for entry in gpack.getElementsByTagName("Entry"):
            if new_cemu and entry.getElementsByTagName("filename"):
                new_cemu = False
            try:
                if ("bcml" in entry.getElementsByTagName("filename")
                    [0].childNodes[0].data.lower()):
                    gpack.removeChild(entry)
            except IndexError:
                if "bcml" in entry.getAttribute("filename").lower():
                    gpack.removeChild(entry)
        settings.writexml(
            (util.get_cemu_dir() / "settings.xml").open("w", encoding="utf-8"),
            addindent="    ",
            newl="\n",
        )
예제 #2
0
파일: _api.py 프로젝트: arkhamsaiyan/BCML
 def parse_cemu_settings(self, params):
     try:
         cemu = Path(params["folder"])
         set_path = cemu / "settings.xml"
         settings: minidom = util.parse_cemu_settings(set_path)
         game_dir: Path
         for entry in settings.getElementsByTagName(
                 "GameCache")[0].getElementsByTagName("Entry"):
             entry: minidom.Element
             path = entry.getElementsByTagName("path")[0].childNodes[0].data
             if "U-King" in path:
                 game_dir = Path(path).parent.parent / "content"
                 break
         if not game_dir:
             return {}
         mlc_path = Path(
             settings.getElementsByTagName("mlc_path")
             [0].childNodes[0].data)
         update_dir = util.guess_update_dir(mlc_path, game_dir)
         dlc_dir = util.guess_aoc_dir(mlc_path, game_dir)
         return {
             "game_dir": str(game_dir),
             "update_dir": str(update_dir) if update_dir else "",
             "dlc_dir": str(dlc_dir) if dlc_dir else "",
         }
     except Exception as err:  # pylint: disable=bare-except
         print(err)
         return {}
예제 #3
0
def enable_bcml_gfx():
    if util.get_settings("no_cemu"):
        return

    settings = util.parse_cemu_settings()
    try:
        gpack = settings.getElementsByTagName("GraphicPack")[0]
    except IndexError:
        gpack = settings.createElement("GraphicPack")
        settings.appendChild(gpack)
    new_cemu = True

    def create_entry(path: str):
        def entry_matches(entry):
            try:
                return (path == entry.getElementsByTagName("filename")
                        [0].childNodes[0].data)
            except IndexError:
                return path == entry.getAttribute("filename")

        if any(
                entry_matches(entry)
                for entry in gpack.getElementsByTagName("Entry")):
            return
        entry: minidom.Element = settings.createElement("Entry")
        if new_cemu:
            entry.setAttribute("filename", path)
        else:
            entryfile = settings.createElement("filename")
            entryfile.appendChild(settings.createTextNode(path))
            entry.appendChild(entryfile)
        entrypreset = settings.createElement("preset")
        entrypreset.appendChild(settings.createTextNode(""))
        entry.appendChild(entrypreset)
        gpack.appendChild(entry)

    create_entry("graphicPacks\\BreathOfTheWild_BCML\\rules.txt")

    if (util.get_cemu_dir() / "graphicPacks" / "bcmlPatches").exists():
        for rules in (util.get_cemu_dir() / "graphicPacks" /
                      "bcmlPatches").rglob("rules.txt"):
            create_entry(str(rules.relative_to(util.get_cemu_dir())))

        settings.writexml(
            (util.get_cemu_dir() / "settings.xml").open("w", encoding="utf-8"),
            addindent="    ",
            newl="\n",
        )
예제 #4
0
def refresh_master_export():
    print("Exporting merged mod pack...")
    link_master_mod()
    if not util.get_settings("no_cemu"):
        settings = util.parse_cemu_settings()
        try:
            gpack = settings.getElementsByTagName("GraphicPack")[0]
        except IndexError:
            gpack = settings.createElement("GraphicPack")
            settings.appendChild(gpack)
        new_cemu = True
        entry: minidom.Element
        for entry in gpack.getElementsByTagName("Entry"):
            if new_cemu and entry.getElementsByTagName("filename"):
                new_cemu = False
            try:
                if "BCML" in entry.getElementsByTagName(
                        "filename")[0].childNodes[0].data:
                    break
            except IndexError:
                if "BCML" in entry.getAttribute("filename"):
                    break
        else:
            bcmlentry = settings.createElement("Entry")
            if new_cemu:
                bcmlentry.setAttribute(
                    "filename",
                    "graphicPacks\\BreathOfTheWild_BCML\\rules.txt")
            else:
                entryfile = settings.createElement("filename")
                entryfile.appendChild(
                    settings.createTextNode(
                        "graphicPacks\\BreathOfTheWild_BCML\\rules.txt"))
                bcmlentry.appendChild(entryfile)
            entrypreset = settings.createElement("preset")
            entrypreset.appendChild(settings.createTextNode(""))
            bcmlentry.appendChild(entrypreset)
            gpack.appendChild(bcmlentry)
            settings.writexml(
                (util.get_cemu_dir() / "settings.xml").open("w",
                                                            encoding="utf-8"),
                addindent="    ",
                newl="\n",
            )