diff options
| -rw-r--r-- | Creatures.cpp | 18 | ||||
| -rw-r--r-- | GUI.cpp | 7 | ||||
| -rw-r--r-- | GUI.h | 1 | ||||
| -rw-r--r-- | resources/Sir_Henry's_32x32.png | bin | 0 -> 32221 bytes |
4 files changed, 19 insertions, 7 deletions
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);
}
@@ -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++)
@@ -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<string*> IMGFilenames;
diff --git a/resources/Sir_Henry's_32x32.png b/resources/Sir_Henry's_32x32.png Binary files differnew file mode 100644 index 0000000..2207e26 --- /dev/null +++ b/resources/Sir_Henry's_32x32.png |
