#ifndef FEATURE_H
#define FEATURE_H

#include "show.h"

struct feature_def
{
    dungeon_feature_type feat;
    const char*          name;
    const char*          vaultname;       // used for KFEAT and &(
    dungeon_char_type    dchar;           // used for creating symbol
    dungeon_char_type    magic_dchar;     // used for creating magic_symbol
    ucs_t                symbol;          // symbol used for seen terrain
    ucs_t                magic_symbol;    // symbol used for magic-mapped terrain
    unsigned short       colour;          // normal in LoS colour
    unsigned short       map_colour;      // colour when out of LoS on display
    unsigned short       seen_colour;     // map_colour when env.map_knowledge().seen()
    unsigned short       em_colour;       // Emphasised colour when in LoS.
    unsigned short       seen_em_colour;  // Emphasised colour when out of LoS
    unsigned             flags;
    map_feature          minimap;         // mini-map categorization

    bool is_notable() const { return flags & FFT_NOTABLE; }
};

void init_fd(feature_def& fd);
void init_show_table();

const feature_def &get_feature_def(show_type object);
const feature_def &get_feature_def(dungeon_feature_type feat);
bool is_valid_feature_type(dungeon_feature_type feat);

static inline bool is_notable_terrain(dungeon_feature_type ftype)
{
    return get_feature_def(ftype).is_notable();
}

dungeon_feature_type magic_map_base_feat(dungeon_feature_type feat);

#endif
