42 lines (36 with data), 2.3 kB
1. use search path for files, possibly caching the paths
2. Format.read_struc(): allow for offset based on size of other field (STRSIZED, as in BIFC_Format)
3. make the MemoryStream data buffer autostretch (shrink/grow)
4. canonize field names and labels
door_cnt or doors_cnt ?
# of doors or Doors count?
5. load objects in cache and override dirs as well
6. allow for more than one game loaded?
7. create set_translation() fn in core
8. look at options again, make them more ie-file-format-agnostic
9. put some more enums/masks to formats/enums.py
10. case insensitive files searching
11. decode strings from a specified encoding to Unicode on load,
encode to (possibly another) system encoding on write
12. let formats register not only for sig+version, but for type, extension, game_type, some regexp as well.
And combinations of the above, with more specific registrations taking precedence. Unimplemented formats could
be handled by "Unimplemented_Format"
1. OFFSET/COUNT data type?
2. make data types with mask automatically report unknown bits
3. Add file type to RESREF data type (e.g. RESREF/ITM)
4. Strip trailing garbage from strings
5. Signed data types (SWORD, SDWORD,...). Ugly, Adding unsigned ones would be better
6. allow for name enums desc items with count > 1 (e.g. 100 strrefs in CRE)
7. change all *_desc tuples to lists to allow patching in subclasses for other versions of data file
8. change prints in printme() to fh.write() to allow for better output redirection
9. generalize prints to allow printing to HTML tables, for example.
10. filter out non-printable chars in BYTES or STRn output to prevent garbage hosing the terminal
11. organize reads and writes to be in the same order as in the file, to avoid seeks. Add debug option
to report each seek. Add option to ignore seeks or to check tell() before each read/write
and compare to expected one.
1. Base streams on Python's native file interface, so normal files can be used for reading structures and also the streams can be used with normal python functions. This would require moving the read_(resref|word|...) functions elsewhere, though
in DLG_Format.print_flow() indicate or print journal text, e.g. see dmorte2, transition 21