From 7f33acf8ea0f98ef60920e596774d199a21e3034 Mon Sep 17 00:00:00 2001 From: argoneus Date: Sat, 16 May 2020 15:38:56 +0200 Subject: [PATCH] fixed diva quest --- db/base.py | 2 +- db/quest.py | 24 ++++++++++++++++-------- diva/quest.py | 49 ++++++++++++++++++++++++++++++++----------------- 3 files changed, 49 insertions(+), 26 deletions(-) diff --git a/db/base.py b/db/base.py index afa5817..80132be 100644 --- a/db/base.py +++ b/db/base.py @@ -23,7 +23,7 @@ class BaseDB(object): return self def __exit__(self, exc_type, exc_value, traceback): - self.quest_conn.close() + self.conn.close() def attach_dbs(self, databases, path): for d in databases: diff --git a/db/quest.py b/db/quest.py index c4b13f8..7054e94 100644 --- a/db/quest.py +++ b/db/quest.py @@ -1,16 +1,24 @@ from .base import BaseDB -DATABASES = { - "QuestMst.db": "Quest", - "QuestSceneMst.db": "QuestScene", - "QuestPartMst.db": "QuestPart", - "ResourceEntry.db": "ResourceEntry", -} + +def get_dbs_by_lang(language=None): + databases = { + "QuestMst": "Quest", + "QuestSceneMst": "QuestScene", + "QuestPartMst": "QuestPart", + "ResourceEntry": "ResourceEntry", + } + for key in list(databases): + if not language: + databases[key + ".db"] = databases.pop(key) + else: + databases[key + "_" + language + ".db"] = databases.pop(key) + return databases class QuestDB(BaseDB): - def __init__(self, path): - super().__init__(path, DATABASES) + def __init__(self, path, language=None): + super().__init__(path, get_dbs_by_lang(language)) def get_quests(self): self.cursor.execute( diff --git a/diva/quest.py b/diva/quest.py index a7d2a72..7af5214 100644 --- a/diva/quest.py +++ b/diva/quest.py @@ -10,15 +10,22 @@ from glob import glob def update_missions(dir_in, old_path, languages, is_global, utage_in=None): if not utage_in: utage_in = os.path.join(dir_in, "Common/Asset/Utage") - qdb = db.QuestDB(dir_in) - quest_mst(qdb, old_path, languages) - scene_mst(qdb, old_path, dir_in, languages, utage_in) + if is_global: + languages = ["enm", "zho", "kor"] + for lang in languages: + qdb = db.QuestDB(dir_in, lang) + quest_mst(qdb, old_path, [lang], is_global) + scene_mst(qdb, old_path, [lang], utage_in, is_global) + else: + qdb = db.QuestDB(dir_in) + quest_mst(qdb, old_path, languages, is_global) + scene_mst(qdb, old_path, languages, utage_in, is_global) -def scene_mst(qdb, old_path, dir_in, languages, utage_in): +def scene_mst(qdb, old_path, languages, utage_in, is_global): scenes = qdb.get_scenes() - locations = load_locations(dir_in, utage_in) + locations = load_locations(utage_in) for id, scene in scenes.items(): i = 0 @@ -28,18 +35,23 @@ def scene_mst(qdb, old_path, dir_in, languages, utage_in): except KeyError as exc: i += 1 if i == len(scene["Parts"]): + if is_global: + break raise KeyError(f"Could not find folder for scene {id}") from exc continue break - with io.open( - os.path.join(old_path, "XduScene.json"), "w", encoding="utf-8" - ) as json_file: - json.dump(scenes, json_file, ensure_ascii=False, indent="\t", sort_keys=True) + if not is_global: + with io.open( + os.path.join(old_path, "XduScene.json"), "w", encoding="utf-8" + ) as json_file: + json.dump( + scenes, json_file, ensure_ascii=False, indent="\t", sort_keys=True + ) for lang in languages: out_dict = {} - if lang == "jpn": + if lang == "jpn" or is_global: for key, value in scenes.items(): out_dict[key] = { "Name": value["Name"], @@ -68,17 +80,20 @@ def scene_mst(qdb, old_path, dir_in, languages, utage_in): ) -def quest_mst(qdb, old_path, languages): +def quest_mst(qdb, old_path, languages, is_global): quests = qdb.get_quests() - with io.open( - os.path.join(old_path, "XduQuest.json"), "w", encoding="utf-8" - ) as json_file: - json.dump(quests, json_file, ensure_ascii=False, indent="\t", sort_keys=True) + if not is_global: + with io.open( + os.path.join(old_path, "XduQuest.json"), "w", encoding="utf-8" + ) as json_file: + json.dump( + quests, json_file, ensure_ascii=False, indent="\t", sort_keys=True + ) for lang in languages: out_dict = {} - if lang == "jpn": + if lang == "jpn" or is_global: for key, value in quests.items(): out_dict[key] = {"Name": value["Name"], "Enabled": False} else: @@ -99,7 +114,7 @@ def quest_mst(qdb, old_path, languages): return quests -def load_locations(dir_in, utage_in): +def load_locations(utage_in): locations = {} settings = glob("{}/**/Settings/Scenario.tsv".format(utage_in), recursive=True,)