From e245de962ac30fa1a6676a6fbf5e27f61c8c595c Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Thu, 18 Mar 2010 23:24:32 +0000 Subject: removed 'varia.res' from the resident pack files svn-id: r48295 --- engines/teenagent/inventory.cpp | 27 +++++++++++++++++---------- engines/teenagent/inventory.h | 2 +- engines/teenagent/resources.cpp | 18 +++++++++++------- engines/teenagent/resources.h | 2 +- engines/teenagent/scene.cpp | 9 ++++++--- engines/teenagent/teenagent.cpp | 9 +++++---- 6 files changed, 41 insertions(+), 26 deletions(-) (limited to 'engines/teenagent') diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp index b28b005158..538bd2b7c1 100644 --- a/engines/teenagent/inventory.cpp +++ b/engines/teenagent/inventory.cpp @@ -35,22 +35,28 @@ namespace TeenAgent { void Inventory::init(TeenAgentEngine *engine) { _engine = engine; _active = false; - Resources *res = Resources::instance(); - Common::SeekableReadStream *s = res->varia.getStream(3); + FilePack varia; + varia.open("varia.res"); + + Common::SeekableReadStream *s = varia.getStream(3); assert(s != NULL); debug(0, "loading inventory background..."); background.load(s, Surface::kTypeOns); - items = res->varia.getStream(4); - assert(items != NULL); + uint32 items_size = varia.get_size(4); + if (items_size == 0) + error("invalid inventory items size"); + items = new byte[items_size]; + varia.read(4, items, items_size); - byte offsets = items->readByte(); + byte offsets = items[0]; assert(offsets == 92); for (byte i = 0; i <= offsets; ++i) { - offset[i] = items->readUint16LE(); + offset[i] = READ_UINT16(items + i * 2 + 1); } + Resources *res = Resources::instance(); for (byte i = 0; i <= 92; ++i) { InventoryObject io; uint16 obj_addr = res->dseg.get_word(0xc4a4 + i * 2); @@ -70,6 +76,7 @@ void Inventory::init(TeenAgentEngine *engine) { graphics[i].rect.bottom = graphics[i].rect.top + 26; } + varia.close(); hovered_obj = selected_obj = NULL; } @@ -274,8 +281,8 @@ void Inventory::Item::render(Inventory *inventory, InventoryObject *obj, Graphic if (obj->animated) { if (animation.empty()) { debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]); - inventory->items->seek(inventory->offset[obj->id - 1]); - animation.load(inventory->items, Animation::kTypeInventory); + Common::MemoryReadStream s(inventory->items + inventory->offset[obj->id - 1], inventory->offset[obj->id] - inventory->offset[obj->id - 1]); + animation.load(&s, Animation::kTypeInventory); } if (hovered) { Surface *s = animation.currentFrame(delta); @@ -291,8 +298,8 @@ void Inventory::Item::render(Inventory *inventory, InventoryObject *obj, Graphic } else { if (surface.empty()) { debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]); - inventory->items->seek(inventory->offset[obj->id - 1]); - surface.load(inventory->items, Surface::kTypeOns); + Common::MemoryReadStream s(inventory->items + inventory->offset[obj->id - 1], inventory->offset[obj->id] - inventory->offset[obj->id - 1]); + surface.load(&s, Surface::kTypeOns); } surface.render(dst, rect.left + 1, rect.top + 1); } diff --git a/engines/teenagent/inventory.h b/engines/teenagent/inventory.h index 6092a66475..c1f56e6f84 100644 --- a/engines/teenagent/inventory.h +++ b/engines/teenagent/inventory.h @@ -57,7 +57,7 @@ public: private: TeenAgentEngine *_engine; Surface background; - Common::SeekableReadStream *items; + byte *items; uint16 offset[93]; Common::Array objects; diff --git a/engines/teenagent/resources.cpp b/engines/teenagent/resources.cpp index a995b129f2..be0d1a70c2 100644 --- a/engines/teenagent/resources.cpp +++ b/engines/teenagent/resources.cpp @@ -36,7 +36,6 @@ Resources *Resources::instance() { } void Resources::deinit() { - varia.close(); off.close(); on.close(); ons.close(); @@ -77,8 +76,18 @@ bool Resources::loadArchives(const ADGameDescription *gd) { dat_file.close(); + { + FilePack varia; + varia.open("varia.res"); + font7.load(varia, 7); + font7.width_pack = 1; + font7.height = 11; + font8.load(varia, 8); + font8.height = 31; + varia.close(); + } + off.open("off.res"); - varia.open("varia.res"); on.open("on.res"); ons.open("ons.res"); lan000.open("lan_000.res"); @@ -87,11 +96,6 @@ bool Resources::loadArchives(const ADGameDescription *gd) { sam_mmm.open("sam_mmm.res"); sam_sam.open("sam_sam.res"); - font7.load(varia, 7); - font7.width_pack = 1; - font7.height = 11; - font8.load(varia, 8); - font8.height = 31; return true; } diff --git a/engines/teenagent/resources.h b/engines/teenagent/resources.h index e32c2df284..1e3a2dee78 100644 --- a/engines/teenagent/resources.h +++ b/engines/teenagent/resources.h @@ -47,7 +47,7 @@ public: //void loadOn(Graphics::Surface &surface, int id, uint16 &dst, uint16 *flags); //void loadOns(Graphics::Surface &surface, int id, uint16 &dst); - FilePack varia, off, on, ons, lan000, lan500, sam_mmm, sam_sam; + FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam; MemoryPack mmm; Segment cseg, dseg, eseg; Font font7, font8; diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp index 0e987e36c2..a1492e730a 100644 --- a/engines/teenagent/scene.cpp +++ b/engines/teenagent/scene.cpp @@ -207,8 +207,10 @@ void Scene::init(TeenAgentEngine *engine, OSystem *system) { memset(palette, 0, sizeof(palette)); - Resources *res = Resources::instance(); - Common::SeekableReadStream *s = res->varia.getStream(1); + FilePack varia; + varia.open("varia.res"); + + Common::SeekableReadStream *s = varia.getStream(1); if (s == NULL) error("invalid resource data"); @@ -216,7 +218,7 @@ void Scene::init(TeenAgentEngine *engine, OSystem *system) { if (teenagent.empty()) error("invalid mark animation"); - s = res->varia.getStream(2); + s = varia.getStream(2); if (s == NULL) error("invalid resource data"); @@ -224,6 +226,7 @@ void Scene::init(TeenAgentEngine *engine, OSystem *system) { if (teenagent_idle.empty()) error("invalid mark animation"); + varia.close(); loadObjectData(); } diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp index 8f16098ced..3867517b96 100644 --- a/engines/teenagent/teenagent.cpp +++ b/engines/teenagent/teenagent.cpp @@ -325,12 +325,13 @@ bool TeenAgentEngine::showMetropolis() { _system->fillScreen(0); _system->updateScreen(); - Resources *res = Resources::instance(); + FilePack varia; + varia.open("varia.res"); byte palette[0x400]; memset(palette, 0, sizeof(palette)); { - Common::SeekableReadStream *s = res->varia.getStream(5); + Common::SeekableReadStream *s = varia.getStream(5); for(uint c = 0; c < 0x100; ++c) { uint idx = c * 4; s->read(palette + idx, 3); @@ -343,8 +344,8 @@ bool TeenAgentEngine::showMetropolis() { _system->setPalette(palette, 0, 0x100); byte varia_6[21760], varia_9[18302]; - res->varia.read(6, varia_6, sizeof(varia_6)); - res->varia.read(9, varia_9, sizeof(varia_9)); + varia.read(6, varia_6, sizeof(varia_6)); + varia.read(9, varia_9, sizeof(varia_9)); byte colors[56 * 160 * 2]; memset(colors, 0, sizeof(colors)); -- cgit v1.2.3