--- deliantra/Deliantra-Client/bin/cfplus 2006/06/02 06:22:55 1.42 +++ deliantra/Deliantra-Client/bin/cfplus 2006/06/02 16:32:12 1.44 @@ -110,6 +110,7 @@ our $BIND_EDITOR; our $SPELL_LIST; +our $PICKUP_CFG; sub status { $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]); @@ -932,6 +933,74 @@ $QUIT_DIALOG->show; } +sub make_pickup_cfg_window { + $PICKUP_CFG = new CFClient::UI::FancyFrame + title => "Autopickup configuration", + x => "center", + y => "center", + force_w => $WIDTH * 3/10, + force_h => $HEIGHT * 9/10; + + my $tbl = new CFClient::UI::Table; + my $tblrow = 0; + + $PICKUP_CFG->add (my $sw = new CFClient::UI::ScrolledWindow scrolled => $tbl, expand => 1); + + for ( + ["Enable (new) autopickup" => CFClient::Pickup::PU_NEWMODE], + ["Inhibit autopickup" => CFClient::Pickup::PU_INHIBIT], + ["Stop before pickup" => CFClient::Pickup::PU_STOP], + ["Debug autopickup" => CFClient::Pickup::PU_DEBUG], + ["Weapons"], + ["All weapons" => CFClient::Pickup::PU_ALLWEAPON], + ["Missile weapons" => CFClient::Pickup::PU_MISSILEWEAPON], + ["Bows" => CFClient::Pickup::PU_BOW], + ["Arrows" => CFClient::Pickup::PU_ARROW], + ["Armour"], + ["Helmets" => CFClient::Pickup::PU_HELMET], + ["Shields" => CFClient::Pickup::PU_SHIELD], + ["Body Armour" => CFClient::Pickup::PU_ARMOUR], + ["Boots" => CFClient::Pickup::PU_BOOTS], + ["Gloves" => CFClient::Pickup::PU_GLOVES], + ["Cloaks" => CFClient::Pickup::PU_CLOAK], + ["Readables"], + ["Spellbooks" => CFClient::Pickup::PU_SPELLBOOK], + ["Skillscrolls" => CFClient::Pickup::PU_SKILLSCROLL], + ["Normal Books/Scrolls" => CFClient::Pickup::PU_READABLES], + ["Misc"], + ["Food" => CFClient::Pickup::PU_FOOD], + ["Drinks" => CFClient::Pickup::PU_DRINK], + ["Valuables (Money, Gems)" => CFClient::Pickup::PU_VALUABLES], + ["Keys" => CFClient::Pickup::PU_KEY], + ["Magical Items" => CFClient::Pickup::PU_MAGICAL], + ["Potions" => CFClient::Pickup::PU_POTION], + ["Magic Devices" => CFClient::Pickup::PU_MAGIC_DEVICE], + ["Ignore cursed" => CFClient::Pickup::PU_NOT_CURSED], + ["Jewelery" => CFClient::Pickup::PU_JEWELS], + ) + { + unless (defined $_->[1]) { + $tbl->add (0, $tblrow++, new CFClient::UI::Label text => $_->[0], align => 0); + } else { + my $mask = $_->[1]; + $tbl->add (0, $tblrow, new CFClient::UI::Label text => $_->[0], align => -1); + $tbl->add (1, $tblrow++, new CFClient::UI::CheckBox + state => $CFG->{pickup} & $mask, + on_changed => sub { + my ($box, $value) = @_; + if ($value) { + $CFG->{pickup} |= $mask; + } else { + $CFG->{pickup} = $CFG->{pickup} & ~$mask; + } + $::CONN->send (sprintf "command pickup %u", $CFG->{pickup}); + }); + } + } + + $PICKUP_CFG +} + sub make_inventory_window { my $invwin = $INV_WINDOW = new CFClient::UI::FancyFrame x => "center", @@ -1241,6 +1310,12 @@ other => make_spell_list, tooltip => "The spell list"); + $BUTTONBAR->add (new CFClient::UI::Flopper + text => "Pickup", + other => make_pickup_cfg_window, + tooltip => "The pickup dialog"); + + $BUTTONBAR->add (new CFClient::UI::Button text => "Quit", tooltip => "Terminates the program",