about summary refs log tree commit diff
path: root/src/game/client/components/mapimages.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-09-01 05:54:00 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-09-01 05:54:00 +0000
commit9c704c6a0510e9c5f8af8e9c1f810e9688345111 (patch)
treedc8e7598702963ca4d4ff260824c031ed4e66ce3 /src/game/client/components/mapimages.cpp
parent04eddacd65fd3da680e3d896368cb766b377e6e2 (diff)
downloadzcatch-9c704c6a0510e9c5f8af8e9c1f810e9688345111.tar.gz
zcatch-9c704c6a0510e9c5f8af8e9c1f810e9688345111.zip
added mapimages component
Diffstat (limited to 'src/game/client/components/mapimages.cpp')
-rw-r--r--src/game/client/components/mapimages.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/game/client/components/mapimages.cpp b/src/game/client/components/mapimages.cpp
new file mode 100644
index 00000000..d13524cd
--- /dev/null
+++ b/src/game/client/components/mapimages.cpp
@@ -0,0 +1,45 @@
+#include <game/client/component.hpp>
+#include <game/mapitems.hpp>
+
+#include "mapimages.hpp"
+
+MAPIMAGES::MAPIMAGES()
+{
+	count = 0;
+}
+
+void MAPIMAGES::on_reset()
+{
+	// unload all textures
+	for(int i = 0; i < count; i++)
+	{
+		gfx_unload_texture(textures[i]);
+		textures[i] = -1;
+	}
+	count = 0;
+
+	int start;
+	map_get_type(MAPITEMTYPE_IMAGE, &start, &count);
+	
+	// load new textures
+	for(int i = 0; i < count; i++)
+	{
+		textures[i] = 0;
+		
+		MAPITEM_IMAGE *img = (MAPITEM_IMAGE *)map_get_item(start+i, 0, 0);
+		if(img->external)
+		{
+			char buf[256];
+			char *name = (char *)map_get_data(img->image_name);
+			str_format(buf, sizeof(buf), "data/mapres/%s.png", name);
+			textures[i] = gfx_load_texture(buf, IMG_AUTO, 0);
+		}
+		else
+		{
+			void *data = map_get_data(img->image_data);
+			textures[i] = gfx_load_texture_raw(img->width, img->height, IMG_RGBA, data, IMG_RGBA, 0);
+			map_unload_data(img->image_data);
+		}
+	}
+}
+