[Scummvm-cvs-logs] SF.net SVN: scummvm:[48350] scummvm/trunk/engines/teenagent
megath at users.sourceforge.net
megath at users.sourceforge.net
Sun Mar 21 08:49:54 CET 2010
Revision: 48350
http://scummvm.svn.sourceforge.net/scummvm/?rev=48350&view=rev
Author: megath
Date: 2010-03-21 07:49:53 +0000 (Sun, 21 Mar 2010)
Log Message:
-----------
preload inventory graphics on load
Modified Paths:
--------------
scummvm/trunk/engines/teenagent/inventory.cpp
scummvm/trunk/engines/teenagent/inventory.h
scummvm/trunk/engines/teenagent/teenagent.cpp
Modified: scummvm/trunk/engines/teenagent/inventory.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.cpp 2010-03-21 07:38:09 UTC (rev 48349)
+++ scummvm/trunk/engines/teenagent/inventory.cpp 2010-03-21 07:49:53 UTC (rev 48350)
@@ -117,9 +117,13 @@
}
}
-void Inventory::flush() {
- for (int i = 0; i < 24; ++i)
+void Inventory::reload() {
+ for (int i = 0; i < 24; ++i) {
graphics[i].free();
+ uint item = inventory[i];
+ if (item != 0)
+ graphics[i].load(this, item);
+ }
}
void Inventory::add(byte item) {
@@ -285,17 +289,31 @@
}
}
-void Inventory::Item::render(Inventory *inventory, InventoryObject *obj, Graphics::Surface *dst, int delta) {
- Resources *res = Resources::instance();
-
- backgroundEffect(dst);
- rect.render(dst, hovered ? 233 : 234);
+void Inventory::Item::load(Inventory *inventory, uint item_id) {
+ InventoryObject *obj = &inventory->objects[item_id];
if (obj->animated) {
if (animation.empty()) {
debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]);
Common::MemoryReadStream s(inventory->items + inventory->offset[obj->id - 1], inventory->offset[obj->id] - inventory->offset[obj->id - 1]);
animation.load(&s, Animation::kTypeInventory);
}
+ } else {
+ if (surface.empty()) {
+ debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]);
+ Common::MemoryReadStream s(inventory->items + inventory->offset[obj->id - 1], inventory->offset[obj->id] - inventory->offset[obj->id - 1]);
+ surface.load(&s, Surface::kTypeOns);
+ }
+ }
+}
+
+void Inventory::Item::render(Inventory *inventory, uint item_id, Graphics::Surface *dst, int delta) {
+ InventoryObject *obj = &inventory->objects[item_id];
+ Resources *res = Resources::instance();
+
+ backgroundEffect(dst);
+ rect.render(dst, hovered ? 233 : 234);
+ load(inventory, item_id);
+ if (obj->animated) {
if (hovered) {
Surface *s = animation.currentFrame(delta);
if (animation.currentIndex() == 0)
@@ -308,11 +326,6 @@
s->render(dst, rect.left + 1, rect.top + 1);
}
} else {
- if (surface.empty()) {
- debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]);
- 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);
}
@@ -344,9 +357,7 @@
continue;
//debug(0, "%d,%d -> %u", x0, y0, item);
-
- InventoryObject *obj = &objects[item];
- graphics[idx].render(this, obj, surface, delta);
+ graphics[idx].render(this, item, surface, delta);
}
}
}
Modified: scummvm/trunk/engines/teenagent/inventory.h
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.h 2010-03-21 07:38:09 UTC (rev 48349)
+++ scummvm/trunk/engines/teenagent/inventory.h 2010-03-21 07:49:53 UTC (rev 48350)
@@ -42,7 +42,7 @@
void render(Graphics::Surface *surface, int delta);
void clear();
- void flush();
+ void reload();
void add(byte item);
bool has(byte item) const;
void remove(byte item);
@@ -71,8 +71,9 @@
Item() : hovered(false) {}
void free();
+ void load(Inventory *inventory, uint item_id);
void backgroundEffect(Graphics::Surface *s);
- void render(Inventory *inventory, InventoryObject *obj, Graphics::Surface *surface, int delta);
+ void render(Inventory *inventory, uint item_id, Graphics::Surface *surface, int delta);
} graphics[24];
bool _active;
Modified: scummvm/trunk/engines/teenagent/teenagent.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.cpp 2010-03-21 07:38:09 UTC (rev 48349)
+++ scummvm/trunk/engines/teenagent/teenagent.cpp 2010-03-21 07:49:53 UTC (rev 48350)
@@ -211,7 +211,7 @@
scene->clear();
inventory->activate(false);
- inventory->flush();
+ inventory->reload();
setMusic(Resources::instance()->dseg.get_byte(0xDB90));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list