Files
tech5/source/engine/framework/resource.cpp
T

68 lines
1.9 KiB
C++

#include "framework/resource.h"
#include "framework/resourcelist.h"
#include "idlib/lib_print.h"
#include "idlib/text/str.h"
idResource::idResource()
: trackedMemory(0), name("unnamed"), nextOnHashChain(nullptr),
resourceListPtr(nullptr), resourceError(nullptr), networkID(-1),
staleCount(0), resourceFlags(0), pad{} {
}
idResource::~idResource() {
if ((resourceFlags & 0x40u) != 0) {
idLibPrint::FatalError("Resource deleted with staticResource set: %s",
name.c_str());
}
if (resourceListPtr != nullptr) {
resourceListPtr->Remove(this);
}
idResourceList::UnRegisterNetworkResource(this);
}
void idResource::LoadResource() {
const idResourceList* const list = GetResourceList();
idLibPrint::FatalError("idResource::Load() for %s not implemented.\n",
list != nullptr ? list->GetResourceTypeName() : "resource");
}
bool idResource::ReloadIfStale() {
return false;
}
void idResource::WriteResourceFile() {
const idResourceList* const list = GetResourceList();
idLibPrint::FatalError(
"resource type '%s' has not implemented WriteResourceFile()",
list != nullptr ? list->GetResourceTypeName() : "resource");
}
idResourceList* idResource::GetResourceList() {
return resourceListPtr;
}
void idResource::Print() {
const idResourceList* const list = GetResourceList();
const char* const typeName =
list != nullptr ? list->GetResourceTypeName() : "resource";
if (resourceError != nullptr) {
idLibPrint::Printf("%s:%s:%s\n", typeName, name.c_str(),
resourceError);
} else {
idLibPrint::Printf("%s:%s\n", typeName, name.c_str());
}
}
void idResource::List() {
Print();
}
void idResource::SetName(const char* const newName) {
idStr canonicalName(newName);
canonicalName.MakeNameCanonical();
if (idStr::Cmp(canonicalName.c_str(), name.c_str()) != 0) {
name.Set(canonicalName.c_str());
}
}