fixed diva quest
This commit is contained in:
parent
a2308379f2
commit
1f5ff96b8e
3 changed files with 49 additions and 26 deletions
|
|
@ -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:
|
||||
|
|
|
|||
24
db/quest.py
24
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(
|
||||
|
|
|
|||
|
|
@ -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,)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue