summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf.cpp2
-rw-r--r--src/town_cmd.cpp11
2 files changed, 10 insertions, 3 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 84f0bfcc0..40185e3d7 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -1256,6 +1256,7 @@ static bool TownHouseChangeInfo(uint hid, int numinfo, int prop, byte **bufp, in
housespec[i]->enabled = true;
housespec[i]->local_id = hid + i;
housespec[i]->substitute_id = subs_id;
+ housespec[i]->grffile = _cur_grffile;
housespec[i]->random_colour[0] = 0x04; // those 4 random colours are the base colour
housespec[i]->random_colour[1] = 0x08; // for all new houses
housespec[i]->random_colour[2] = 0x0C; // they stand for red, blue, orange and green
@@ -2316,7 +2317,6 @@ static void FeatureMapSpriteGroup(byte *buf, int len)
}
hs->spritegroup = _cur_grffile->spritegroups[groupid];
- hs->grffile = _cur_grffile;
}
return;
}
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp
index 716eb673f..ec689b8f1 100644
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -127,8 +127,15 @@ static void DrawTile_Town(TileInfo *ti)
HouseID house_id = GetHouseType(ti->tile);
if (house_id >= NEW_HOUSE_OFFSET) {
- DrawNewHouseTile(ti, house_id);
- return;
+ /* Houses don't necessarily need new graphics. If they don't have a
+ * spritegroup associated with them, then the sprite for the substitute
+ * house id is drawn instead. */
+ if (GetHouseSpecs(house_id)->spritegroup != NULL) {
+ DrawNewHouseTile(ti, house_id);
+ return;
+ } else {
+ house_id = GetHouseSpecs(house_id)->substitute_id;
+ }
}
/* Retrieve pointer to the draw town tile struct */