aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/resource_hrs.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2009-12-04 17:52:42 +0000
committerAndrew Kurushin2009-12-04 17:52:42 +0000
commitaa147a2f5af167048b3d57da558bc39a91c3a936 (patch)
treec0d76d59a96f4b415f5186f74dfcb73c27775fc6 /engines/saga/resource_hrs.cpp
parent4fb779dbaf85d93c776549cdc4903c5a671013a4 (diff)
downloadscummvm-rg350-aa147a2f5af167048b3d57da558bc39a91c3a936.tar.gz
scummvm-rg350-aa147a2f5af167048b3d57da558bc39a91c3a936.tar.bz2
scummvm-rg350-aa147a2f5af167048b3d57da558bc39a91c3a936.zip
refactor resource module:
- struct ResourceContext => class ResourceContext - replace "*alloc","free" with array templates - simplify createContexts routines svn-id: r46254
Diffstat (limited to 'engines/saga/resource_hrs.cpp')
-rw-r--r--engines/saga/resource_hrs.cpp50
1 files changed, 20 insertions, 30 deletions
diff --git a/engines/saga/resource_hrs.cpp b/engines/saga/resource_hrs.cpp
index 9a7b593913..2ec2099c8d 100644
--- a/engines/saga/resource_hrs.cpp
+++ b/engines/saga/resource_hrs.cpp
@@ -42,64 +42,54 @@
namespace Saga {
-void readElement(Common::File *file, Saga::ResourceData *element) {
- element->id = file->readUint32BE();
- element->offset = file->readUint32LE();
- element->size = file->readUint32LE();
- debug(3, "Entry: id %u, offset %u, size %u", element->id, (uint)element->offset, (uint)element->size);
+void readElement(Common::File &file, Saga::ResourceData &element) {
+ element.id = file.readUint32BE();
+ element.offset = file.readUint32LE();
+ element.size = file.readUint32LE();
+ debug(3, "Entry: id %u, offset %u, size %u", element.id, (uint)element.offset, (uint)element.size);
}
-bool Resource_HRS::loadResContext_v2(ResourceContext *context, uint32 contextSize) {
- ResourceData *origin = new ResourceData();
+bool ResourceContext_HRS::loadResV2(uint32 contextSize) {
+ ResourceData origin;
uint32 firstEntryOffset;
uint32 tableSize;
int i, count;
const uint32 resourceSize = 4 + 4 + 4; // id, size, offset
- debug(3, "Context %s =====", context->fileName);
- context->file->seek(0, SEEK_SET);
+ debug(3, "Context %s =====", _fileName);
+ _file.seek(0, SEEK_SET);
- readElement(context->file, origin);
+ readElement(_file, origin);
// Check if the file is valid
- if (origin->id != MKID_BE('HRES')) { // header
- delete origin;
+ if (origin.id != MKID_BE('HRES')) { // header
return false;
}
// Read offset of first entry
- context->file->seek(origin->offset - sizeof(uint32), SEEK_SET);
- firstEntryOffset = context->file->readUint32LE();
+ _file.seek(origin.offset - sizeof(uint32), SEEK_SET);
+ firstEntryOffset = _file.readUint32LE();
// Allocate buffers for table, categories and data
- context->categories = (ResourceData *) calloc(origin->size / resourceSize, sizeof(*context->categories));
- tableSize = origin->offset - firstEntryOffset - sizeof(uint32);
- context->table = (ResourceData *) calloc(tableSize / resourceSize, sizeof(*context->table));
-
- if (context->categories == NULL || context->table == NULL) {
- delete origin;
- return false;
- }
+ _categories.resize(origin.size / resourceSize);
+ tableSize = origin.offset - firstEntryOffset - sizeof(uint32);
+ _table.resize(tableSize / resourceSize);
// Read categories
- count = origin->size / resourceSize;
+ count = origin.size / resourceSize;
debug(3, "Categories: %d =====", count);
for (i = 0; i < count; i++) {
- readElement(context->file, &context->categories[i]);
+ readElement(_file, _categories[i]);
}
- context->file->seek(firstEntryOffset, SEEK_SET);
+ _file.seek(firstEntryOffset, SEEK_SET);
// Read table entries
count = tableSize / resourceSize;
debug(3, "Entries: %d =====", count);
for (i = 0; i < count; i++) {
- readElement(context->file, &context->table[i]);
+ readElement(_file, _table[i]);
}
-
- context->count = tableSize / resourceSize;
-
- delete origin;
return true;
}