diff options
| author | Petr Mrázek | 2011-07-23 17:29:05 +0200 |
|---|---|---|
| committer | Petr Mrázek | 2011-07-23 17:29:05 +0200 |
| commit | bd9643c8cca04117167c3e708fc23e35b1a42b45 (patch) | |
| tree | 11f5c1fdcc652c433e53fc751006c791ce678331 /library/TileTypes.cpp | |
| parent | 6b6eed34cc26481dfc03166b9d844be1a2eb68c8 (diff) | |
| parent | caf6f881df78b99b2f62e21effc4025d1b5ad9ab (diff) | |
| download | dfhack-bd9643c8cca04117167c3e708fc23e35b1a42b45.tar.gz dfhack-bd9643c8cca04117167c3e708fc23e35b1a42b45.tar.bz2 dfhack-bd9643c8cca04117167c3e708fc23e35b1a42b45.tar.xz | |
Merge branch 'dfapi'
Conflicts:
CMakeLists.txt
library/DFProcess-linux.cpp
library/include/dfhack-c/modules/Creatures_C.h
library/include/dfhack/modules/Maps.h
library/modules/Creatures_C.cpp
Diffstat (limited to 'library/TileTypes.cpp')
| -rw-r--r-- | library/TileTypes.cpp | 788 |
1 files changed, 788 insertions, 0 deletions
diff --git a/library/TileTypes.cpp b/library/TileTypes.cpp new file mode 100644 index 00000000..40b7768f --- /dev/null +++ b/library/TileTypes.cpp @@ -0,0 +1,788 @@ +/* +https://github.com/peterix/dfhack +Copyright (c) 2009-2011 Petr Mrázek (peterix@gmail.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include "Internal.h" +#include "dfhack/TileTypes.h" +#include "dfhack/Export.h" + +namespace DFHack +{ + const TileRow tileTypeTable[TILE_TYPE_ARRAY_LENGTH] = + { + // 0 + {"void",EMPTY, AIR, VAR_1}, + {"ramp top",RAMP_TOP, AIR, VAR_1}, + {"pool",POOL, SOIL, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + + // 10 + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {0, EMPTY, AIR, VAR_1}, + {"driftwood stack",FLOOR, DRIFTWOOD, VAR_1}, + + // 20 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"tree",TREE_OK, SOIL, VAR_1}, + {"ice stair up/down",STAIR_UPDOWN, ICE, VAR_1}, + {"ice stair down",STAIR_DOWN, ICE, VAR_1}, + {"ice stair up",STAIR_UP, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 30 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"empty space",EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"shrub",SHRUB_OK, SOIL, VAR_1}, + {"chasm",ENDLESS_PIT, AIR, VAR_1}, + {"obsidian stair up/down",STAIR_UPDOWN, OBSIDIAN, VAR_1}, + {"obsidian stair down",STAIR_DOWN, OBSIDIAN, VAR_1}, + {"obsidian stair up",STAIR_UP, OBSIDIAN, VAR_1}, + {"soil stair up/down",STAIR_UPDOWN, SOIL, VAR_1}, + + // 40 + {"soil stair down",STAIR_DOWN, SOIL, VAR_1}, + {"soil stair up",STAIR_UP, SOIL, VAR_1}, + {"eerie pit",ENDLESS_PIT, HFS, VAR_1}, + {"smooth stone floor",FLOOR, STONE, VAR_1 , TILE_SMOOTH }, + {"smooth obsidian floor",FLOOR, OBSIDIAN, VAR_1 , TILE_SMOOTH }, + {"smooth featstone? floor",FLOOR, FEATSTONE, VAR_1 , TILE_SMOOTH }, + {"smooth vein floor",FLOOR, VEIN, VAR_1 , TILE_SMOOTH }, + {"smooth ice floor",FLOOR, ICE, VAR_1 , TILE_SMOOTH }, + {0 ,EMPTY, AIR, VAR_1}, + {"grass stair up/down",STAIR_UPDOWN, GRASS, VAR_1}, + + // 50 + {"grass stair down",STAIR_DOWN, GRASS, VAR_1}, + {"grass stair up",STAIR_UP, GRASS, VAR_1}, + {"grass2 stair up/down",STAIR_UPDOWN, GRASS2, VAR_1}, + {"grass2 stair down",STAIR_DOWN, GRASS2, VAR_1}, + {"grass2 stair up",STAIR_UP, GRASS2, VAR_1}, + {"stone stair up/down",STAIR_UPDOWN, STONE, VAR_1}, + {"stone stair down",STAIR_DOWN, STONE, VAR_1}, + {"stone stair up",STAIR_UP, STONE, VAR_1}, + {"vein stair up/down",STAIR_UPDOWN, VEIN, VAR_1}, + {"vein stair down",STAIR_DOWN, VEIN, VAR_1}, + + // 60 + {"vein stair up",STAIR_UP, VEIN, VAR_1}, + {"featstone? stair up/down",STAIR_UPDOWN, FEATSTONE, VAR_1}, + {"featstone? stair down",STAIR_DOWN, FEATSTONE, VAR_1}, + {"featstone? stair up",STAIR_UP, FEATSTONE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone fortification",FORTIFICATION, STONE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"campfire",FLOOR, CAMPFIRE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 70 + {"fire",FLOOR, FIRE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone pillar",PILLAR, STONE, VAR_1}, + + //80 + {"obsidian pillar",PILLAR, OBSIDIAN, VAR_1,TILE_SMOOTH}, + {"featstone? pillar",PILLAR, FEATSTONE, VAR_1,TILE_SMOOTH}, + {"vein pillar",PILLAR, VEIN, VAR_1,TILE_SMOOTH}, + {"ice pillar",PILLAR, ICE, VAR_1,TILE_SMOOTH}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"waterfall landing",FLOOR, SOIL, VAR_1, TILE_WATERFALL }, // verify material + + // 90 + {"river source",FLOOR, SOIL, VAR_1, TILE_RIVER_SOURCE }, // verify material + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 100 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 110 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 120 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 130 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 140 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 150 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 160 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 170 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"cracked stone wall" ,WALL, STONE, VAR_1, TILE_CRACKED }, + {"damaged stone wall" ,WALL, STONE, VAR_1, TILE_DAMAGED }, + {"worn stone wall" ,WALL, STONE, VAR_1, TILE_WORN }, + {0 ,EMPTY, AIR, VAR_1}, + + // 180 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 190 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 200 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 210 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"stone wall" ,WALL, STONE, VAR_1}, + + // 220 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 230 + {0 ,EMPTY, AIR, VAR_1}, + {"sapling" ,SAPLING_OK, SOIL, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"dry grass ramp" ,RAMP, GRASS_DRY, VAR_1}, + {"dead grass ramp" ,RAMP, GRASS_DEAD, VAR_1}, + {"grass ramp" ,RAMP, GRASS, VAR_1}, + {"grass ramp" ,RAMP, GRASS2, VAR_1}, + {"stone ramp" ,RAMP, STONE, VAR_1}, + {"obsidian ramp" ,RAMP, OBSIDIAN, VAR_1}, + {"featstone? ramp" ,RAMP, FEATSTONE, VAR_1}, + + // 240 + {"vein ramp" ,RAMP, VEIN, VAR_1}, + {"soil ramp" ,RAMP, SOIL, VAR_1}, + {"ashes" ,FLOOR, ASHES, VAR_1}, + {"ashes" ,FLOOR, ASHES, VAR_2}, + {"ashes" ,FLOOR, ASHES, VAR_3}, + {"ice ramp" ,RAMP, ICE, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 250 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"ice floor" ,FLOOR, ICE, VAR_2}, + {"ice floor" ,FLOOR, ICE, VAR_3}, + + // 260 + {"ice floor" ,FLOOR, ICE, VAR_4}, + {"furrowed soil" ,FLOOR, SOIL, VAR_1}, + {"ice floor" ,FLOOR, ICE, VAR_1}, + {"semi-molten rock" ,WALL, MAGMA, VAR_1},// unminable magma wall + {"magma" ,FLOOR, MAGMA, VAR_1}, + {"soil wall" ,WALL, SOIL, VAR_1}, + {"glowing barrier" ,WALL, CYAN_GLOW, VAR_1}, + {"glowing floor" ,FLOOR, CYAN_GLOW, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"smooth obsidian wall RD2",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--SS--E-" }, + + // 270 + {"smooth obsidian wall R2D",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--S---EE" }, + {"smooth obsidian wall R2U",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N-----EE" }, + {"smooth obsidian wall RU2",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "NN----E-" }, + {"smooth obsidian wall L2U",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N---WW--" }, + {"smooth obsidian wall LU2",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "NN--W---" }, + {"smooth obsidian wall L2D",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--S-WW--" }, + {"smooth obsidian wall LD2",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--SSW---" }, + {"smooth obsidian wall LRUD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH ,"N-S-W-E-" }, + {"smooth obsidian wall RUD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N-S---E-" }, + {"smooth obsidian wall LRD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--S-W-E-" }, + + // 280 + {"smooth obsidian wall LRU",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N---W-E-" }, + {"smooth obsidian wall LUD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N-S-W---" }, + {"smooth obsidian wall RD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--S---E-" }, + {"smooth obsidian wall RU",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N-----E-" }, + {"smooth obsidian wall LU",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N---W---" }, + {"smooth obsidian wall LD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "--S-W---" }, + {"smooth obsidian wall UD",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "N-S-----" }, + {"smooth obsidian wall LR",WALL,OBSIDIAN,VAR_1 , TILE_SMOOTH , "----W-E-" }, + {"smooth featstone wall RD2",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--SS--E-" }, + {"smooth featstone wall R2D",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--S---EE" }, + + // 290 + {"smooth featstone wall R2U",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N-----EE" }, + {"smooth featstone wall RU2",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "NN----E-" }, + {"smooth featstone wall L2U",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N---WW--" }, + {"smooth featstone wall LU2",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "NN--W---" }, + {"smooth featstone wall L2D",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--S-WW--" }, + {"smooth featstone wall LD2",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--SSW---" }, + {"smooth featstone wall LRUD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH ,"N-S-W-E-" }, + {"smooth featstone wall RUD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N-S---E-" }, + {"smooth featstone wall LRD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--S-W-E-" }, + {"smooth featstone wall LRU",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N---W-E-" }, + + //300 + {"smooth featstone wall LUD",WALL,FEATSTONE,VAR_1, TILE_SMOOTH , "N-S-W---" }, + {"smooth featstone wall RD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--S---E-" }, + {"smooth featstone wall RU",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N-----E-" }, + {"smooth featstone wall LU",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N---W---" }, + {"smooth featstone wall LD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "--S-W---" }, + {"smooth featstone wall UD",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "N-S-----" }, + {"smooth featstone wall LR",WALL,FEATSTONE,VAR_1 , TILE_SMOOTH , "----W-E-" }, + {"smooth stone wall RD2",WALL,STONE,VAR_1 , TILE_SMOOTH , "--SS--E-" }, + {"smooth stone wall R2D",WALL,STONE,VAR_1 , TILE_SMOOTH , "--S---EE" }, + {"smooth stone wall R2U",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-----EE" }, + + //310 + {"smooth stone wall RU2",WALL,STONE,VAR_1 , TILE_SMOOTH , "NN----E-" }, + {"smooth stone wall L2U",WALL,STONE,VAR_1 , TILE_SMOOTH , "N---WW--" }, + {"smooth stone wall LU2",WALL,STONE,VAR_1 , TILE_SMOOTH , "NN--W---" }, + {"smooth stone wall L2D",WALL,STONE,VAR_1 , TILE_SMOOTH , "--S-WW--" }, + {"smooth stone wall LD2",WALL,STONE,VAR_1 , TILE_SMOOTH , "--SSW---" }, + {"smooth stone wall LRUD",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-S-W-E-" }, + {"smooth stone wall RUD",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-S---E-" }, + {"smooth stone wall LRD",WALL,STONE,VAR_1 , TILE_SMOOTH , "--S-W-E-" }, + {"smooth stone wall LRU",WALL,STONE,VAR_1 , TILE_SMOOTH , "N---W-E-" }, + {"smooth stone wall LUD",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-S-W---" }, + + //320 + {"smooth stone wall RD",WALL,STONE,VAR_1 , TILE_SMOOTH , "--S---E-" }, + {"smooth stone wall RU",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-----E-" }, + {"smooth stone wall LU",WALL,STONE,VAR_1 , TILE_SMOOTH , "N---W---" }, + {"smooth stone wall LD",WALL,STONE,VAR_1 , TILE_SMOOTH , "--S-W---" }, + {"smooth stone wall UD",WALL,STONE,VAR_1 , TILE_SMOOTH , "N-S-----" }, + {"smooth stone wall LR",WALL,STONE,VAR_1 , TILE_SMOOTH , "----W-E-" }, + {"obsidian fortification",FORTIFICATION,OBSIDIAN,VAR_1}, + {"featstone? fortification",FORTIFICATION,FEATSTONE,VAR_1}, + {"cracked obsidian wall",WALL,OBSIDIAN,VAR_1, TILE_CRACKED }, + {"damaged obsidian wall",WALL,OBSIDIAN,VAR_1, TILE_DAMAGED }, + + // 330 + {"worn obsidian wall",WALL,OBSIDIAN,VAR_1, TILE_WORN}, + {"obsidian wall",WALL,OBSIDIAN,VAR_1}, + {"cracked featstone wall",WALL,FEATSTONE,VAR_1, TILE_CRACKED }, + {"damaged featstone wall",WALL,FEATSTONE,VAR_1, TILE_DAMAGED }, + {"worn featstone wall",WALL,FEATSTONE,VAR_1, TILE_WORN }, + {"featstone wall",WALL,FEATSTONE,VAR_1}, + {"stone floor",FLOOR,STONE,VAR_1}, + {"stone floor",FLOOR,STONE,VAR_2}, + {"stone floor",FLOOR,STONE,VAR_3}, + {"stone floor",FLOOR,STONE,VAR_4}, + + // 340 + {"obsidian floor",FLOOR,OBSIDIAN,VAR_1}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_2}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_3}, + {"obsidian floor",FLOOR,OBSIDIAN,VAR_4}, + {"featstone floor 1",FLOOR,FEATSTONE,VAR_1}, + {"featstone floor 2",FLOOR,FEATSTONE,VAR_2}, + {"featstone floor 3",FLOOR,FEATSTONE,VAR_3}, + {"featstone floor 4",FLOOR,FEATSTONE,VAR_4}, + {"grass 1",FLOOR,GRASS,VAR_1}, + {"grass 2",FLOOR,GRASS,VAR_2}, + + // 350 + {"grass 3",FLOOR,GRASS,VAR_3}, + {"grass 4",FLOOR,GRASS,VAR_4}, + {"soil floor",FLOOR,SOIL,VAR_1}, + {"soil floor",FLOOR,SOIL,VAR_2}, + {"soil floor",FLOOR,SOIL,VAR_3}, + {"soil floor",FLOOR,SOIL,VAR_4}, + {"wet soil floor",FLOOR,SOIL,VAR_1}, + {"wet soil floor",FLOOR,SOIL,VAR_2}, + {"wet soil floor",FLOOR,SOIL,VAR_3}, + {"wet soil floor",FLOOR,SOIL,VAR_4}, + + // 360 + {"ice fortification",FORTIFICATION,ICE,VAR_1}, + {"cracked ice wall",WALL,ICE,VAR_1, TILE_CRACKED}, + {"damaged ice wall",WALL,ICE,VAR_1, TILE_DAMAGED}, + {"worn ice wall",WALL,ICE,VAR_1, TILE_WORN }, + {"ice wall",WALL,ICE,VAR_1}, + {"river N",RIVER_BED,SOIL,VAR_1, TILE_NORMAL, "N" }, + {"river S",RIVER_BED,SOIL,VAR_1, TILE_NORMAL, "S" }, + {"river E",RIVER_BED,SOIL,VAR_1, TILE_NORMAL, "E" }, + {"river W",RIVER_BED,SOIL,VAR_1, TILE_NORMAL, "W" }, + {"river NW",RIVER_BED,SOIL,VAR_1,TILE_NORMAL, "NW"}, + + //370 + {"river NE",RIVER_BED,SOIL,VAR_1, TILE_NORMAL , "NE" }, + {"river SW",RIVER_BED,SOIL,VAR_1, TILE_NORMAL , "SW" }, + {"river SE",RIVER_BED,SOIL,VAR_1, TILE_NORMAL , "SE" }, + {"brook bed N",BROOK_BED,SOIL,VAR_1, TILE_NORMAL , "N" }, + {"brook bed S",BROOK_BED,SOIL,VAR_1, TILE_NORMAL , "S" }, + {"brook bed E",BROOK_BED,SOIL,VAR_1, TILE_NORMAL , "E" }, + {"brook bed W",BROOK_BED,SOIL,VAR_1, TILE_NORMAL , "W" }, + {"brook bed NW",BROOK_BED,SOIL,VAR_1, TILE_NORMAL, "NW" }, + {"brook bed NE",BROOK_BED,SOIL,VAR_1, TILE_NORMAL, "NE" }, + {"brook bed SW",BROOK_BED,SOIL,VAR_1, TILE_NORMAL, "SW" }, + + // 380 + {"brook bed SE",BROOK_BED,SOIL,VAR_1, TILE_NORMAL, "SE" }, + {"brook top",BROOK_TOP,SOIL,VAR_1 }, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"dry grass 1",FLOOR,GRASS_DRY,VAR_1}, + {"dry grass 2",FLOOR,GRASS_DRY,VAR_2}, + {"dry grass 3",FLOOR,GRASS_DRY,VAR_3}, + + // 390 + {"dry grass 4",FLOOR,GRASS_DRY,VAR_4}, + {"dead tree",TREE_DEAD,SOIL,VAR_1}, + {"dead sapling",SAPLING_DEAD,SOIL,VAR_1}, + {"dead shrub",SHRUB_DEAD,SOIL,VAR_1}, + {"dead grass 1",FLOOR,GRASS_DEAD,VAR_1}, + {"dead grass 2",FLOOR,GRASS_DEAD,VAR_2}, + {"dead grass 3",FLOOR,GRASS_DEAD,VAR_3}, + {"dead grass 4",FLOOR,GRASS_DEAD,VAR_4}, + {"grass B1",FLOOR,GRASS2,VAR_1}, + {"grass B2",FLOOR,GRASS2,VAR_2}, + + // 400 + {"grass B3",FLOOR,GRASS2,VAR_3}, + {"grass B4",FLOOR,GRASS2,VAR_4}, + {"boulder",BOULDER,STONE,VAR_1}, + {"obsidian boulder",BOULDER,OBSIDIAN,VAR_1}, + {"featstone? boulder",BOULDER,FEATSTONE,VAR_1}, + {"pebbles 1",PEBBLES,STONE,VAR_1}, + {"pebbles 2",PEBBLES,STONE,VAR_2}, + {"pebbles 3",PEBBLES,STONE,VAR_3}, + {"pebbles 4",PEBBLES,STONE,VAR_4}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_1}, + + // 410 + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_2}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_3}, + {"obsidian shards",PEBBLES,OBSIDIAN,VAR_4}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_1}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_2}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_3}, + {"featstone? pebbles",PEBBLES,FEATSTONE,VAR_4}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--SS--E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--S---EE"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-----EE" }, + + // 420 + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "NN----E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N---WW--"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "NN--W---"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--S-WW--" }, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--SSW---"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-S-W-E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-S---E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--S-W-E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N---W-E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-S-W---"}, + + // 430 + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--S---E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-----E-"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N---W---"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "--S-W---"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "N-S-----"}, + {"smooth vein wall",WALL,VEIN,VAR_1 , TILE_SMOOTH , "----W-E-"}, + {"vein fortification",FORTIFICATION,VEIN,VAR_1}, + {"cracked vein wall",WALL,VEIN,VAR_1, TILE_CRACKED }, + {"damaged vein wall",WALL,VEIN,VAR_1, TILE_DAMAGED }, + {"worn vein wall",WALL,VEIN,VAR_1 , TILE_WORN }, + + // 440 + {"vein wall",WALL,VEIN,VAR_1}, + {"vein floor",FLOOR,VEIN,VAR_1}, + {"vein floor",FLOOR,VEIN,VAR_2}, + {"vein floor",FLOOR,VEIN,VAR_3}, + {"vein floor",FLOOR,VEIN,VAR_4}, + {"vein boulder",BOULDER,VEIN,VAR_1}, + {"vein pebbles",PEBBLES,VEIN,VAR_1}, + {"vein pebbles",PEBBLES,VEIN,VAR_2}, + {"vein pebbles",PEBBLES,VEIN,VAR_3}, + {"vein pebbles",PEBBLES,VEIN,VAR_4}, + + // 450 + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--SS--E-"}, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--S---EE" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-----EE" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "NN----E-"}, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N---WW--" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "NN--W---" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--S-WW--" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--SSW---" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-S-W-E-"}, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-S---E-" }, + + // 460 + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--S-W-E-" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N---W-E-" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-S-W---"}, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--S---E-"}, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-----E-" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N---W---" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "--S-W---" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "N-S-----" }, + {"smooth ice wall",WALL,ICE,VAR_1 , TILE_SMOOTH , "----W-E-"}, + {0 ,EMPTY, AIR, VAR_1}, + + // 470 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 480 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + + // 490 + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {0 ,EMPTY, AIR, VAR_1}, + {"constructed floor",FLOOR,CONSTRUCTED, VAR_1}, + {"constructed fortification",FORTIFICATION,CONSTRUCTED, VAR_1}, + {"constructed pillar",PILLAR,CONSTRUCTED, VAR_1}, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--SS--E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--S---EE" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-----EE" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "NN----E-" }, + + // 500 + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N---WW--" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "NN--W---" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--S-WW--" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--SSW---" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-S-W-E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-S---E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--S-W-E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N---W-E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-S-W---" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--S---E-" }, + + // 510 + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-----E-" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N---W---" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "--S-W---" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "N-S-----" }, + {"constructed wall",WALL,CONSTRUCTED, VAR_1 ,TILE_NORMAL, "----W-E-" }, + {"constructed stair up/down",STAIR_UPDOWN,CONSTRUCTED, VAR_1}, + {"constructed stair down",STAIR_DOWN,CONSTRUCTED, VAR_1}, + {"constructed stair up",STAIR_UP,CONSTRUCTED, VAR_1}, + {"constructed ramp",RAMP,CONSTRUCTED, VAR_1}, + {0 ,EMPTY, AIR, VAR_1} // end + }; + + //set tile class string lookup table (e.g. for printing to user) +#define X(name,comment) #name, + const char * TileShapeString[tileshape_count+1] = { + TILESHAPE_MACRO + 0 + }; +#undef X + + //string lookup table (e.g. for printing to user) +#define X(name,comment) #name, + const char * TileMaterialString[tilematerial_count+1] = { + TILEMATERIAL_MACRO + 0 + }; +#undef X + + //string lookup table (e.g. for printing to user) +#define X(name,comment) #name, + const char * TileSpecialString[tilespecial_count+1] = { + TILESPECIAL_MACRO + 0 + }; +#undef X + + int32_t findSimilarTileType( const int32_t sourceTileType, const TileShape tshape ) + { + int32_t match=0; + int value=0, matchv=0; + const TileRow *source = &tileTypeTable[sourceTileType]; + + //Shortcut. + //If the current tile is already a shape match, leave. + if( tshape == source->shape ) return sourceTileType; + + + //Cheap pseudo-entropy, by using address of the variable on the stack. + //No need for real random numbers. + static int entropy; + entropy += (int)( (void *)(&match) ); + entropy ^= ((entropy & 0xFF000000)>>24) ^ ((entropy & 0x00FF0000)>>16); + + + #ifdef assert + assert( sourceTileType >=0 && sourceTileType < TILE_TYPE_ARRAY_LENGTH ); + #endif + + //Special case for smooth pillars. + //When you want a smooth wall, no need to search for best match. Just use a pillar instead. + //Choosing the right direction would require knowing neighbors. + if( WALL==tshape && (TILE_SMOOTH==source->special || CONSTRUCTED==source->material) ){ + switch( source->material ){ + case CONSTRUCTED: match=495; break; + case ICE: match= 83; break; + case VEIN: match= 82; break; + case FEATSTONE: match= 81; break; + case OBSIDIAN: match= 80; break; + case STONE: match= 79; break; + } + if( match ) return match; + } + + + //Run through until perfect match found or hit end. + for(int32_t tt=0;tt<TILE_TYPE_ARRAY_LENGTH && value<(8|4|1); ++tt) + { + if( tshape == tileTypeTable[tt].shape ) + { + //shortcut null entries + if(!tileTypeTable[tt].name) continue; + + //Special flag match is absolutely mandatory! + if( source->special != tileTypeTable[tt].special ) continue; + + //Special case for constructions. + //Never turn a construction into a non-contruction. + if( CONSTRUCTED == source->material && CONSTRUCTED != tileTypeTable[tt].material ) continue; + + value=0; + //Material is high-value match + if( tileTypeTable[tt].material == source->material ) value|=8; + //Direction is medium value match + if( tileTypeTable[tt].direction.whole == source->direction.whole ) value|=4; + //Variant is low-value match + if( tileTypeTable[tt].variant == source->variant ) value|=1; + + //Check value against last match. + if( value>matchv ) + { + match=tt; + matchv=value; + } + } + } + + //Post-processing for floors. + //Give raw floors variation. + //Variant matters, but does not matter for source. + //Error on the side of caution. + if( FLOOR==tshape && CONSTRUCTED!=source->material && !source->special ) + { + //Trying to make a floor type with variants, so randomize the variant. + //Very picky, only handle known safe tile types. + //Some floors have 4 variants, some have 3, so the order of these matters. + switch( match ){ + case 261: + //Furrowed soil got chosen by accident. Fix that. + match=352+(3&entropy); + break; + case 336: //STONE + case 340: //OBSIDIAN + case 344: //featstone + case 349: //grass + case 352: //soil + case 356: //wet soil + case 387: //dry grass + case 394: //dead grass + case 398: //grass B + case 441: //vein + match += 3&entropy; + break; + case 242: //ASHES + case 258: //ICE + match += (1&entropy) + (2&entropy); + break; + } + } + + if( match ) return match; + return sourceTileType; + } +} |
