Version 3.2.1: whole bank copies of voice lines, unique names, docs figures checked by tools/check_docs.py
This commit is contained in:
@@ -156,12 +156,14 @@ class Scan:
|
||||
self.events = {} # id -> [action ids]
|
||||
self.actions = {} # id -> target id
|
||||
self.sound_media = defaultdict(set) # sound object id -> media ids
|
||||
self.prefetch = set() # media ids whose in-memory copy is a prefetch head
|
||||
self.prefetch = set() # media ids whose bank copies belong to a WAD recording (prefetch
|
||||
# heads; whole recordings: catalog._whole_recordings)
|
||||
self.lang_media = defaultdict(set) # language -> media ids named by Sound objects of that language's banks
|
||||
# BKPK tables: WAD entry id -> {language: {media id: (offset in entry, size)}}. A table belongs to the
|
||||
# language its localized AkBank export declares ('' = outside such an export). The same media ID can be
|
||||
# used by several languages (at a different position in each language's WAD), so tables never merge.
|
||||
self.packs = defaultdict(_by_language)
|
||||
self.subtitle_objects = {} # counts of dialogue / RSubtitle objects (catalog.scan_text)
|
||||
self.issues = [] # (kind, detail)
|
||||
|
||||
|
||||
@@ -368,11 +370,12 @@ def media_language(sc, m):
|
||||
return next(iter(langs)) if len(langs) == 1 else ""
|
||||
|
||||
|
||||
def media_names(sc):
|
||||
def media_names(sc, reserved=()):
|
||||
"""{media id: (display name, primary bank name)}: named after the most specific 'Play' event that
|
||||
reaches the media, otherwise after its bank (<Bank>_<n>). Localized speech has one media per language
|
||||
for the same line: they share the name, variations are numbered within a language. Names are unique
|
||||
among the language-neutral media plus any one language (what a catalog shows at a time)."""
|
||||
among the language-neutral media plus any one language (what a catalog shows at a time) and avoid the
|
||||
lower-case names in `reserved` (other archives' sounds)."""
|
||||
ev = event_media(sc)
|
||||
best = {}
|
||||
for name, ms in ev.items():
|
||||
@@ -386,7 +389,7 @@ def media_names(sc):
|
||||
if m not in best or rank < best[m][0]:
|
||||
best[m] = (rank, name, i, len(g))
|
||||
out = {}
|
||||
taken = set() # (language, lower-case name)
|
||||
taken = {("", n) for n in reserved} # (language, lower-case name)
|
||||
|
||||
def free(lang, nm):
|
||||
k = nm.lower()
|
||||
|
||||
Reference in New Issue
Block a user