From 8ee1faca6c8b4dbb13962c132fd9544dfee42ffa Mon Sep 17 00:00:00 2001 From: belugas Date: Mon, 31 Dec 2007 04:38:11 +0000 Subject: [PATCH] (svn r11726) -Feature[newGRF]: Extend the Action 5, feature 0D usage. Patch by BigBB --- bin/data/openttdd.grf | Bin 380550 -> 410084 bytes bin/data/openttdw.grf | Bin 380710 -> 410244 bytes src/newgrf.cpp | 53 +++++++++++++++++++++++++++++++-------- src/newgrf.h | 6 ++--- src/table/files.h | 4 +-- src/table/sprites.h | 17 ++++--------- src/table/station_land.h | 8 +++--- src/water_cmd.cpp | 36 ++++++++------------------ 8 files changed, 66 insertions(+), 58 deletions(-) diff --git a/bin/data/openttdd.grf b/bin/data/openttdd.grf index 62357d88269de9629eaa0ddbd76fbdfcdabe3d3f..b50c143a55f4c56f7abd609daa77a4407b162701 100644 GIT binary patch delta 29825 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 PL`vVttNxJfj+*}ld~%iy delta 58 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 yb%7 diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 431f7464a7..cacc675968 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -59,7 +59,6 @@ static int _skip_sprites; // XXX static uint _file_index; // XXX -SpriteID _coast_base; static GRFFile *_cur_grffile; GRFFile *_first_grffile; @@ -3355,12 +3354,47 @@ static void GraphicsNew(byte *buf, int len) /* case 0x0C: // Snowy temperate trees. Not yet used by OTTD. */ case 0x0D: // Coast graphics - if (num != 16) { - grfmsg(1, "GraphicsNew: Coast graphics sprite count must be 16, skipping"); - return; + switch (num) { + case 10: + if (!_cur_grffile->is_ottdfile) { + grfmsg(2, "GraphicsNew: feature is reserved only for OpenTTD, skipping"); + return; + } + + /* openttd(d/w).grf missing shore sprites and initialisation of SPR_SHORE_BASE */ + LoadNextSprite( SPR_SHORE_BASE + 0, _file_index, _nfo_line++); // SLOPE_STEEP_S + DupSprite( 4063, SPR_SHORE_BASE + 1 ); // SLOPE_W + DupSprite( 4064, SPR_SHORE_BASE + 2 ); // SLOPE_S + DupSprite( 4068, SPR_SHORE_BASE + 3 ); // SLOPE_SW + DupSprite( 4062, SPR_SHORE_BASE + 4 ); // SLOPE_E + LoadNextSprite( SPR_SHORE_BASE + 5, _file_index, _nfo_line++); // SLOPE_STEEP_W + DupSprite( 4066, SPR_SHORE_BASE + 6 ); // SLOPE_SE + LoadNextSprite( SPR_SHORE_BASE + 7, _file_index, _nfo_line++); // SLOPE_WSE + DupSprite( 4065, SPR_SHORE_BASE + 8 ); // SLOPE_N + DupSprite( 4069, SPR_SHORE_BASE + 9 ); // SLOPE_NW + LoadNextSprite( SPR_SHORE_BASE + 10, _file_index, _nfo_line++); // SLOPE_STEEP_N + LoadNextSprite( SPR_SHORE_BASE + 11, _file_index, _nfo_line++); // SLOPE_NWS + DupSprite( 4067, SPR_SHORE_BASE + 12 ); // SLOPE_NE + LoadNextSprite( SPR_SHORE_BASE + 13, _file_index, _nfo_line++); // SLOPE_ENW + LoadNextSprite( SPR_SHORE_BASE + 14, _file_index, _nfo_line++); // SLOPE_SEN + LoadNextSprite( SPR_SHORE_BASE + 15, _file_index, _nfo_line++); // SLOPE_STEEP_E + LoadNextSprite( SPR_SHORE_BASE + 16, _file_index, _nfo_line++); // SLOPE_EW + LoadNextSprite( SPR_SHORE_BASE + 17, _file_index, _nfo_line++); // SLOPE_NS + + grfmsg(2, "GraphicsNew: Loading all standard shore sprites"); + break; + + case 16: + case 18: + /* 'normal' newWater newGRF */ + replace = SPR_SHORE_BASE; + break; + + default: + /* no valid shore sprite count */ + grfmsg(1, "GraphicsNew: Shore graphics sprite count must be 10, 16 or 18, skipping"); + return; } - _coast_base = _cur_spriteid; - _loaded_newgrf_features.has_newwater = true; break; /* case 0x0E: // New Signals. Not yet used by OTTD. */ @@ -5083,8 +5117,6 @@ static void ResetNewGRFData() _loaded_newgrf_features.has_2CC = false; _loaded_newgrf_features.has_newhouses = false; _loaded_newgrf_features.has_newindustries = false; - _loaded_newgrf_features.has_newwater = false; - _coast_base = 0; InitializeSoundPool(); InitializeSpriteGroupPool(); @@ -5473,7 +5505,7 @@ static void DecodeSpecialSprite(uint num, GrfLoadingStage stage) } -void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage) +void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage, bool ottd_grf) { const char *filename = config->filename; uint16 num; @@ -5492,6 +5524,7 @@ void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage) if (_cur_grffile == NULL) error("File '%s' lost in cache.\n", filename); if (stage == GLS_RESERVE && config->status != GCS_INITIALISED) return; if (stage == GLS_ACTIVATION && !HasBit(config->flags, GCF_RESERVED)) return; + _cur_grffile->is_ottdfile = ottd_grf; } if (file_index > LAST_GRF_SLOT) { @@ -5634,7 +5667,7 @@ void LoadNewGRF(uint load_index, uint file_index) if (!FioCheckFileExists(c->filename)) error("NewGRF file is missing '%s'", c->filename); if (stage == GLS_LABELSCAN) InitNewGRFFile(c, _cur_spriteid); - LoadNewGRFFile(c, slot++, stage); + LoadNewGRFFile(c, slot++, stage, true); if (stage == GLS_RESERVE) { SetBit(c->flags, GCF_RESERVED); } else if (stage == GLS_ACTIVATION) { diff --git a/src/newgrf.h b/src/newgrf.h index 283b35ec80..54b5c99c96 100644 --- a/src/newgrf.h +++ b/src/newgrf.h @@ -41,6 +41,7 @@ struct GRFLabel { struct GRFFile { char *filename; + bool is_ottdfile; uint32 grfid; uint16 sprite_offset; byte grf_version; @@ -84,19 +85,16 @@ struct GRFFile { extern GRFFile *_first_grffile; -extern SpriteID _coast_base; - struct GRFLoadedFeatures { bool has_2CC; ///< Set if any vehicle is loaded which uses 2cc (two company colours). bool has_newhouses; ///< Set if there are any newhouses loaded. bool has_newindustries; ///< Set if there are any newindustries loaded. - bool has_newwater; ///< Set it there are any newwater grf loaded }; /* Indicates which are the newgrf features currently loaded ingame */ extern GRFLoadedFeatures _loaded_newgrf_features; -void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage); +void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage, bool ottd_grf = false); void LoadNewGRF(uint load_index, uint file_index); void ReloadNewGRFData(); // in openttd.cpp diff --git a/src/table/files.h b/src/table/files.h index 79ee01b0b5..615029b6eb 100644 --- a/src/table/files.h +++ b/src/table/files.h @@ -34,7 +34,7 @@ static FileList files_dos = { }, { "SAMPLE.CAT", {0x42, 0x2e, 0xa3, 0xdd, 0x07, 0x4d, 0x28, 0x59, 0xbb, 0x51, 0x63, 0x9a, 0x6e, 0x0e, 0x85, 0xda} }, { "CHARS.GRF", {0x5f, 0x2e, 0xbf, 0x05, 0xb6, 0x12, 0x65, 0x81, 0xd2, 0x10, 0xa9, 0x19, 0x62, 0x41, 0x70, 0x64} }, - { "OPENTTDD.GRF", {0x60, 0xfe, 0xc1, 0xc7, 0x66, 0xe7, 0x59, 0xff, 0x1b, 0x6c, 0xc4, 0x5f, 0xe6, 0x6b, 0x8c, 0x91} } + { "OPENTTDD.GRF", {0x9a, 0x26, 0xc9, 0xd1, 0xa2, 0x39, 0xb8, 0xaa, 0x57, 0xac, 0x0f, 0xf0, 0xe4, 0x4b, 0x37, 0xb2} } }; static FileList files_win = { @@ -48,5 +48,5 @@ static FileList files_win = { }, { "SAMPLE.CAT", {0x92, 0x12, 0xe8, 0x1e, 0x72, 0xba, 0xdd, 0x4b, 0xbe, 0x1e, 0xae, 0xae, 0x66, 0x45, 0x8e, 0x10} }, { "CHARS.GRF", {0x5f, 0x2e, 0xbf, 0x05, 0xb6, 0x12, 0x65, 0x81, 0xd2, 0x10, 0xa9, 0x19, 0x62, 0x41, 0x70, 0x64} }, - { "OPENTTDW.GRF", {0x85, 0xb7, 0xd0, 0xa6, 0xc3, 0x86, 0x44, 0x03, 0xa1, 0x25, 0xa5, 0xbb, 0x50, 0x75, 0xa0, 0xa1} } + { "OPENTTDW.GRF", {0xa1, 0x9c, 0xaa, 0xfc, 0x6b, 0xd2, 0x09, 0xc3, 0xd4, 0x84, 0x33, 0x43, 0x3f, 0xd1, 0xbd, 0xd5} } }; diff --git a/src/table/sprites.h b/src/table/sprites.h index 16fc900d74..e906383a81 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -141,7 +141,11 @@ enum Sprites { SPR_2CCMAP_BASE = SPR_ELRAIL_BASE + ELRAIL_SPRITE_COUNT, TWOCCMAP_SPRITE_COUNT = 256, - SPR_AIRPORTX_BASE = SPR_2CCMAP_BASE + TWOCCMAP_SPRITE_COUNT, // The sprites used for other airport angles + /* shore tiles - action 05-0D */ + SPR_SHORE_BASE = SPR_2CCMAP_BASE + TWOCCMAP_SPRITE_COUNT, + SPR_SHORE_SPRITE_COUNT = 18, + + SPR_AIRPORTX_BASE = SPR_SHORE_BASE + SPR_SHORE_SPRITE_COUNT, // The sprites used for other airport angles SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE, SPR_NSRUNWAY1 = SPR_AIRPORTX_BASE + 1, SPR_NSRUNWAY2 = SPR_AIRPORTX_BASE + 2, @@ -553,17 +557,6 @@ enum Sprites { SPR_FARMLAND_STATE_7 = 4259, SPR_FARMLAND_HAYPACKS = 4278, - /* Shores */ - SPR_NO_SHORE = 0, //used for tileh which have no shore - SPR_SHORE_TILEH_4 = 4062, // SLOPE_E - SPR_SHORE_TILEH_1 = 4063, // SLOPE_W - SPR_SHORE_TILEH_2 = 4064, // SLOPE_S - SPR_SHORE_TILEH_8 = 4065, // SLOPE_N - SPR_SHORE_TILEH_6 = 4066, // SLOPE_SE - SPR_SHORE_TILEH_12 = 4067, // SLOPE_NE - SPR_SHORE_TILEH_3 = 4068, // SLOPE_SW - SPR_SHORE_TILEH_9 = 4069, // SLOPE_NW - /* Water-related sprites */ SPR_SHIP_DEPOT_SE_FRONT = 4070, SPR_SHIP_DEPOT_SW_FRONT = 4071, diff --git a/src/table/station_land.h b/src/table/station_land.h index 6f955daf37..61700bf283 100644 --- a/src/table/station_land.h +++ b/src/table/station_land.h @@ -1168,10 +1168,10 @@ static const DrawTileSprites _station_display_datas_oilrig[] = { }; static const DrawTileSprites _station_display_datas_dock[] = { - { SPR_SHORE_TILEH_3, PAL_NONE, _station_display_datas_76 }, - { SPR_SHORE_TILEH_9, PAL_NONE, _station_display_datas_77 }, - { SPR_SHORE_TILEH_12, PAL_NONE, _station_display_datas_78 }, - { SPR_SHORE_TILEH_6, PAL_NONE, _station_display_datas_79 }, + { SPR_SHORE_BASE + SLOPE_SW, PAL_NONE, _station_display_datas_76 }, + { SPR_SHORE_BASE + SLOPE_NW, PAL_NONE, _station_display_datas_77 }, + { SPR_SHORE_BASE + SLOPE_NE, PAL_NONE, _station_display_datas_78 }, + { SPR_SHORE_BASE + SLOPE_SE, PAL_NONE, _station_display_datas_79 }, { SPR_FLAT_WATER_TILE, PAL_NONE, _station_display_datas_80 }, { SPR_FLAT_WATER_TILE, PAL_NONE, _station_display_datas_81 }, }; diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 78aa37cc48..86cd583eca 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -33,25 +33,6 @@ #include "vehicle_func.h" #include "sound_func.h" -/** Array for the shore sprites */ -static const SpriteID _water_shore_sprites[] = { - 0, - SPR_SHORE_TILEH_1, // SLOPE_W - SPR_SHORE_TILEH_2, // SLOPE_S - SPR_SHORE_TILEH_3, // SLOPE_SW - SPR_SHORE_TILEH_4, // SLOPE_E - 0, - SPR_SHORE_TILEH_6, // SLOPE_SE - 0, - SPR_SHORE_TILEH_8, // SLOPE_N - SPR_SHORE_TILEH_9, // SLOPE_NW - 0, - 0, - SPR_SHORE_TILEH_12, // SLOPE_NE - 0, - 0 -}; - static Vehicle *FindFloodableVehicleOnTile(TileIndex tile); static void FloodVehicle(Vehicle *v); @@ -513,15 +494,18 @@ static void DrawTile_Water(TileInfo *ti) DrawBridgeMiddle(ti); break; - case WATER_TILE_COAST: + case WATER_TILE_COAST: { + /* Converts the enum Slope into an offset based on SPR_SHORE_BASE. + * This allows to calculate the proper sprite to display for this Slope */ + static const byte tileh_to_shoresprite[32] = { + 0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 17, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 10, 15, 0, + }; + assert(!IsSteepSlope(ti->tileh)); - if (_loaded_newgrf_features.has_newwater) { - DrawGroundSprite(_coast_base + ti->tileh, PAL_NONE); - } else { - DrawGroundSprite(_water_shore_sprites[ti->tileh], PAL_NONE); - } + DrawGroundSprite(SPR_SHORE_BASE + tileh_to_shoresprite[ti->tileh], PAL_NONE); DrawBridgeMiddle(ti); - break; + } break; case WATER_TILE_LOCK: { const WaterDrawTileStruct *t = _shiplift_display_seq[GetSection(ti->tile)];