From 0c25a4b10ce61dad50f4e0c353fc582669d4f85f Mon Sep 17 00:00:00 2001 From: dominik Date: Fri, 13 Aug 2004 11:28:59 +0000 Subject: [PATCH] (svn r38) Preliminary slopes graphics fix. Neighboring tile check not done yet --- data/trkfoundw.grf | Bin 0 -> 91558 bytes landscape.c | 18 ++++++++++++++++-- readme.txt | 4 ++-- spritecache.c | 38 ++++++++++++++++++++++++++++++++------ table/landscape_sprite.h | 28 ++++++++++++++++++++++++++++ ttd.h | 5 +++-- 6 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 data/trkfoundw.grf diff --git a/data/trkfoundw.grf b/data/trkfoundw.grf new file mode 100644 index 0000000000000000000000000000000000000000..5fbfa36e98d44fedded8bc1b5ebc5e356d007084 GIT binary patch literal 91558 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 SnMNAlq>r~a={-`(00scz{9Gph literal 0 HcmV?d00001 diff --git a/landscape.c b/landscape.c index 7f953d96df..7863b0e1fc 100644 --- a/landscape.c +++ b/landscape.c @@ -241,19 +241,33 @@ uint GetSlopeZ(int x, int y) return _tile_type_procs[ti.type]->get_slope_z_proc(&ti); } +/* TODO: add check if this tile has a foundation or not. Since this can't be done easily with the + current landscape arrays, we might have to add a new TileTypeProc. */ +bool hasFoundation(uint tile) +{ + return true; +} + void DrawFoundation(TileInfo *ti, uint f) { + uint32 sprite_base = SPR_SLOPES_BASE-14; + if(hasFoundation( TILE_FROM_XY(ti->x, ti->y-1) )) sprite_base += 22; // foundation in NW direction + if(hasFoundation( TILE_FROM_XY(ti->x-1, ti->y) )) sprite_base += 22*2; // foundation in NE direction + if (f < 15) { // leveled foundation - AddSortableSpriteToDraw(f + 0x3DE - 1, ti->x, ti->y, 16, 16, 7, ti->z); + if( sprite_base < SPR_SLOPES_BASE ) sprite_base = 990; // use original slope sprites + + AddSortableSpriteToDraw(f-1 + sprite_base, ti->x, ti->y, 16, 16, 7, ti->z); ti->z += 8; ti->tileh = 0; OffsetGroundSprite(31, 1); } else { // inclined foundation + sprite_base += 14; AddSortableSpriteToDraw( - HASBIT( (1<<1) | (1<<2) | (1<<4) | (1<<8), ti->tileh) ? (SPR_OPENTTD_BASE+17) + (f - 15) : ti->tileh + 0x3DE - 1, + HASBIT( (1<<1) | (1<<2) | (1<<4) | (1<<8), ti->tileh) ? sprite_base + (f - 15) : ti->tileh + 0x3DE - 1, ti->x, ti->y, 1, 1, 1, ti->z ); diff --git a/readme.txt b/readme.txt index ed78af3a57..0c63b85610 100644 --- a/readme.txt +++ b/readme.txt @@ -211,9 +211,8 @@ The OpenTTD team: Viktor Strigeus (wiggo) - Web hosting services Thanks to: - Bug Reporters - Thanks for all bug reports. Josef Drexler - For his great work on TTDPatch. - Marcin Grzegorczyk - For his TTDPatch work and documentation of TTD internals and graphics. + Marcin Grzegorczyk - For his TTDPatch work and documentation of TTD internals and graphics (signals and track foundations). Mike Ragsdale - OpenTTD installer pasky - Many patches, newgrf support, etc. truesatan - Some patches @@ -221,5 +220,6 @@ Thanks to: Michael Polnick - Some patches Michael Blunck - Nice graphics George - Canal graphics + Bug Reporters - Thanks for all bug reports. Chris Sawyer - For an amazing game. diff --git a/spritecache.c b/spritecache.c index 3bcc68d4b4..21524a2e6f 100644 --- a/spritecache.c +++ b/spritecache.c @@ -71,6 +71,13 @@ static const uint16 * const _landscape_spriteindexes[] = { _landscape_spriteindexes_3, }; +static const uint16 * const _slopes_spriteindexes[] = { + _slopes_spriteindexes_0, + _slopes_spriteindexes_1, + _slopes_spriteindexes_2, + _slopes_spriteindexes_3, +}; + static void CompactSpriteCache(); void DecodeSpecialSprite(const char *filename, int num, int load_index); @@ -210,6 +217,19 @@ static bool LoadNextSprite(int load_index, byte file_index) return true; } +static void SkipSprites(int count) +{ + while(count>0) + { + uint16 size; + if ( (size = FioReadWord()) == 0) + return; + + ReadSpriteHeaderSkipData(size, NUM_SPRITES-1); + count--; + } +} + // Checks, if trg1r.grf is the Windows version static bool CheckGrfFile() { @@ -246,16 +266,20 @@ static int LoadGrfFile(const char *filename, int load_index, int file_index) static void LoadGrfIndexed(const char *filename, const uint16 *index_tbl, int file_index) { - int start, end; + int start; FioOpenFile(file_index, filename); for(;(start=*index_tbl++) != 0xffff;) { - end = *index_tbl++; - do { - bool b = LoadNextSprite(start, file_index); - assert(b); - } while (++start <= end); + int end = *index_tbl++; + if(start==0xfffe) { // skip sprites (amount in second var) + SkipSprites(end); + } else { // load sprites and use indexes from start to end + do { + bool b = LoadNextSprite(start, file_index); + assert(b); + } while (++start <= end); + } } } @@ -669,6 +693,8 @@ static void LoadSpriteTables() if ((l=_sprite_page_to_load) != 0) LoadGrfIndexed(_landscape_filenames[l-1], _landscape_spriteindexes[l-1], i++); } + + LoadGrfIndexed("trkfoundw.grf", _slopes_spriteindexes[_opt.landscape], i++); load_index = SPR_CANALS_BASE; load_index += LoadGrfFile("canalsw.grf", load_index, i++); diff --git a/table/landscape_sprite.h b/table/landscape_sprite.h index dfd9e84c85..2a4cf13b2e 100644 --- a/table/landscape_sprite.h +++ b/table/landscape_sprite.h @@ -132,3 +132,31 @@ static const SpriteID _landscape_spriteindexes_3[] = { }; +/* Slope graphics indexes temperate climate */ +static const SpriteID _slopes_spriteindexes_0[] = { + 0xfffe, 3, + SPR_SLOPES_BASE, SPR_SLOPES_BASE+73, + 0xffff, +}; + +/* Slope graphics indexes arctic climate */ +static const SpriteID _slopes_spriteindexes_1[] = { + 0xfffe, 79, + SPR_SLOPES_BASE, SPR_SLOPES_BASE+73, + 0xffff, +}; + +/* Slope graphics indexes tropical climate */ +static const SpriteID _slopes_spriteindexes_2[] = { + 0xfffe, 155, + SPR_SLOPES_BASE, SPR_SLOPES_BASE+73, + 0xffff, +}; + +/* Slope graphics indexes toyland climate */ +static const SpriteID _slopes_spriteindexes_3[] = { + 0xfffe, 231, + SPR_SLOPES_BASE, SPR_SLOPES_BASE+73, + 0xffff, +}; + diff --git a/ttd.h b/ttd.h index 9d4b296342..6395c5c8cd 100644 --- a/ttd.h +++ b/ttd.h @@ -468,8 +468,9 @@ enum SpecialStrings { typedef void PlaceProc(uint tile); enum Sprites { - SPR_OPENTTD_BASE = 0x1406, - SPR_CANALS_BASE = SPR_OPENTTD_BASE + 80, + SPR_CANALS_BASE = 0x1406, + SPR_SLOPES_BASE = SPR_CANALS_BASE + 70, + SPR_OPENTTD_BASE = SPR_SLOPES_BASE + 74, }; enum MAP_OWNERS {