To einherjar (because you already write it a lot)
I don't like the way how Files are created. I don't want to specify FileSystem every time I want read file. I think the best way will be create base file class and derive two classes from him. GameFile and RealFile (for example). And all classes will be derived from them. Specifinng filesystem in classes like TimFile are bad, because this file should always be readed from CD or others GameFileSystem, ie this is always ingame file.
Apart from that we have savemap (load saves in future), Xml files and images (bmp).
I agree; actually I had the same idea at the very moment I delivered the code
ps: do you need FileStream template? and for what purpose.
I do use it in .MAP file reading. I found awkward/dangerous to write:
s16 x = f.GetS16LE(offset); offset += 2;
s16 y = f.GetS16LE(offset); offset += 2;
s16 z = f.GetS16LE(offset); offset += 2;
// ...
u8 v0 = f.GetU8(offset); offset += 1;
u8 v1 = f.GetU8(offset); offset += 1;
u8 v2 = f.GetU8(offset); offset += 1;
So I just hide the offset handling in a wrapper, namely Filestream. I
made it a templated class so that one could use the same mechanism with
any other file.
I know that you do not like streaming very much, but I think that
originaly, the game is meant to run on a Playstation 1, and the
developpers had to use streaming intensively, for two main reasons:
memory efficiency and CD access performance. I followed this
intuition, and used streaming when the file format was "natively"
"unstreamable". And this might a good way of avoiding loading screen,
don't you think?
pss: i wang generally finalize Filesystem before cleanup and rewrite other part of common (config for example).
Well hmmm I'm not sure to understand you here