Features in Games
Create a new component-based Puzzle class, port Scene to it.
Components are divided into data components (metadata, contents,
creation context) and storage components (archive file, directory,
...). They can be casted into each other (e.g. an archive file can
be unpacked into a directory, then metadata and contents can be read
The advantage of this method is that all these casts execute in a
inherently multi-threaded runtime environment. (That's basically the
whole task of the Puzzle class.) It will also allow to do more things
with less code in a more consistent way, because complex operations
can be broken up into multiple relatively simple casts.
In the moment, quite some things run in parallel because only the
scene uses the new Puzzle class (as a proof of concept), the collection
and interface still relies on OldPuzzle.