Incidentally, describe.cc needs to be fixed to describe marked/stacked decks properly.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2681 c06c8d41-db1a-0410-9941-cceddc491573
PTHJX2MZO5SDSHZMZOWBUPHUEZZPNU6NQAFOC6L3IYMO7C3C4UWQC
EGV2HM7SD7UQSWJGLR65NQJTUBAJ7WHLM67FMH4UFP7JRSFKREPAC
H2TREER2QXNII3D6GTVASY5RVE7S7KATVKWRKOOISR5ZGOTLPFZQC
3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RR2J4VLJCZSAKY3HNS334KI4YUAPOMSETO2HGCGEEIUCUJAYAGSQC
Z7SW3IKYNXMOHHD77NGXN6RGL32PZBO6AIHLJY74IRO23AIRKWMQC
HZ6SBPPUHJUYFVXA6KOELY455RTBXICRJGVHTUYLHWAPV2DEOMSQC
2ESKXYN266CEMLSL6DNCKG4REDO34FXL4ODVGMWDJTNJRKMXWCRQC
mesclr();
mpr("Order the cards (bottom to top)...", MSGCH_PROMPT);
for ( unsigned int i = 0; i < draws.size(); ++i )
{
msg::stream << (static_cast<char>(i + 'a')) << " - "
<< card_name(draws[i]) << std::endl;
}
unsigned int selected = draws.size();
clrscr();
gotoxy(1,1);
textcolor(WHITE);
cprintf("Press a digit to select a card, "
"then another digit to swap it.");
gotoxy(1,10);
cprintf("Press Enter to accept.");
int selected = -1;
while ( true )
{
const int keyin = tolower(get_ch());
if (keyin >= 'a' && keyin < 'a' + static_cast<int>(draws.size()))
redraw_stacked_cards(draws, selected);
// Hand-hacked implementation, instead of using Menu. Oh well.
while (1) {
const int c = getch();
if ( c == CK_ENTER )
canned_msg(MSG_HUH);
const unsigned int new_selected = c - '1';
if ( selected < draws.size() )
{
std::swap(draws[selected], draws[new_selected]);
std::swap(flags[selected], flags[new_selected]);
selected = draws.size();
}
else
selected = new_selected;
redraw_stacked_cards(draws, selected);
push_top_card(deck, draws[0], flags[0]);
props["num_marked"] = (char) num_to_stack;
for ( unsigned int i = 0; i < draws.size(); ++i )
push_top_card(deck, draws[draws.size() - 1 - i],
flags[flags.size() - 1 - i]);
props["num_marked"] = static_cast<char>(num_to_stack);