ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/cfplus
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/cfplus (file contents):
Revision 1.23 by root, Sun May 28 02:31:04 2006 UTC vs.
Revision 1.29 by root, Mon May 29 21:54:16 2006 UTC

101our $DEBUG_STATUS; 101our $DEBUG_STATUS;
102 102
103our $INV_WINDOW; 103our $INV_WINDOW;
104our $INV; 104our $INV;
105our $INVR; 105our $INVR;
106our $INVR_LBL; 106our $INV_RIGHT_HB;
107
108our $BIND_WINDOW;
107 109
108sub status { 110sub status {
109 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]); 111 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]);
110} 112}
111 113
435 437
436 &set_gauge_window_fontsize; 438 &set_gauge_window_fontsize;
437 439
438 $win 440 $win
439} 441}
442
440 443
441sub make_stats_window { 444sub make_stats_window {
442 my $tgw = new CFClient::UI::FancyFrame 445 my $tgw = new CFClient::UI::FancyFrame
443 req_y => $HEIGHT * (2/8), 446 req_y => $HEIGHT * (2/8),
444 req_x => -1, 447 req_x => -1,
864 }, 867 },
865 on_activate => sub { 868 on_activate => sub {
866 my ($input, $text) = @_; 869 my ($input, $text) = @_;
867 $input->set_text (''); 870 $input->set_text ('');
868 871
872 if ($text =~ /^\/bind\s+(.*)$/) {
873 CFClient::Recorder::open_binding_dialog ([$1]);
869 if ($text =~ /^\/(.*)/) { 874 } elsif ($text =~ /^\/(.*)/) {
870 $::CONN->user_send ($1); 875 $::CONN->user_send ($1);
871 } else { 876 } else {
872 my $say_cmd = $::CFG->{say_command} || 'say'; 877 my $say_cmd = $::CFG->{say_command} || 'say';
873 $::CONN->user_send ("$say_cmd $text"); 878 $::CONN->user_send ("$say_cmd $text");
874 } 879 }
936 $vb1->add (new CFClient::UI::Label align => 0, text => "Player"); 941 $vb1->add (new CFClient::UI::Label align => 0, text => "Player");
937 $vb1->add ($INV = new CFClient::UI::Inventory expand => 1); 942 $vb1->add ($INV = new CFClient::UI::Inventory expand => 1);
938 943
939 $hb->add (my $vb2 = new CFClient::UI::VBox); 944 $hb->add (my $vb2 = new CFClient::UI::VBox);
940 945
941 $vb2->add (my $hb2 = new CFClient::UI::HBox); 946 $vb2->add ($INV_RIGHT_HB = new CFClient::UI::HBox);
942 $hb2->add ($INVR_LBL = new CFClient::UI::Label align => 0, expand => 1, text => "Floor");
943 $hb2->add (new CFClient::UI::Button
944 text => "Close",
945 tooltip => "Close the currently open container (if one is open)",
946 on_activate => sub {
947 $CONN->send ("apply $CONN->{open_container}")
948 if $CONN->{open_container} != 0;
949 },
950 );
951 947
952 $vb2->add ($INVR = new CFClient::UI::Inventory expand => 1); 948 $vb2->add ($INVR = new CFClient::UI::Inventory expand => 1);
953 949
950 # XXX: Call after $INVR = ... because set_opencont sets the items
951 CFClient::Protocol::set_opencont ($::CONN, 0, "Floor");
952
954 $invwin 953 $invwin
954}
955
956sub make_binding_window {
957 my $binding_list = new CFClient::UI::VBox;
958
959 my $refresh = sub {
960 $binding_list->clear ();
961
962 for my $mod (keys %{$::CFG->{bindings}}) {
963 for my $sym (keys %{$::CFG->{bindings}->{$mod}}) {
964 my $cmds = $::CFG->{bindings}->{$mod}->{$sym};
965 next unless ref $cmds eq 'ARRAY' and @$cmds > 0;
966
967 my $lbl = join "; ", @$cmds;
968 my $nam = CFClient::Recorder::keycombo_to_name ($mod, $sym);
969 $binding_list->add (my $hb = new CFClient::UI::HBox);
970 $hb->add (new CFClient::UI::Button
971 text => "delete",
972 on_activate => sub {
973 $binding_list->remove ($hb);
974 delete $::CFG->{bindings}->{$mod}->{$sym};
975 });
976 $hb->add (new CFClient::UI::Label text => "($nam)");
977 $hb->add (new CFClient::UI::Label text => $lbl, expand => 1);
978 }
979 }
980 };
981
982 $BIND_WINDOW = new CFClient::UI::FancyFrame
983 title => "Bindings",
984 def_w => int $WIDTH * 7/8,
985 def_h => int $HEIGHT * 7/8,
986 on_visibility_change => sub {
987 my ($self, $visible) = @_;
988 if ($visible) {
989 $self->center;
990 $refresh->()
991 }
992 };
993
994 $BIND_WINDOW->add ($binding_list);
995 $refresh->();
996 $BIND_WINDOW
955} 997}
956 998
957sub make_help_window { 999sub make_help_window {
958 my $win = new CFClient::UI::FancyFrame 1000 my $win = new CFClient::UI::FancyFrame
959 def_w => int $WIDTH * 7/8, 1001 def_w => int $WIDTH * 7/8,
1093 $BUTTONBAR->add (new CFClient::UI::Button 1135 $BUTTONBAR->add (new CFClient::UI::Button
1094 text => "Save Config", 1136 text => "Save Config",
1095 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.", 1137 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.",
1096 on_activate => sub { 1138 on_activate => sub {
1097 $::CFG->{layout} = CFClient::UI::get_layout; 1139 $::CFG->{layout} = CFClient::UI::get_layout;
1098 CFClient::write_cfg "$Crossfire::VARDIR/pclientrc"; 1140 CFClient::write_cfg "$Crossfire::VARDIR/cfplusrc";
1099 status "Configuration Saved"; 1141 status "Configuration Saved";
1100 }, 1142 },
1101 ); 1143 );
1102 1144
1103 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => make_help_window, 1145 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => make_help_window,
1104 tooltip => "View Documentation"); 1146 tooltip => "View Documentation");
1147
1148 $BUTTONBAR->add (new CFClient::UI::Flopper
1149 text => "Bindings",
1150 other => make_binding_window,
1151 tooltip => "Lets you delete bindings you have made with the recorder"
1152 );
1153 $BUTTONBAR->add (new CFClient::UI::Flopper text => "[Rec]", other => CFClient::Recorder::make_window,
1154 tooltip => "This feature lets you record a series of actions (eg. walking a path or ready a skill) and bind them to keys");
1105 1155
1106 $BUTTONBAR->add (new CFClient::UI::Button 1156 $BUTTONBAR->add (new CFClient::UI::Button
1107 text => "Quit", 1157 text => "Quit",
1108 tooltip => "Terminates the program", 1158 tooltip => "Terminates the program",
1109 on_activate => sub { 1159 on_activate => sub {
1337############################################################################# 1387#############################################################################
1338 1388
1339$SIG{INT} = $SIG{TERM} = sub { exit }; 1389$SIG{INT} = $SIG{TERM} = sub { exit };
1340 1390
1341{ 1391{
1342 local $SIG{__DIE__} = sub { CFClient::fatal $_[0] }; 1392 local $SIG{__DIE__} = sub { CFClient::fatal $_[0] if defined $^S && !$^S };
1343 1393
1344 CFClient::read_cfg "$Crossfire::VARDIR/pclientrc"; 1394 CFClient::read_cfg "$Crossfire::VARDIR/cfplusrc";
1345 CFClient::UI::set_layout ($::CFG->{layout}); 1395 CFClient::UI::set_layout ($::CFG->{layout});
1346 1396
1347 my %DEF_CFG = ( 1397 my %DEF_CFG = (
1348 sdl_mode => 0, 1398 sdl_mode => 0,
1349 width => 640, 1399 width => 640,
1427 1477
1428END { CFClient::SDL_Quit } 1478END { CFClient::SDL_Quit }
1429 1479
1430=head1 NAME 1480=head1 NAME
1431 1481
1432pclient - A Crossfire+ and Crossfire game client 1482cfplus - A Crossfire+ and Crossfire game client
1433 1483
1434=head1 SYNOPSIS 1484=head1 SYNOPSIS
1435 1485
1436Just run it - no commandline arguments are supported. 1486Just run it - no commandline arguments are supported.
1437 1487
1438=head1 USAGE 1488=head1 USAGE
1439 1489
1440Pclient utilises OpenGL for all UI elements and the game. It is supposed to be used 1490cfplus utilises OpenGL for all UI elements and the game. It is supposed to be used
1441fullscreen and interactively. 1491fullscreen and interactively.
1442 1492
1443=head1 AUTHOR 1493=head1 AUTHOR
1444 1494
1445Marc Lehmann <crossfire@schmorp.de>, Robin Redeker <elmex@ta-sa.org> 1495Marc Lehmann <crossfire@schmorp.de>, Robin Redeker <elmex@ta-sa.org>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines