git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6691 c06c8d41-db1a-0410-9941-cceddc491573
PEZFWKRHDHV4UJTPK5XJZ3CGTZ3LPTDYSPTYBENLQ7VRSP7YFSIQC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
33QMQXTWFPR4LUBHEWTFGR74L5QJJDQTT5JZRBFTPDQBPXIHQIUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
OOFJ4IAVGB6DAUN2AWJBKMFKR7NCE5PCFF5IURV6L5TJYK6CHTHAC
75M6AVUSS3G5EJECJJRB67V5UYDOIV26FZNB2FFCMBZ33EK7FVIQC
CVC5FFFLGVRR3KPYDNB6RF4FNACV3LI3HPSR4MCUNZ4C3FSQYBDAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
QON6K747RDVN55UTIJWNGIIGSDS7IHKB24JMHWSIMAQ572D7C3NAC
TZLAHS2FQGDWDAO6OQFZIZALQCCRTCRBJZBNZFNQ4G7D5UYAIFQAC
LVCBY444HPB4RRFMUAZPHVZ67IC3L6DB27AEMCW3DEXHLBF73TMQC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
LE6H6TP2M6KXREJG245JAKDNN6GKT6QSIZ5FJTLV3NYYX5GFKBCAC
MFONX2CQ4V7HA5NSD6P5NDDBXYDSKIOCYUKRZXJ4ZER2OKJWT2HQC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
draw_cursor(CURSOR_TUTORIAL, TILE_TUTORIAL_CURSOR);
draw_cursor(CURSOR_MOUSE, see_grid(m_cursor[CURSOR_MOUSE]) ? TILE_CURSOR
: TILE_CURSOR2);
if (m_cursor[CURSOR_TUTORIAL] != NO_CURSOR
&& on_screen(m_cursor[CURSOR_TUTORIAL]))
{
add_quad(TEX_DEFAULT, TILE_TUTORIAL_CURSOR,
m_cursor[CURSOR_TUTORIAL].x,
m_cursor[CURSOR_TUTORIAL].y);
}
// TODO enne - can we handle this through tooltips
// Destroying the message area is such bad behaviour.
// mesclr();
// terse_describe_square(gc);
if (event.event == MouseEvent::MOVE)
{
const std::string &desc = get_terse_square_desc(gc);
// Suppress floor description
if (desc != "floor")
tiles.add_text_tag(TAG_CELL_DESC, desc, gc);
}
unsigned int unmask = ~((type == CURSOR_MOUSE) ? TILE_FLAG_CURSOR :
TILE_FLAG_TUT_CURSOR);
unsigned int mask = (type == CURSOR_MOUSE) ? TILE_FLAG_CURSOR1 :
TILE_FLAG_TUT_CURSOR;
// Remove cursor from previous location
if (on_screen(m_cursor[type]))
{
unsigned int idx = get_buffer_index(m_cursor[type]) + 1;
m_tileb[idx] &= unmask;
}
}
// Add cursor to new location
if ((m_cursor[type] != NO_CURSOR) && on_screen(m_cursor[type]))
{
unsigned int idx = get_buffer_index(m_cursor[type]) + 1;
m_tileb[idx] &= unmask;
// TODO enne - specify type of cursor in place_cursor? or determine type based on grd?
m_tileb[idx] |= mask;
dungeon_feature_type grid_secret_door_appearance( const coord_def& where );
bool grid_destroys_items( dungeon_feature_type grid );
dungeon_feature_type grid_secret_door_appearance(const coord_def &where);
dungeon_feature_type grid_appearance(const coord_def &gc);
unsigned int show_appearance(const coord_def &ep);
bool grid_destroys_items(dungeon_feature_type grid);
}
std::string get_terse_square_desc(const coord_def &gc)
{
std::string desc;
const char *unseen_desc = "[unseen terrain]";
bool is_feature = false;
if (gc == you.pos())
{
desc = you.your_name;
}
else if (!map_bounds(gc))
{
desc = unseen_desc;
}
else if (!see_grid(gc))
{
if (is_terrain_seen(gc))
{
desc = feature_description(gc, false, DESC_PLAIN, false);
if (!see_grid(gc))
{
desc = "[" + desc + "]";
}
is_feature = true;
}
else
{
desc = unseen_desc;
}
}
else if (mgrd(gc) != NON_MONSTER)
{
const monsters &mons = menv[mgrd(gc)];
if (mons_is_mimic(mons.type) && !(mons.flags & MF_KNOWN_MIMIC))
{
item_def item;
get_mimic_item(&mons, item);
desc = item.name(DESC_PLAIN);
}
else
{
desc = mons.name(DESC_PLAIN);
if (mons.has_base_name())
{
desc += ", ";
desc += mons.base_name(DESC_NOCAP_THE, false);
}
}
}
else if (igrd(gc) != NON_ITEM)
{
desc = mitm[igrd(gc)].name(DESC_PLAIN);
}
else
{
desc = feature_description(gc, false, DESC_PLAIN, false);
is_feature = true;
}
return desc;