From b7af8ca75b244fb7499e4bfd920f5df9a4ab6f83 Mon Sep 17 00:00:00 2001 From: Japa Date: Fri, 24 Aug 2012 23:29:55 +0530 Subject: changed default creature sprite behavior to show a creature's letter instead of a purple question mark. --- Creatures.cpp | 18 +++++++++++------- GUI.cpp | 7 +++++++ GUI.h | 1 + resources/Sir_Henry's_32x32.png | Bin 0 -> 32221 bytes 4 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 resources/Sir_Henry's_32x32.png diff --git a/Creatures.cpp b/Creatures.cpp index 38cef17..bface8c 100644 --- a/Creatures.cpp +++ b/Creatures.cpp @@ -277,11 +277,18 @@ void DrawCreature(int drawx, int drawy, t_unit* creature, Block * b){ } c_sprite * sprite = GetCreatureSpriteMap( creature ); + if(sprite) + sprite->draw_world(creature->x,creature->y, creature->z, b); + else + { + df::creature_raw *raw = df::global::world->raws.creatures.all[creature->race]; + int spritenum = raw->creature_tile; + spritenum += (spritenum/16)*4; + DrawSpriteFromSheet(spritenum,IMGLetterSheet,config.colors.getDfColor(raw->color[0],raw->color[2]),drawx,drawy,b); + } unsigned int offsety = config.show_creature_names ? al_get_font_line_height(font) : 0; - - sprite->draw_world(creature->x,creature->y, creature->z, b); - + if(statusIcons.size()) { for(int i = 0; i < statusIcons.size(); i++) @@ -551,12 +558,9 @@ CreatureConfiguration *GetCreatureConfig( t_unit* c ){ c_sprite* GetCreatureSpriteMap( t_unit* c ) { - static c_sprite * defaultSprite = new c_sprite; - defaultSprite->reset(); - defaultSprite->set_defaultsheet(IMGCreatureSheet); CreatureConfiguration *testConfig = GetCreatureConfig( c ); if (testConfig == NULL) - return defaultSprite; + return NULL; testConfig->sprite.set_defaultsheet(IMGCreatureSheet); return &(testConfig->sprite); } diff --git a/GUI.cpp b/GUI.cpp index 1109866..da69aae 100644 --- a/GUI.cpp +++ b/GUI.cpp @@ -62,6 +62,7 @@ ALLEGRO_BITMAP* IMGBloodSheet; ALLEGRO_BITMAP* IMGEngFloorSheet; ALLEGRO_BITMAP* IMGEngLeftSheet; ALLEGRO_BITMAP* IMGEngRightSheet; +ALLEGRO_BITMAP* IMGLetterSheet; ALLEGRO_BITMAP* buffer = 0; ALLEGRO_BITMAP* bigFile = 0; @@ -1063,6 +1064,7 @@ void loadGraphicsFromDisk() if(!load_from_path(p, "engravings_floor.png", IMGEngFloorSheet)) return; if(!load_from_path(p, "engravings_left.png", IMGEngLeftSheet)) return; if(!load_from_path(p, "engravings_right.png", IMGEngRightSheet)) return; + if(!load_from_path(p, "Sir_Henry's_32x32.png", IMGLetterSheet)) return; al_destroy_path(p); createEffectSprites(); } @@ -1118,6 +1120,11 @@ void flushImgFiles() al_destroy_bitmap(IMGEngRightSheet); IMGEngRightSheet = 0; } + if(IMGLetterSheet) + { + al_destroy_bitmap(IMGLetterSheet); + IMGLetterSheet = 0; + } uint32_t numFiles = (uint32_t)IMGFilelist.size(); assert( numFiles == IMGFilenames.size()); for(uint32_t i = 0; i < numFiles; i++) diff --git a/GUI.h b/GUI.h index 2706b85..743074f 100644 --- a/GUI.h +++ b/GUI.h @@ -55,6 +55,7 @@ extern ALLEGRO_BITMAP* IMGBloodSheet; extern ALLEGRO_BITMAP* IMGEngFloorSheet; extern ALLEGRO_BITMAP* IMGEngLeftSheet; extern ALLEGRO_BITMAP* IMGEngRightSheet; +extern ALLEGRO_BITMAP* IMGLetterSheet; extern Crd3D debugCursor; extern vector IMGFilenames; diff --git a/resources/Sir_Henry's_32x32.png b/resources/Sir_Henry's_32x32.png new file mode 100644 index 0000000..2207e26 Binary files /dev/null and b/resources/Sir_Henry's_32x32.png differ -- cgit v1.2.1