From 9c704c6a0510e9c5f8af8e9c1f810e9688345111 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Mon, 1 Sep 2008 05:54:00 +0000 Subject: added mapimages component --- src/game/client/components/mapimages.cpp | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/game/client/components/mapimages.cpp (limited to 'src/game/client/components/mapimages.cpp') 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 +#include + +#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); + } + } +} + -- cgit 1.4.1