saved games.
Bugs/issues:
I guess the equipment problem could be solved by yet another per-character save file similar to dolls.txt, so newgame.cc could read directly from this rather than have to open the save to calculate equipment tiles or any such insanity.
*) presumably because maxpagesize() assumes the entire screen is available for use by the menu
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10083 c06c8d41-db1a-0410-9941-cceddc491573
QFIV4YISNBTC5QXN7JYHEL3FBFWIQ2HKJ4YBDCZYTQ3PMPFE653AC ZF6STV5NEMEP5O5S6QO52R2CS5JEAGUQA5OKSBI2BIWF3OLZP4CQC DK76MINM4TMQKZ6HKMJZMZM7QPGQUO3YY3I226G7JDUYJJLWKWAQC HBPUTW5HDHUEPB62DMJ6GGP2D2GLZB53O5VRTWDLQ4Z53NWB3MKQC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC PUQVSISR5TQFRV6UKOFREN45ZM4YSCST5QSJ2J5CHIHOSYK62MOQC 5RMVWNNF56I7AIBTRBTQAXIJND7JKLJL5OYYKNJOUQSRL5JY7C3QC MK7MCWBPFRJSUWVXZ43LPFJ5Y2AYZZCREDYBT7AWJUMTQ2ET5AZQC 6ARBZEUSCIPVJUQJST5HG6TKQYQZPOHWYIIJO4OD2SUECPYMLVIQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC TW7QOMTSLYPGUUWHGHLY5G5LV6QQRQIKK4BSE64RY7RDGKVDHCEAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC 4O3VTUJT5T7NBNF3Q45XO2WHS6TCJXVLH6CKX4K36WUBDRT5F6KAC UKYGZDI6PYZPXDACCQGVPHANUP5ADCSNROOZIE7LYIZQWSNFHJZAC VEHHZZFWDG5M4IXTCXXMKH3S2FSXTZ4CD23J6AYVFEPY7PBZ7GWQC DWQDVEHZSTDVFS2GU24ZLIGJDA3M4767TB734JAQEAUVOOCLZ75AC NMRKYZUPI6EOC4KONJKB2RHSCC6ONYJUOXQJ7PYJ7V4OBWPRO7AQC RXZRRWQZH7H3E66ENDI6WTSDDTC5F7MDGIMZTEDYDE4YCUQN4CSAC 5CGIHK2MZLWM63N2VCQTALRO5AB6HV2GB6ERJFI3MKCISOVKSBKQC 6EJRFPJJRSIISDNDZWODH5A7U4PVIWH4YUCHEPB4V2GLGFG4DLBAC AU3E5FTABBHFZAZHLGA3UUR5TCTRLDOEMAKTGGEWKCQVH77I3SYAC UIVESOFZ4C262RYTFHSTFZIYTPTWSRJCFJAOZX7O2PQ35DFRDDEAC cgotoxy(1,12);formatted_string::parse_string(" If you've never been here before, you might want to try out" EOL" the Dungeon Crawl tutorial. To do this, press ""<white>Ctrl-T</white> on the next" EOL" screen.").display();
cgotoxy(1,12);formatted_string::parse_string(" If you've never been here before, you might want to try out" EOL" the Dungeon Crawl tutorial. To do this, press ""<white>Ctrl-T</white> on the next" EOL" screen.").display();
MenuEntry *title = new MenuEntry("Or choose an existing character:");title->colour = LIGHTCYAN;char_menu.set_title( title );for (unsigned int i = 0; i < existing_chars.size(); ++i){std::string desc = " " + existing_chars[i].short_desc();if (static_cast<int>(desc.length()) >= get_number_of_cols())desc = desc.substr(0, get_number_of_cols() - 1);
MenuEntry *title = new MenuEntry("Or choose an existing character:");title->colour = LIGHTCYAN;char_menu.set_title( title );for (unsigned int i = 0; i < existing_chars.size(); ++i){std::string desc = " " + existing_chars[i].short_desc();if (static_cast<int>(desc.length()) >= get_number_of_cols())desc = desc.substr(0, get_number_of_cols() - 1);
MenuEntry *me = new MenuEntry(desc);me->data = &existing_chars[i];char_menu.add_entry(me);}char_menu.set_flags(MF_NOWRAP | MF_SINGLESELECT);
#ifdef USE_TILEMenuEntry *me = new PlayerMenuEntry(desc);#elseMenuEntry *me = new MenuEntry(desc);#endifme->data = &existing_chars[i];char_menu.add_entry(me);}
return (true);}bool PlayerMenuEntry::get_tiles(std::vector<tile_def>& tileset) const{if (!Options.tile_menu_icons)return (false);const player_save_info &player = *static_cast<player_save_info*>( data );dolls_data equip_doll;for (unsigned int j = 0; j < TILEP_PART_MAX; ++j)equip_doll.parts[j] = TILEP_SHOW_EQUIP;const int gender = TILEP_GENDER_MALE;tilep_race_default(player.species, gender, player.experience_level,equip_doll.parts);int job = get_class_by_name(player.class_name.c_str());if (job == -1)job = JOB_FIGHTER;tilep_job_default(job, gender, equip_doll.parts);// FIXME: A lot of code duplication from DungeonRegion::pack_doll().int p_order[TILEP_PART_MAX] ={TILEP_PART_SHADOW, // 0TILEP_PART_HALO,TILEP_PART_ENCH,TILEP_PART_DRCWING,TILEP_PART_CLOAK,TILEP_PART_BASE, // 5TILEP_PART_BOOTS,TILEP_PART_LEG,TILEP_PART_BODY,TILEP_PART_ARM,TILEP_PART_HAND1, // 10TILEP_PART_HAND2,TILEP_PART_HAIR,TILEP_PART_BEARD,TILEP_PART_HELM,TILEP_PART_DRCHEAD // 15};
int flags[TILEP_PART_MAX];tilep_calc_flags(equip_doll.parts, flags);// For skirts, boots go under the leg armour. For pants, they go over.if (equip_doll.parts[TILEP_PART_LEG] < TILEP_LEG_SKIRT_OFS){p_order[6] = TILEP_PART_BOOTS;p_order[7] = TILEP_PART_LEG;}for (int i = 0; i < TILEP_PART_MAX; ++i){const int p = p_order[i];const int idx = equip_doll.parts[p];if (idx == 0 || idx == TILEP_SHOW_EQUIP || flags[p] == TILEP_FLAG_HIDE)continue;ASSERT(idx >= TILE_MAIN_MAX && idx < TILEP_PLAYER_MAX);#if 0// FIXME: Is there any way to make this work with tile_def?int ymax = TILE_Y;if (flags[p] == TILEP_FLAG_CUT_CENTAUR|| flags[p] == TILEP_FLAG_CUT_NAGA){ymax = 18;}buf->add(doll.parts[p], x, y, 0, 0, true, ymax);#endiftileset.push_back(tile_def(idx, TEX_PLAYER));}