[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