/* * File: tile2.cc * Created by: ennewalker on Sat Jan 5 01:33:53 2008 UTC */ #include "AppHdr.h" #ifdef USE_TILE #include #include #include #include "branch.h" #include "env.h" #include "player.h" #include "stuff.h" #include "tiles.h" #include "tiledef-dngn.h" #include "tiledef-player.h" void tile_default_flv(level_area_type lev, branch_type br, tile_flavour &flv) { flv.wall = TILE_WALL_NORMAL; flv.floor = TILE_FLOOR_NORMAL; flv.special = 0; if (lev == LEVEL_PANDEMONIUM) { flv.floor = TILE_FLOOR_TOMB; switch (random2(7)) { default: case 0: flv.wall = TILE_WALL_ZOT_BLUE; break; case 1: flv.wall = TILE_WALL_ZOT_RED; break; case 2: flv.wall = TILE_WALL_ZOT_MAGENTA; break; case 3: flv.wall = TILE_WALL_ZOT_GREEN; break; case 4: flv.wall = TILE_WALL_ZOT_CYAN; break; case 5: flv.wall = TILE_WALL_ZOT_YELLOW; break; case 6: flv.wall = TILE_WALL_ZOT_WHITE; break; } if (one_chance_in(3)) flv.wall = TILE_WALL_FLESH; if (one_chance_in(3)) flv.floor = TILE_FLOOR_NERVES; return; } else if (lev == LEVEL_ABYSS) { flv.floor = TILE_FLOOR_NERVES; switch (random2(6)) { default: case 0: flv.wall = TILE_WALL_HIVE; break; case 1: flv.wall = TILE_WALL_PEBBLE_RED; break; case 2: flv.wall = TILE_WALL_SLIME; break; case 3: flv.wall = TILE_WALL_ICE; break; case 4: flv.wall = TILE_WALL_HALL; break; case 5: flv.wall = TILE_WALL_UNDEAD; break; } return; } else if (lev == LEVEL_LABYRINTH) { flv.wall = TILE_WALL_UNDEAD; flv.floor = TILE_FLOOR_TOMB; return; } else if (lev == LEVEL_PORTAL_VAULT) { // These should be handled in the respective lua files. flv.wall = TILE_WALL_NORMAL; flv.floor = TILE_FLOOR_NORMAL; return; } switch (br) { case BRANCH_MAIN_DUNGEON: flv.wall = TILE_WALL_NORMAL; flv.floor = TILE_FLOOR_NORMAL; return; case BRANCH_HIVE: flv.wall = TILE_WALL_HIVE; flv.floor = TILE_FLOOR_HIVE; return; case BRANCH_VAULTS: flv.wall = TILE_WALL_VAULT; flv.floor = TILE_FLOOR_VAULT; return; case BRANCH_ECUMENICAL_TEMPLE: flv.wall = TILE_WALL_VINES; flv.floor = TILE_FLOOR_VINES; return; case BRANCH_ELVEN_HALLS: case BRANCH_HALL_OF_BLADES: flv.wall = TILE_WALL_HALL; flv.floor = TILE_FLOOR_HALL; return; case BRANCH_TARTARUS: case BRANCH_CRYPT: case BRANCH_VESTIBULE_OF_HELL: flv.wall = TILE_WALL_UNDEAD; flv.floor = TILE_FLOOR_TOMB; return; case BRANCH_TOMB: flv.wall = TILE_WALL_TOMB; flv.floor = TILE_FLOOR_TOMB; return; case BRANCH_DIS: flv.wall = TILE_WALL_ZOT_CYAN; flv.floor = TILE_FLOOR_TOMB; return; case BRANCH_GEHENNA: flv.wall = TILE_WALL_ZOT_RED; flv.floor = TILE_FLOOR_ROUGH_RED; return; case BRANCH_COCYTUS: flv.wall = TILE_WALL_ICE; flv.floor = TILE_FLOOR_ICE; return; case BRANCH_ORCISH_MINES: flv.wall = TILE_WALL_ORC; flv.floor = TILE_FLOOR_ORC; return; case BRANCH_LAIR: flv.wall = TILE_WALL_LAIR; flv.floor = TILE_FLOOR_LAIR; return; case BRANCH_SLIME_PITS: flv.wall = TILE_WALL_SLIME; flv.floor = TILE_FLOOR_SLIME; return; case BRANCH_SNAKE_PIT: flv.wall = TILE_WALL_SNAKE; flv.floor = TILE_FLOOR_SNAKE; return; case BRANCH_SWAMP: flv.wall = TILE_WALL_SWAMP; flv.floor = TILE_FLOOR_SWAMP; return; case BRANCH_SHOALS: flv.wall = TILE_WALL_YELLOW_ROCK; flv.floor = TILE_FLOOR_SAND_STONE; return; case BRANCH_HALL_OF_ZOT: flv.wall = TILE_WALL_ZOT_YELLOW; flv.floor = TILE_FLOOR_TOMB; return; case NUM_BRANCHES: break; } } void tile_init_default_flavour() { tile_default_flv(you.level_type, you.where_are_you, env.tile_default); } // FIXME: Needs to be updated whenever the order of clouds or monsters changes. int get_clean_map_idx(int tile_idx) { int idx = tile_idx & TILE_FLAG_MASK; if (idx >= TILE_CLOUD_FIRE_0 && idx <= TILE_CLOUD_TLOC_ENERGY || idx >= TILEP_MONS_PANDEMONIUM_DEMON && idx <= TILEP_MONS_TEST_SPAWNER || idx >= TILEP_MCACHE_START) { return 0; } return tile_idx; } #endif