# HG changeset patch # User dominik # Date 2004-08-13 11:28:59 # Node ID ead8cba1b6f2cb963c6753b4501ea510c1e0454b # Parent 5fa4dd10a7b1218f3156eac206a3f93744f4c117 (svn r38) Preliminary slopes graphics fix. Neighboring tile check not done yet 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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 SdRl!mJ&%=@?n)(R{`mjl{9Gph diff --git a/landscape.c b/landscape.c --- 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 --- 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 --- a/spritecache.c +++ b/spritecache.c @@ -71,6 +71,13 @@ static const uint16 * const _landscape_s _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_inde 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 *filen 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 --- a/table/landscape_sprite.h +++ b/table/landscape_sprite.h @@ -132,3 +132,31 @@ 0x10E4, 0x1133, }; +/* 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 --- 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 {