summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newgrf.c10
-rw-r--r--newgrf.h1
-rw-r--r--water_cmd.c7
3 files changed, 17 insertions, 1 deletions
diff --git a/newgrf.c b/newgrf.c
index 3ae0d2e4b..fc0688ae3 100644
--- a/newgrf.c
+++ b/newgrf.c
@@ -43,6 +43,7 @@
static int _skip_sprites; // XXX
static uint _file_index; // XXX
SpriteID _signal_base;
+SpriteID _coast_base;
static GRFFile *_cur_grffile;
GRFFile *_first_grffile;
@@ -2159,6 +2160,14 @@ static void GraphicsNew(byte *buf, int len)
replace = SPR_CANALS_BASE + 5;
break;
+ case 0x0D: /* Coast graphics */
+ if (num != 16) {
+ grfmsg(GMS_WARN, "GraphicsNews: Coast graphics sprite count must be 16, skipping.");
+ return;
+ }
+ _coast_base = _cur_spriteid;
+ break;
+
default:
grfmsg(GMS_NOTICE, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring).\n",
type, num);
@@ -3326,6 +3335,7 @@ static void ResetNewGRFData(void)
_traininfo_vehicle_width = 29;
_have_2cc = false;
_signal_base = 0;
+ _coast_base = 0;
InitializeSoundPool();
InitializeSpriteGroupPool();
diff --git a/newgrf.h b/newgrf.h
index b4eee1b9f..385e5c7b6 100644
--- a/newgrf.h
+++ b/newgrf.h
@@ -61,6 +61,7 @@ typedef struct GRFConfig {
extern GRFConfig *_first_grfconfig;
extern SpriteID _signal_base;
+extern SpriteID _coast_base;
extern bool _have_2cc;
void LoadNewGRF(uint load_index, uint file_index);
diff --git a/water_cmd.c b/water_cmd.c
index 5603d6787..8af293b95 100644
--- a/water_cmd.c
+++ b/water_cmd.c
@@ -19,6 +19,7 @@
#include "vehicle_gui.h"
#include "train.h"
#include "water_map.h"
+#include "newgrf.h"
const SpriteID _water_shore_sprites[15] = {
0,
@@ -452,7 +453,11 @@ static void DrawTile_Water(TileInfo *ti)
case WATER_COAST:
assert(!IsSteepSlope(ti->tileh));
- DrawGroundSprite(_water_shore_sprites[ti->tileh]);
+ if (_coast_base != 0) {
+ DrawGroundSprite(_coast_base + ti->tileh);
+ } else {
+ DrawGroundSprite(_water_shore_sprites[ti->tileh]);
+ }
break;
case WATER_LOCK: {