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.74 by root, Sun Jun 18 17:13:12 2006 UTC vs.
Revision 1.77 by elmex, Wed Jun 21 12:59:23 2006 UTC

115our $INV; 115our $INV;
116our $INVR; 116our $INVR;
117our $INV_RIGHT_HB; 117our $INV_RIGHT_HB;
118 118
119our $BIND_EDITOR; 119our $BIND_EDITOR;
120our $BIND_UPD_CB;
120 121
121our $PICKUP_CFG; 122our $PICKUP_CFG;
122 123
123sub status { 124sub status {
124 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]); 125 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]);
324 $LOGIN_BUTTON->set_text ("Logout"); 325 $LOGIN_BUTTON->set_text ("Logout");
325 $SETUP_DIALOG->hide; 326 $SETUP_DIALOG->hide;
326 327
327 my $mapsize = List::Util::min 32, List::Util::max 11, int $WIDTH * $CFG->{mapsize} * 0.01 / 32; 328 my $mapsize = List::Util::min 32, List::Util::max 11, int $WIDTH * $CFG->{mapsize} * 0.01 / 32;
328 329
329 my ($host, $port) = split /:/, $CFG->{host}; 330 my ($host, $port) = split /:/, $CFG->{profile}{default}{host};
330 331
331 $MAP = new CFClient::Map $mapsize, $mapsize; 332 $MAP = new CFClient::Map $mapsize, $mapsize;
332 333
333 $CONN = eval { 334 $CONN = eval {
334 new CFClient::Protocol 335 new CFClient::Protocol
335 host => $host, 336 host => $host,
336 port => $port || 13327, 337 port => $port || 13327,
337 user => $CFG->{user}, 338 user => $CFG->{profile}{default}{user},
338 pass => $CFG->{password}, 339 pass => $CFG->{profile}{default}{password},
339 mapw => $mapsize, 340 mapw => $mapsize,
340 maph => $mapsize, 341 maph => $mapsize,
341 342
342 map_widget => $MAPWIDGET, 343 map_widget => $MAPWIDGET,
343 logview => $LOGVIEW, 344 logview => $LOGVIEW,
381 status "connection closed"; 382 status "connection closed";
382 383
383 destroy_query_dialog $CONN; 384 destroy_query_dialog $CONN;
384 $CONN->destroy; 385 $CONN->destroy;
385 $CONN = 0; # false, does not autovivify 386 $CONN = 0; # false, does not autovivify
387
388 undef $MAP;
386} 389}
387 390
388sub graphics_setup { 391sub graphics_setup {
389 my $vbox = new CFClient::UI::VBox; 392 my $vbox = new CFClient::UI::VBox;
390 393
912 $table->add (scalar @$m, $y, new CFClient::UI::VBox children => [ 915 $table->add (scalar @$m, $y, new CFClient::UI::VBox children => [
913 (new CFClient::UI::Button 916 (new CFClient::UI::Button
914 text => "Use", 917 text => "Use",
915 tooltip => "Put this server into the <b>Host:Port</b> field", 918 tooltip => "Put this server into the <b>Host:Port</b> field",
916 on_activate => sub { 919 on_activate => sub {
917 $HOST_ENTRY->set_text ($CFG->{host} = $host); 920 $HOST_ENTRY->set_text ($CFG->{profile}{default}{host} = $host);
918 $METASERVER->hide; 921 $METASERVER->hide;
919 0 922 0
920 }, 923 },
921 ), 924 ),
922 (new CFClient::UI::Empty expand => 1), 925 (new CFClient::UI::Empty expand => 1),
968 $table->add (1, 2, my $vbox = new CFClient::UI::VBox); 971 $table->add (1, 2, my $vbox = new CFClient::UI::VBox);
969 972
970 $vbox->add ( 973 $vbox->add (
971 $HOST_ENTRY = new CFClient::UI::Entry 974 $HOST_ENTRY = new CFClient::UI::Entry
972 expand => 1, 975 expand => 1,
973 text => $CFG->{host}, 976 text => $CFG->{profile}{default}{host},
974 tooltip => "The hostname or ip address of the Crossfire(+) server to connect to", 977 tooltip => "The hostname or ip address of the Crossfire(+) server to connect to",
975 on_changed => sub { 978 on_changed => sub {
976 my ($self, $value) = @_; 979 my ($self, $value) = @_;
977 $CFG->{host} = $value; 980 $CFG->{profile}{default}{host} = $value;
978 0 981 0
979 } 982 }
980 ); 983 );
981 984
982 $METASERVER = metaserver_dialog; 985 $METASERVER = metaserver_dialog;
991 ); 994 );
992 } 995 }
993 996
994 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username"); 997 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username");
995 $table->add (1, 4, new CFClient::UI::Entry 998 $table->add (1, 4, new CFClient::UI::Entry
996 text => $CFG->{user}, 999 text => $CFG->{profile}{default}{user},
997 tooltip => "The name of your character on the server", 1000 tooltip => "The name of your character on the server",
998 on_changed => sub { my ($self, $value) = @_; $CFG->{user} = $value; 0 } 1001 on_changed => sub { my ($self, $value) = @_; $CFG->{profile}{default}{user} = $value }
999 ); 1002 );
1000 1003
1001 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password"); 1004 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password");
1002 $table->add (1, 5, new CFClient::UI::Entry 1005 $table->add (1, 5, new CFClient::UI::Entry
1003 text => $CFG->{password}, 1006 text => $CFG->{profile}{default}{password},
1004 hidden => 1, 1007 hidden => 1,
1005 tooltip => "The password for your character", 1008 tooltip => "The password for your character",
1006 on_changed => sub { my ($self, $value) = @_; $CFG->{password} = $value; 0 } 1009 on_changed => sub { my ($self, $value) = @_; $CFG->{profile}{default}{password} = $value }
1007 ); 1010 );
1008 1011
1009 $table->add (0, 7, new CFClient::UI::Label valign => 0, align => 1, text => "Map Size"); 1012 $table->add (0, 7, new CFClient::UI::Label valign => 0, align => 1, text => "Map Size");
1010 $table->add (1, 7, new CFClient::UI::Slider 1013 $table->add (1, 7, new CFClient::UI::Slider
1011 force_w => 100, 1014 force_w => 100,
1299 1302
1300sub spell_setup { 1303sub spell_setup {
1301 new CFClient::UI::SpellList 1304 new CFClient::UI::SpellList
1302} 1305}
1303 1306
1307sub update_bindings {
1308 $BIND_UPD_CB->() if $BIND_UPD_CB;
1309}
1310
1304sub keyboard_setup { 1311sub keyboard_setup {
1305 my $binding_list = new CFClient::UI::VBox; 1312 my $binding_list = new CFClient::UI::VBox;
1306 1313
1307 my $refresh; 1314 my $refresh;
1308 $refresh = sub { 1315 $refresh = $BIND_UPD_CB = sub {
1309 $binding_list->clear (); 1316 $binding_list->clear ();
1310 1317
1311 for my $mod (keys %{$::CFG->{bindings}}) { 1318 for my $mod (keys %{$::CFG->{profile}{default}{bindings}}) {
1312 for my $sym (keys %{$::CFG->{bindings}->{$mod}}) { 1319 for my $sym (keys %{$::CFG->{profile}{default}{bindings}{$mod}}) {
1313 my $cmds = $::CFG->{bindings}->{$mod}->{$sym}; 1320 my $cmds = $::CFG->{profile}{default}{bindings}{$mod}{$sym};
1314 next unless ref $cmds eq 'ARRAY' and @$cmds > 0; 1321 next unless ref $cmds eq 'ARRAY' and @$cmds > 0;
1315 1322
1316 my $lbl = join "; ", @$cmds; 1323 my $lbl = join "; ", @$cmds;
1317 my $nam = CFClient::Binder::keycombo_to_name ($mod, $sym); 1324 my $nam = CFClient::Binder::keycombo_to_name ($mod, $sym);
1318 $binding_list->add (my $hb = new CFClient::UI::HBox); 1325 $binding_list->add (my $hb = new CFClient::UI::HBox);
1319 $hb->add (new CFClient::UI::Button 1326 $hb->add (new CFClient::UI::Button
1320 text => "delete", 1327 text => "delete",
1321 tooltip => "Deletes the binding", 1328 tooltip => "Deletes the binding",
1322 on_activate => sub { 1329 on_activate => sub {
1323 $binding_list->remove ($hb); 1330 $binding_list->remove ($hb);
1324 delete $::CFG->{bindings}->{$mod}->{$sym}; 1331 delete $::CFG->{profile}{default}{bindings}{$mod}{$sym};
1325 0 1332 0
1326 }); 1333 });
1327 1334
1328 $hb->add (new CFClient::UI::Button 1335 $hb->add (new CFClient::UI::Button
1329 text => "edit", 1336 text => "edit",
1330 tooltip => "Edits the binding", 1337 tooltip => "Edits the binding",
1331 on_activate => sub { 1338 on_activate => sub {
1332 $::BIND_EDITOR->set_binding ( 1339 $::BIND_EDITOR->set_binding (
1333 $mod, $sym, $::CFG->{bindings}->{$mod}->{$sym}, 1340 $mod, $sym, $::CFG->{profile}{default}{bindings}{$mod}{$sym},
1334 sub { 1341 sub {
1335 my ($nmod, $nsym, $ncmds) = @_; 1342 my ($nmod, $nsym, $ncmds) = @_;
1336 delete $::CFG->{bindings}->{$mod}->{$sym}; 1343 $::BIND_EDITOR->cfg_unbind ($mod, $sym);
1337 $::CFG->{bindings}->{$nmod}->{$nsym} = $ncmds; 1344 $::BIND_EDITOR->cfg_bind ($nmod, $nsym, $ncmds);
1338 $refresh->(); 1345 $refresh->();
1339 $SETUP_NOTEBOOK->set_current_page ($SETUP_KEYBOARD); 1346 $SETUP_NOTEBOOK->set_current_page ($SETUP_KEYBOARD);
1340 $SETUP_DIALOG->show; 1347 $SETUP_DIALOG->show;
1341 }, 1348 },
1342 sub { 1349 sub {
1376 tooltip => "This button opens the binding editor with an empty binding.", 1383 tooltip => "This button opens the binding editor with an empty binding.",
1377 on_activate => sub { 1384 on_activate => sub {
1378 $::BIND_EDITOR->set_binding (undef, undef, [], 1385 $::BIND_EDITOR->set_binding (undef, undef, [],
1379 sub { 1386 sub {
1380 my ($mod, $sym, $cmds) = @_; 1387 my ($mod, $sym, $cmds) = @_;
1381 $::CFG->{bindings}->{$mod}->{$sym} = $cmds; 1388 $::BIND_EDITOR->cfg_bind ($mod, $sym, $cmds);
1382 $refresh->(); 1389 $refresh->();
1383 $SETUP_NOTEBOOK->set_current_page ($SETUP_KEYBOARD); 1390 $SETUP_NOTEBOOK->set_current_page ($SETUP_KEYBOARD);
1384 $SETUP_DIALOG->show; 1391 $SETUP_DIALOG->show;
1385 }, 1392 },
1386 sub { 1393 sub {
1575 $SETUP_NOTEBOOK->add (Graphics => graphics_setup, 1582 $SETUP_NOTEBOOK->add (Graphics => graphics_setup,
1576 "Configure the video mode, performance, fonts and other graphical aspects of the game."); 1583 "Configure the video mode, performance, fonts and other graphical aspects of the game.");
1577 $SETUP_NOTEBOOK->add (Audio => audio_setup, 1584 $SETUP_NOTEBOOK->add (Audio => audio_setup,
1578 "Configure the use of audio, sound effects and background music."); 1585 "Configure the use of audio, sound effects and background music.");
1579 $SETUP_NOTEBOOK->add (Keyboard => $SETUP_KEYBOARD = keyboard_setup, 1586 $SETUP_NOTEBOOK->add (Keyboard => $SETUP_KEYBOARD = keyboard_setup,
1580 "Lets you define, edit and delete bindings." 1587 "Lets you define, edit and delete key bindings."
1581 . "There is a shortcut for making bindings: <b>Left Control + Insert</b> opens the binding editor " 1588 . "There is a shortcut for making bindings: <b>Control-Insert</b> opens the binding editor "
1582 . "with nothing set and the recording started. After doing the actions you " 1589 . "with nothing set and the recording started. After doing the actions you "
1583 . "want to record press <b>Insert</b> and you will be asked to press a key-combo. " 1590 . "want to record press <b>Insert</b> and you will be asked to press a key-combo. "
1584 . "After pressing the combo the binding will be saved automatically and the " 1591 . "After pressing the combo the binding will be saved automatically and the "
1585 . "binding editor closes"); 1592 . "binding editor closes");
1586 $SETUP_NOTEBOOK->add (Spells => $SETUP_SPELLS = spell_setup, 1593 $SETUP_NOTEBOOK->add (Spells => $SETUP_SPELLS = spell_setup,
1587 "Displays all spells you have and lets you edit keyboard shortcuts for them."); 1594 "Displays all spells you have and lets you edit keyboard shortcuts for them.");
1588 $SETUP_NOTEBOOK->add (Debug => debug_setup, 1595 $SETUP_NOTEBOOK->add (Debug => debug_setup,
1589 "Some debuggign options. Do not ask."); 1596 "Some debuggin' options. Do not ask.");
1590 1597
1591 $BUTTONBAR = new CFClient::UI::Buttonbar x => 0, y => 0, z => 200; # put on top 1598 $BUTTONBAR = new CFClient::UI::Buttonbar x => 0, y => 0, z => 200; # put on top
1592 1599
1593 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Setup", other => $SETUP_DIALOG, 1600 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Setup", other => $SETUP_DIALOG,
1594 tooltip => "Toggles a dialog where you can configure all aspects of this client."); 1601 tooltip => "Toggles a dialog where you can configure all aspects of this client.");
1864 1871
1865 CFClient::read_cfg "$Crossfire::VARDIR/cfplusrc"; 1872 CFClient::read_cfg "$Crossfire::VARDIR/cfplusrc";
1866 CFClient::UI::set_layout ($::CFG->{layout}); 1873 CFClient::UI::set_layout ($::CFG->{layout});
1867 1874
1868 my %DEF_CFG = ( 1875 my %DEF_CFG = (
1869 sdl_mode => 0, 1876 sdl_mode => 0,
1870 width => 640, 1877 width => 640,
1871 height => 480, 1878 height => 480,
1872 fullscreen => 0, 1879 fullscreen => 0,
1873 fast => 0, 1880 fast => 0,
1874 map_scale => 1, 1881 map_scale => 1,
1875 fow_enable => 1, 1882 fow_enable => 1,
1876 fow_intensity => 0.45, 1883 fow_intensity => 0.45,
1877 fow_smooth => 0, 1884 fow_smooth => 0,
1878 gui_fontsize => 1, 1885 gui_fontsize => 1,
1879 log_fontsize => 0.7, 1886 log_fontsize => 0.7,
1880 gauge_fontsize=> 1, 1887 gauge_fontsize => 1,
1881 gauge_size => 0.35, 1888 gauge_size => 0.35,
1882 stat_fontsize => 0.7, 1889 stat_fontsize => 0.7,
1883 mapsize => 100, 1890 mapsize => 100,
1884 host => "crossfire.schmorp.de",
1885 say_command => 'say', 1891 say_command => 'say',
1886 audio_enable => 1, 1892 audio_enable => 1,
1887 bgm_enable => 1, 1893 bgm_enable => 1,
1888 bgm_volume => 0.25, 1894 bgm_volume => 0.25,
1889 face_prefetch => 0, 1895 face_prefetch => 0,
1890 output_sync => 1, 1896 output_sync => 1,
1891 output_count => 1, 1897 output_count => 1,
1892 pickup => 0, 1898 pickup => 0,
1899 default => "profile", # default profile
1900 );
1893 ); 1901
1894
1895 while (my ($k, $v) = each %DEF_CFG) { 1902 while (my ($k, $v) = each %DEF_CFG) {
1896 $CFG->{$k} = $v unless exists $CFG->{$k}; 1903 $CFG->{$k} = $v unless exists $CFG->{$k};
1897 } 1904 }
1905
1906 $CFG->{profile}{default}{host} ||= "crossfire.schmorp.de";
1898 1907
1899 sdl_init; 1908 sdl_init;
1900 1909
1901 @SDL_MODES = reverse 1910 @SDL_MODES = reverse
1902 grep $_->[0] >= 640 && $_->[1] >= 480, 1911 grep $_->[0] >= 640 && $_->[1] >= 480,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines