git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8383 c06c8d41-db1a-0410-9941-cceddc491573
IXWJ54CASZWYHSTDOU3TRQS2DSF4MKBRPO4VZYLE72JL5RD22O2AC NROTGB26G7CER2PUMZWEQTW6OCAAQBHEVVESKY7XBGFBTIZKFS3AC XZTGZ7MOPX7ZOHQ4IQPXOHGUH5WPRNOYAQ6IQOMZDZYNVSAYFTNAC PHZTAI6CW7JHKFW77MKDK75UCNWBXFK7VDD3D5ORVXUFWV3C3EVQC 4HLF6Q3OBOOHCCJ76L2BXVIYI6EMJ2G7O4XXZPFTLFP6BQGSUZNAC LS5XCCGKQHSJQGWLWLGTP2F5OYWK4ND5AQQAGRN6H2HVBSXNCCZAC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC PEZFWKRHDHV4UJTPK5XJZ3CGTZ3LPTDYSPTYBENLQ7VRSP7YFSIQC ZGWMTQ4GG7W5HDVHPQCWJIUK4LK4PS3CDOOIQSFANTU33D45DCPAC 3SQQ4MM6YO4I37CQ6GIBIX6BXAEVHNVNHPVMR3PPBBNO454D6XWQC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC MFONX2CQ4V7HA5NSD6P5NDDBXYDSKIOCYUKRZXJ4ZER2OKJWT2HQC DGB7DKTR6OEQEMOOF3MAHDT4PAPKZ54Y33MWYVD7XIOESPFAXHQQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC X6ULJWV7HNNP7XTRF4LT5OVBE4RARGQZARKJUSU6DR3PTQTR4JOQC WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC WF2DSJGR6PKLGQSXEFF4ZW4EZZFGMHXPXWUYAKYBPFJH6KJKAANQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC XKNRIFG2ULQLAAQ5GC4RBZPOERV73DLCNILEA5EP37JLIX5EP3OQC PBTLQZHBQK5TAIO7SNSCKSHOQQ65CFFI55OTTETV7FG2FCJOXKHQC UVO3NT3VC5KVZVJXMAHJLEIL2IRHQO6JVBPFKVENXPU3YMACCQFAC X4TW2JIQ6VTX5J7MXOUTJ7JK3765SE5OH54I6QYJSFFQACPCIEYAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC MCBXXIV6GICTZB56APSXMJEI63FVQWVZR3H2DRNMMFDH2XCGK4JAC WL5WZXFJ6TONUQRSHUY4GQ5USU47ILWNN5X2JDQZO4CRJJZSRQIAC IYKF7624NNMXQET3NQ5RVEB6DXXCZX4GQOPUGWF2DWBOIMUAB2QAC // Draw text labels// TODO enne - add an option for this// TODO enne - be more intelligent about not covering stuff upfor (unsigned int t = 0; t < TAG_MAX; t++)
FixedArray<tag_def, ENV_SHOW_DIAMETER, ENV_SHOW_DIAMETER> tag_show;int total_tags = 0;for (int t = TAG_MAX - 1; t >= 0; t--)
if (!on_screen(m_tags[t][i].gc))
if (!crawl_view.in_grid_los(m_tags[t][i].gc))continue;const coord_def ep = grid2show(m_tags[t][i].gc);if (tag_show(ep).text)continue;const char *str = m_tags[t][i].tag.c_str();int width = m_tag_font->string_width(str);tag_def &def = tag_show(ep);const int buffer = 2;def.left = -width / 2 - buffer;def.right = width / 2 + buffer;def.text = str;def.type = t;total_tags++;}if (total_tags)break;}if (!total_tags)return;// Draw text tags.// TODO enne - be more intelligent about not covering stuff upfor (int y = 0; y < ENV_SHOW_DIAMETER; y++){for (int x = 0; x < ENV_SHOW_DIAMETER; x++){coord_def ep(x, y);tag_def &def = tag_show(ep);if (!def.text)
if (menv[idx].is_named() && !mons_friendly_real(&menv[idx])&& menv[idx].type != MONS_PANDEMONIUM_DEMON)
const monsters *mon = &menv[idx];if (!player_monster_visible(mon)|| mons_is_lurking(mon)|| (mons_is_mimic(mon->type) && !mons_is_known_mimic(mon))|| mons_class_flag(mon->type, M_NO_EXP_GAIN))
if (menv[idx].type == MONS_PLAYER_GHOST){// Beautification hack. "Foo's ghost" is a little bit// verbose as a tag. "Foo" on its own should be sufficient.tiles.add_text_tag(TAG_NAMED_MONSTER, menv[idx].mname, gc);}else{tiles.add_text_tag(TAG_NAMED_MONSTER,menv[idx].name(DESC_CAP_A), gc);}
return;}const tag_pref pref = Options.tile_tag_pref;if (pref == TAGPREF_NONE)return;else if (pref == TAGPREF_TUTORIAL){const long kills = you.kills->num_kills(mon);const int limit = 3;if (!mon->is_named() && kills > limit)return;}else if (!mon->is_named())return;if (pref != TAGPREF_NAMED && mons_friendly_real(mon))return;// HACK. Names cover up pan demons in a weird way.if (mon->type == MONS_PANDEMONIUM_DEMON)return;if (mon->type == MONS_PLAYER_GHOST){// Beautification hack. "Foo's ghost" is a little bit// verbose as a tag. "Foo" on its own should be sufficient.tiles.add_text_tag(TAG_NAMED_MONSTER, mon->mname, gc);
enum cursor_type{CURSOR_MOUSE,CURSOR_TUTORIAL,CURSOR_MAX};// Ordering of tags is important: higher values cover up lower ones.enum text_tag_type{TAG_NAMED_MONSTER = 0,TAG_TUTORIAL = 1,TAG_CELL_DESC = 2,TAG_MAX};enum tag_pref{TAGPREF_NONE, // never display text tagsTAGPREF_TUTORIAL, // display text tags on "new" monstersTAGPREF_NAMED, // display text tags on named monsters (incl. friendlies)TAGPREF_ENEMY, // display text tags on enemy named monstersTAGPREF_MAX};
}int Kills::num_kills(const monsters *mon) const{kill_monster_desc desc(mon);kill_map::const_iterator iter = kills.find(desc);int total = (iter == kills.end() ? 0 : iter->second.kills);if (desc.modifier == kill_monster_desc::M_SHAPESHIFTER){desc.modifier = kill_monster_desc::M_NORMAL;iter = kills.find(desc);total += (iter == kills.end() ? 0 : iter->second.kills);}return total;
tile_tag_pref = (none | tutorial | named | enemy)This option defaults to "enemy" normally and "tutorial" in tutorialmodes. This settings determines which monsters receive text taglabels above them, describing what kind of monster they are.The "none" option turns off all tags. The "tutorial" optionshows the name of all monsters that the player has only killeda few times. The "named" options shows the names for all monsterswith names, friendly and enemy. The "enemy" option only shows thename of enemy monsters with names (such as uniques and ghosts.)