1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#ifndef ENV_H
#define ENV_H
#include "map_knowledge.h"
#include "monster.h"
#include "show.h"
#include "trap_def.h"
#include <set>
typedef FixedArray<short, GXM, GYM> grid_heightmap;
typedef uint32_t terrain_property_t;
typedef std::set<std::string> string_set;
struct vault_placement;
typedef std::vector<vault_placement*> vault_placement_refv;
struct crawl_environment
{
unsigned char rock_colour;
unsigned char floor_colour;
FixedVector< item_def, MAX_ITEMS > item; // item list
FixedVector< monsters, MAX_MONSTERS > mons; // monster list
feature_grid grid; // terrain grid
FixedArray<terrain_property_t, GXM, GYM> pgrid; // terrain properties
FixedArray< unsigned short, GXM, GYM > mgrid; // monster grid
FixedArray< int, GXM, GYM > igrid; // item grid
FixedArray< unsigned short, GXM, GYM > cgrid; // cloud grid
FixedArray< unsigned short, GXM, GYM > grid_colours; // colour overrides
FixedArray< unsigned short, GXM, GYM > tgrid; // traps, shops
map_mask level_map_mask;
map_mask level_map_ids;
string_set level_uniq_maps;
string_set level_uniq_map_tags;
std::string level_build_method;
std::string level_layout_type;
vault_placement_refv level_vaults;
std::auto_ptr<grid_heightmap> heightmap;
// Player-remembered terrain. TODO: move to class player.
FixedArray< map_cell, GXM, GYM > map_knowledge;
// Objects that are in LOS, used for drawing.
show_def show;
#ifdef USE_TILE
// indexed by grid coords
FixedArray<tile_fg_store, GXM, GYM> tile_bk_fg;
FixedArray<tileidx_t, GXM, GYM> tile_bk_bg;
FixedArray<tile_flavour, GXM, GYM> tile_flv;
// indexed by (show-1) coords
FixedArray<tileidx_t, ENV_SHOW_DIAMETER, ENV_SHOW_DIAMETER> tile_fg;
FixedArray<tileidx_t, ENV_SHOW_DIAMETER, ENV_SHOW_DIAMETER> tile_bg;
tile_flavour tile_default;
#endif
FixedVector< cloud_struct, MAX_CLOUDS > cloud; // cloud list
short cloud_no;
FixedVector< shop_struct, MAX_SHOPS > shop; // shop list
FixedVector< trap_def, MAX_TRAPS > trap; // trap list
FixedVector< monster_type, MAX_MONS_ALLOC > mons_alloc;
map_markers markers;
// Place to associate arbitrary data with a particular level.
// Sort of like player::attribute
CrawlHashTable properties;
// Rate at which random monsters spawn, with lower numbers making
// them spawn more often (5 or less causes one to spawn about every
// 5 turns). Set to 0 to stop random generation.
int spawn_random_rate;
// Time when level was saved (hence we write out you.elapsed_time
// (but load it back to env.elapsed_time); used during level load
int elapsed_time;
// Which point did the player leave the level from?
coord_def old_player_pos;
// Number of turns the player has spent on this level.
int turns_on_level;
// Flags for things like preventing teleport control; see
// level_flag_type in enum.h
uint32_t level_flags;
// Index into the delayed actions array.
unsigned int dactions_done;
coord_def sanctuary_pos;
int sanctuary_time;
int forest_awoken_until;
};
extern struct crawl_environment env;
#endif
|