aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Menshakov2010-03-18 23:24:32 +0000
committerVladimir Menshakov2010-03-18 23:24:32 +0000
commite245de962ac30fa1a6676a6fbf5e27f61c8c595c (patch)
tree08124c49ca6b7414a73aaf89a3c50789278087b0
parent062ac9f6f22ca141e078a5f34bddbf86da7e33ed (diff)
downloadscummvm-rg350-e245de962ac30fa1a6676a6fbf5e27f61c8c595c.tar.gz
scummvm-rg350-e245de962ac30fa1a6676a6fbf5e27f61c8c595c.tar.bz2
scummvm-rg350-e245de962ac30fa1a6676a6fbf5e27f61c8c595c.zip
removed 'varia.res' from the resident pack files
svn-id: r48295
-rw-r--r--engines/teenagent/inventory.cpp27
-rw-r--r--engines/teenagent/inventory.h2
-rw-r--r--engines/teenagent/resources.cpp18
-rw-r--r--engines/teenagent/resources.h2
-rw-r--r--engines/teenagent/scene.cpp9
-rw-r--r--engines/teenagent/teenagent.cpp9
6 files changed, 41 insertions, 26 deletions
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<InventoryObject> 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));