- added means to define resource IDs in all container formats allowing long file names.

To define these, construct a file name like "basename.{resourceid}.extension", e.g. blaster.{65}.qav will define 'blaster.qav' with a resource ID of 65.
This commit is contained in:
Christoph Oelckers 2021-08-11 12:04:53 +02:00
parent b2f7eb5b4f
commit 23b8707fc2

View file

@ -113,7 +113,20 @@ struct FileSystem::LumpRecord
if (Namespace == ns_hidden) shortName.qword = 0; if (Namespace == ns_hidden) shortName.qword = 0;
else else
{ {
long slash = longName.LastIndexOf('/'); ptrdiff_t encodedResID = longName.LastIndexOf(".{");
if (resourceId == -1 && encodedResID >= 0)
{
const char* p = longName.GetChars() + encodedResID;
char* q;
int id = (int)strtoull(p+2, &q, 10); // only decimal numbers allowed here.
if (q[0] == '}' && (q[1] == '.' || q[1] == 0))
{
FString toDelete(p, q - p + 1);
longName.Substitute(toDelete, "");
resourceId = id;
}
}
ptrdiff_t slash = longName.LastIndexOf('/');
FString base = (slash >= 0) ? longName.Mid(slash + 1) : longName; FString base = (slash >= 0) ? longName.Mid(slash + 1) : longName;
auto dot = base.LastIndexOf('.'); auto dot = base.LastIndexOf('.');
if (dot >= 0) base.Truncate(dot); if (dot >= 0) base.Truncate(dot);