Animation system

I propose one template

Template struct DefaultResource{
static const bool critical;
static shared_ptr replacement;
}

and use it as last override - if there’s no file then
if resource type is critical log to tlog0 and crash
if it’s not return the pointer

the pointer may be null but don’t have too
imagine that mod adds the hero but one of clients don’t have its’ portrait
then the client won’t crash nor put empty rectangle - it would have portrait of hooded and shadowed face (the face we cannot identify to anybody)

The purpose is to synchronize client mods with server before game starts.

Yeah but why not make mod graphic skinnable?
And if mods are easily skinnable why not make one without default skin, but just with the new IDs (with purpose to someone make some skins in future)

Fixed. I’ve renamed EResourceType to EResType, as it’s weird to write EResourceType::EResourceType if you want to return that enum.

It was no longer used. Removed.

That’s true. But I need that hash_value method as it’s also used as a key in CFilesystemHandler for caching the memoryStream objects. (you need ResourceLocator to identify exactly the resource)

It may look like that. It was used in subclasses of IResourceLoader. But I’ve removed the mutex to class CFilesystemHandler and lock/unlock a resource while loading only once.

Done.

Replaced with an assert.

No you have to check if there already exists a vector in the map. If yes, then get it, append the resource locator to it and write vector back. If not, then create a new vector, append the resource locator and write vector back.

Fixed.

Can be implemented later, is definitely needed.

Me too but in this case I think it’s better to have it like that way. Most inline functions are constructors with only a initializer list or template/boost needed functions for hashing. Regarding CMemoryStream it applies only to single line getFoo methods.

That’s exactly what operator ] will do:
Check this example: pastebin.com/zeWqZTxB