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:
@@ -9,7 +9,7 @@ a byte size; struct elements end with a u16 0).
|
||||
A dialogue object can be stored in several packages; a subtitle edit is written into every copy, in place:
|
||||
the new text replaces the bytes of the old FString and is padded with NUL characters (the game stops at the
|
||||
first NUL), so no size field, export or package layout changes. The text must therefore fit the original
|
||||
string's bytes (Latin-1/cp1252 strings: one byte per character; UTF-16 strings: two).
|
||||
string's bytes (cp1252 strings: one byte per character; UTF-16 strings: two).
|
||||
"""
|
||||
import csv
|
||||
import gzip
|
||||
@@ -55,7 +55,8 @@ def encode_fstring(text, size, enc):
|
||||
try:
|
||||
raw = text.encode("cp1252")
|
||||
except UnicodeEncodeError:
|
||||
raise SubtitleError("this subtitle is stored as Latin-1 text; '%s' cannot be written"
|
||||
raise SubtitleError("this subtitle is stored as Western European (Windows-1252) text; '%s' cannot be "
|
||||
"written"
|
||||
% next(c for c in text if not _cp1252(c))) from None
|
||||
n = size - 4
|
||||
if len(raw) + 1 > n:
|
||||
@@ -175,6 +176,7 @@ class Collector:
|
||||
|
||||
def __init__(self):
|
||||
self.dialogues = defaultdict(list) # speech name -> [(file, Dialogue)]
|
||||
self.scripted = set() # speech names of RSubtitle objects (resolve)
|
||||
self.issues = []
|
||||
|
||||
def __call__(self, rel, pkg, start, data):
|
||||
@@ -201,6 +203,7 @@ class Collector:
|
||||
self.issues.append(("subtitles", "no speech line for subtitle %s" % copies[0][1].export))
|
||||
name = copies[0][1].export
|
||||
self.dialogues[name].extend((rel, d._replace(speech=name)) for rel, d in copies)
|
||||
self.scripted.add(name)
|
||||
|
||||
|
||||
# --- catalog files: SUB_<LANG>.csv (texts) + SUB_locations.csv.gz (every copy) ------------------
|
||||
|
||||
Reference in New Issue
Block a user