… | |
… | |
85 | our $CONSOLE; |
85 | our $CONSOLE; |
86 | our $METASERVER; |
86 | our $METASERVER; |
87 | our $LOGIN_BUTTON; |
87 | our $LOGIN_BUTTON; |
88 | our $QUIT_DIALOG; |
88 | our $QUIT_DIALOG; |
89 | our $HOST_ENTRY; |
89 | our $HOST_ENTRY; |
|
|
90 | our $PICKUP_ENABLE; |
90 | our $SERVER_INFO; |
91 | our $SERVER_INFO; |
91 | |
92 | |
92 | our $SETUP_DIALOG; |
93 | our $SETUP_DIALOG; |
93 | our $SETUP_NOTEBOOK; |
94 | our $SETUP_NOTEBOOK; |
94 | our $SETUP_SERVER; |
95 | our $SETUP_SERVER; |
95 | our $SETUP_KEYBOARD; |
96 | our $SETUP_KEYBOARD; |
96 | our $SETUP_SPELLS; |
|
|
97 | |
97 | |
|
|
98 | our $PL_NOTEBOOK; |
98 | our $STATS_WINDOW; |
99 | our $PL_WINDOW; |
|
|
100 | |
|
|
101 | our $INVENTORY_PAGE; |
|
|
102 | our $STATS_PAGE; |
|
|
103 | our $SPELL_PAGE; |
|
|
104 | |
|
|
105 | our $HELP_WINDOW; |
99 | our $MESSAGE_WINDOW; |
106 | our $MESSAGE_WINDOW; |
100 | our $FLOORBOX; |
107 | our $FLOORBOX; |
101 | our $GAUGES; |
108 | our $GAUGES; |
102 | our $STATWIDS; |
109 | our $STATWIDS; |
103 | |
110 | |
… | |
… | |
110 | |
117 | |
111 | our $ALT_ENTER_MESSAGE; |
118 | our $ALT_ENTER_MESSAGE; |
112 | our $STATUSBOX; |
119 | our $STATUSBOX; |
113 | our $DEBUG_STATUS; |
120 | our $DEBUG_STATUS; |
114 | |
121 | |
115 | our $INV_WINDOW; |
|
|
116 | our $INV; |
122 | our $INV; |
117 | our $INVR; |
123 | our $INVR; |
118 | our $INV_RIGHT_HB; |
124 | our $INV_RIGHT_HB; |
119 | |
125 | |
120 | our $BIND_EDITOR; |
126 | our $BIND_EDITOR; |
… | |
… | |
221 | $conn->send ("reply $stat"); |
227 | $conn->send ("reply $stat"); |
222 | destroy_query_dialog $conn; |
228 | destroy_query_dialog $conn; |
223 | return; |
229 | return; |
224 | } |
230 | } |
225 | |
231 | |
226 | $STATS_WINDOW->show; |
232 | $STATS_PAGE->show; |
227 | $MESSAGE_WINDOW->hide; |
233 | $MESSAGE_WINDOW->hide; |
228 | |
234 | |
229 | unshift @dialog, new CFClient::UI::Label |
235 | unshift @dialog, new CFClient::UI::Label |
230 | max_w => $::WIDTH * 0.4, |
236 | max_w => $::WIDTH * 0.4, |
231 | ellipsise => 0, |
237 | ellipsise => 0, |
… | |
… | |
271 | # right: accept |
277 | # right: accept |
272 | $table->add (4, 0, new CFClient::UI::Button |
278 | $table->add (4, 0, new CFClient::UI::Button |
273 | text => "Accept", |
279 | text => "Accept", |
274 | on_activate => sub { |
280 | on_activate => sub { |
275 | $conn->send ("reply n"); |
281 | $conn->send ("reply n"); |
276 | $STATS_WINDOW->hide; |
282 | $STATS_PAGE->hide; |
277 | destroy_query_dialog $conn; |
283 | destroy_query_dialog $conn; |
278 | 0 |
284 | 0 |
279 | }, |
285 | }, |
280 | ); |
286 | ); |
281 | |
287 | |
… | |
… | |
373 | |
379 | |
374 | sub stop_game { |
380 | sub stop_game { |
375 | $LOGIN_BUTTON->set_text ("Login"); |
381 | $LOGIN_BUTTON->set_text ("Login"); |
376 | $SETUP_NOTEBOOK->set_current_page ($SETUP_SERVER); |
382 | $SETUP_NOTEBOOK->set_current_page ($SETUP_SERVER); |
377 | $SETUP_DIALOG->show; |
383 | $SETUP_DIALOG->show; |
378 | $INV_WINDOW->hide; |
384 | $PL_WINDOW->hide; |
379 | $SETUP_SPELLS->clear_spells; |
385 | $SPELL_PAGE->clear_spells; |
380 | |
386 | |
381 | return unless $CONN; |
387 | return unless $CONN; |
382 | |
388 | |
383 | status "connection closed"; |
389 | status "connection closed"; |
384 | |
390 | |
… | |
… | |
469 | range => [$CFG->{log_fontsize}, 0.5, 2, 0, 0.1], |
475 | range => [$CFG->{log_fontsize}, 0.5, 2, 0, 0.1], |
470 | tooltip => "The font size used by the <b>message/server log</b> window only. Changes are instant.", |
476 | tooltip => "The font size used by the <b>message/server log</b> window only. Changes are instant.", |
471 | on_changed => sub { $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = $_[1]); 0 }, |
477 | on_changed => sub { $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = $_[1]); 0 }, |
472 | ); |
478 | ); |
473 | |
479 | |
474 | $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize"); |
|
|
475 | |
|
|
476 | $table->add (1, $row++, new CFClient::UI::Slider |
|
|
477 | range => [$CFG->{stat_fontsize}, 0.5, 2, 0, 0.1], |
|
|
478 | tooltip => "The font size used by the <b>statistics window</b> only. Changes are instant.", |
|
|
479 | on_changed => sub { |
|
|
480 | $CFG->{stat_fontsize} = $_[1]; |
|
|
481 | &set_stats_window_fontsize; |
|
|
482 | 0 |
|
|
483 | } |
|
|
484 | ); |
|
|
485 | |
|
|
486 | $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize"); |
480 | $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize"); |
487 | $table->add (1, $row++, new CFClient::UI::Slider |
481 | $table->add (1, $row++, new CFClient::UI::Slider |
488 | range => [$CFG->{gauge_fontsize}, 0.5, 2, 0, 0.1], |
482 | range => [$CFG->{gauge_fontsize}, 0.5, 2, 0, 0.1], |
489 | tooltip => "Adjusts the fontsize of the gauges at the bottom right. Changes are instant.", |
483 | tooltip => "Adjusts the fontsize of the gauges at the bottom right. Changes are instant.", |
490 | on_changed => sub { |
484 | on_changed => sub { |
… | |
… | |
559 | ); |
553 | ); |
560 | |
554 | |
561 | $vbox |
555 | $vbox |
562 | } |
556 | } |
563 | |
557 | |
564 | sub set_stats_window_fontsize { |
|
|
565 | for (values %{$STATWIDS}) { |
|
|
566 | $_->set_fontsize ($::CFG->{stat_fontsize}); |
|
|
567 | } |
|
|
568 | } |
|
|
569 | |
|
|
570 | sub set_gauge_window_fontsize { |
558 | sub set_gauge_window_fontsize { |
571 | for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) { |
559 | for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) { |
572 | $_->set_fontsize ($::CFG->{gauge_fontsize}); |
560 | $_->set_fontsize ($::CFG->{gauge_fontsize}); |
573 | } |
561 | } |
574 | } |
562 | } |
… | |
… | |
653 | |
641 | |
654 | $table |
642 | $table |
655 | } |
643 | } |
656 | |
644 | |
657 | sub stats_window { |
645 | sub stats_window { |
658 | my $tgw = new CFClient::UI::FancyFrame |
646 | my $vb = new CFClient::UI::VBox; |
659 | y => $HEIGHT * (2/8), |
|
|
660 | x => "max", |
|
|
661 | title => "Stats", |
|
|
662 | name => "stats_window", |
|
|
663 | has_close_button => 1; |
|
|
664 | |
647 | |
665 | $tgw->add (new CFClient::UI::Window child => my $vb = new CFClient::UI::VBox); |
|
|
666 | $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1, |
648 | $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1, |
667 | can_hover => 1, can_events => 1, |
649 | can_hover => 1, can_events => 1, |
668 | tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server."); |
650 | tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server."); |
669 | $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1, |
651 | $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1, |
670 | can_hover => 1, can_events => 1, |
652 | can_hover => 1, can_events => 1, |
… | |
… | |
761 | $col += 2; |
743 | $col += 2; |
762 | $row = 0; |
744 | $row = 0; |
763 | } |
745 | } |
764 | } |
746 | } |
765 | |
747 | |
766 | &set_stats_window_fontsize; |
748 | $vb->add (my $tbl3 = new CFClient::UI::Table expand => 1); |
|
|
749 | $STATWIDS->{"_skill_tbl"} = $tbl3; |
|
|
750 | |
767 | update_stats_window ({}); |
751 | update_stats_window ({}); |
768 | |
752 | |
769 | $tgw |
753 | $vb |
770 | } |
754 | } |
771 | |
755 | |
772 | sub formsep($) { |
756 | sub formsep($) { |
773 | scalar reverse join ",", unpack "(A3)*", reverse $_[0] * 1 |
757 | scalar reverse join ",", unpack "(A3)*", reverse $_[0] * 1 |
774 | } |
758 | } |
… | |
… | |
834 | depl => CS_STAT_RES_DEPLETE, |
818 | depl => CS_STAT_RES_DEPLETE, |
835 | deat => CS_STAT_RES_DEATH, |
819 | deat => CS_STAT_RES_DEATH, |
836 | holyw => CS_STAT_RES_HOLYWORD, |
820 | holyw => CS_STAT_RES_HOLYWORD, |
837 | blind => CS_STAT_RES_BLIND, |
821 | blind => CS_STAT_RES_BLIND, |
838 | ); |
822 | ); |
|
|
823 | |
|
|
824 | if ($::CONN && !$STATWIDS->{_skill_tbl_init}) { |
|
|
825 | my $sktbl = $STATWIDS->{_skill_tbl}; |
|
|
826 | $sktbl->clear; |
|
|
827 | |
|
|
828 | $sktbl->add (0, 0, new CFClient::UI::Label text => "Exp.", align => 1); |
|
|
829 | $sktbl->add (1, 0, new CFClient::UI::Label text => "Level", align => 1); |
|
|
830 | $sktbl->add (2, 0, new CFClient::UI::Label text => "Skillname"); |
|
|
831 | |
|
|
832 | my @skills; |
|
|
833 | |
|
|
834 | for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) { |
|
|
835 | push @skills, [$i, $::CONN->{skill_info}{$i}]; |
|
|
836 | } |
|
|
837 | |
|
|
838 | my $y = 1; |
|
|
839 | for (sort { $a->[1] cmp $b->[1] } @skills) { |
|
|
840 | my ($idx, $name) = @$_; |
|
|
841 | |
|
|
842 | unless (defined $STATWIDS->{"sk_xp_$idx"} || !$::CONN->{skill_info}{$idx}) { |
|
|
843 | $sktbl->add (0, $y, $STATWIDS->{"sk_xp_$idx"} = new CFClient::UI::Label text => "0", align => 1); |
|
|
844 | $sktbl->add (1, $y, $STATWIDS->{"sk_lvl_$idx"} = new CFClient::UI::Label text => "0", align => 1); |
|
|
845 | $sktbl->add (2, $y++, new CFClient::UI::Label text => $name); |
|
|
846 | } |
|
|
847 | } |
|
|
848 | |
|
|
849 | $STATWIDS->{_skill_tbl_init} = 1; |
|
|
850 | } |
|
|
851 | |
|
|
852 | for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) { |
|
|
853 | if (exists $stats->{$i}) { |
|
|
854 | $STATWIDS->{"sk_xp_$i"}->set_text (formsep $stats->{$i}->[1]) |
|
|
855 | if $STATWIDS->{"sk_xp_$i"}; |
|
|
856 | $STATWIDS->{"sk_lvl_$i"}->set_text (sprintf "%d", $stats->{$i}->[0]) |
|
|
857 | if $STATWIDS->{"sk_lvl_$i"}; |
|
|
858 | } |
|
|
859 | } |
839 | |
860 | |
840 | $STATWIDS->{"res_$_"}->set_text (sprintf "%d%", $stats->{$tbl{$_}}) |
861 | $STATWIDS->{"res_$_"}->set_text (sprintf "%d%", $stats->{$tbl{$_}}) |
841 | for keys %tbl; |
862 | for keys %tbl; |
842 | } |
863 | } |
843 | |
864 | |
… | |
… | |
1188 | sub autopickup_setup { |
1209 | sub autopickup_setup { |
1189 | my $table = new CFClient::UI::Table; |
1210 | my $table = new CFClient::UI::Table; |
1190 | |
1211 | |
1191 | for ( |
1212 | for ( |
1192 | ["General", 0, 0, |
1213 | ["General", 0, 0, |
1193 | ["Enable autopickup" => PICKUP_NEWMODE], |
1214 | ["Enable autopickup" => PICKUP_NEWMODE, \$PICKUP_ENABLE], |
1194 | ["Inhibit autopickup" => PICKUP_INHIBIT], |
1215 | ["Inhibit autopickup" => PICKUP_INHIBIT], |
1195 | ["Stop before pickup" => PICKUP_STOP], |
1216 | ["Stop before pickup" => PICKUP_STOP], |
1196 | ["Debug autopickup" => PICKUP_DEBUG], |
1217 | ["Debug autopickup" => PICKUP_DEBUG], |
1197 | ], |
1218 | ], |
1198 | ["Weapons", 0, 6, |
1219 | ["Weapons", 0, 6, |
… | |
… | |
1235 | for (@bits) { |
1256 | for (@bits) { |
1236 | ++$y; |
1257 | ++$y; |
1237 | |
1258 | |
1238 | my $mask = $_->[1]; |
1259 | my $mask = $_->[1]; |
1239 | $table->add ($x , $y, new CFClient::UI::Label text => $_->[0], align => 1, expand => 1); |
1260 | $table->add ($x , $y, new CFClient::UI::Label text => $_->[0], align => 1, expand => 1); |
1240 | $table->add ($x+1, $y, new CFClient::UI::CheckBox |
1261 | $table->add ($x+1, $y, my $checkbox = new CFClient::UI::CheckBox |
1241 | state => $CFG->{pickup} & $mask, |
1262 | state => $::CFG->{pickup} & $mask, |
1242 | on_changed => sub { |
1263 | on_changed => sub { |
1243 | my ($box, $value) = @_; |
1264 | my ($box, $value) = @_; |
1244 | |
1265 | |
1245 | if ($value) { |
1266 | if ($value) { |
1246 | $::CFG->{pickup} |= $mask; |
1267 | $::CFG->{pickup} |= $mask; |
… | |
… | |
1251 | $::CONN->send_command ("pickup $::CFG->{pickup}") |
1272 | $::CONN->send_command ("pickup $::CFG->{pickup}") |
1252 | if defined $::CONN; |
1273 | if defined $::CONN; |
1253 | |
1274 | |
1254 | 0 |
1275 | 0 |
1255 | }); |
1276 | }); |
|
|
1277 | |
|
|
1278 | ${$_->[2]} = $checkbox if $_->[2]; |
1256 | } |
1279 | } |
1257 | } |
1280 | } |
1258 | |
1281 | |
1259 | $table->add (2, 18, new CFClient::UI::ValSlider |
1282 | $table->add (2, 18, new CFClient::UI::ValSlider |
1260 | range => [0, 0, 16, 1, 1], |
1283 | range => [$::CFG->{pickup} & 0xF, 0, 16, 1, 1], |
|
|
1284 | template => ">= 99", |
1261 | to_value => sub { ">= " . 5 * $_[0] }, |
1285 | to_value => sub { ">= " . 5 * $_[0] }, |
1262 | on_changed => sub { |
1286 | on_changed => sub { |
1263 | my ($slider, $value) = @_; |
1287 | my ($slider, $value) = @_; |
1264 | |
1288 | |
1265 | $::CFG->{pickup} &= ~0x7; |
1289 | $::CFG->{pickup} &= ~0xF; |
1266 | $::CFG->{pickup} |= int $value |
1290 | $::CFG->{pickup} |= int $value |
1267 | if $value; |
1291 | if $value; |
1268 | 1; |
1292 | 1; |
1269 | }); |
1293 | }); |
|
|
1294 | |
1270 | $table->add (3, 18, new CFClient::UI::Button |
1295 | $table->add (3, 18, new CFClient::UI::Button |
1271 | text => "set", |
1296 | text => "set", |
1272 | on_activate => sub { |
1297 | on_activate => sub { |
1273 | $::CONN->send_command ("pickup $::CFG->{pickup}") |
1298 | $::CONN->send_command ("pickup $::CFG->{pickup}") |
1274 | if defined $::CONN; |
1299 | if defined $::CONN; |
… | |
… | |
1276 | }); |
1301 | }); |
1277 | |
1302 | |
1278 | $table |
1303 | $table |
1279 | } |
1304 | } |
1280 | |
1305 | |
1281 | sub inventory_window { |
1306 | sub inventory_widget { |
|
|
1307 | my $hb = new CFClient::UI::HBox homogeneous => 1; |
|
|
1308 | |
|
|
1309 | $hb->add (my $vb1 = new CFClient::UI::VBox); |
|
|
1310 | $vb1->add (new CFClient::UI::Label align => 0, text => "Player"); |
|
|
1311 | $vb1->add ($INV = new CFClient::UI::Inventory); |
|
|
1312 | |
|
|
1313 | $hb->add (my $vb2 = new CFClient::UI::VBox); |
|
|
1314 | |
|
|
1315 | $vb2->add ($INV_RIGHT_HB = new CFClient::UI::HBox); |
|
|
1316 | |
|
|
1317 | $vb2->add ($INVR = new CFClient::UI::Inventory); |
|
|
1318 | |
|
|
1319 | # XXX: Call after $INVR = ... because set_opencont sets the items |
|
|
1320 | CFClient::Protocol::set_opencont ($::CONN, 0, "Floor"); |
|
|
1321 | |
|
|
1322 | $hb |
|
|
1323 | } |
|
|
1324 | |
|
|
1325 | sub toggle_player_page { |
|
|
1326 | my ($widget) = @_; |
|
|
1327 | |
|
|
1328 | if ($PL_WINDOW->{visible} && $PL_NOTEBOOK->get_current_page == $widget) { |
|
|
1329 | $PL_WINDOW->hide; |
|
|
1330 | } else { |
|
|
1331 | $PL_NOTEBOOK->set_current_page ($widget); |
|
|
1332 | $PL_WINDOW->show; |
|
|
1333 | } |
|
|
1334 | } |
|
|
1335 | |
|
|
1336 | sub player_window { |
1282 | my $invwin = $INV_WINDOW = new CFClient::UI::FancyFrame |
1337 | my $plwin = $PL_WINDOW = new CFClient::UI::FancyFrame |
1283 | x => "center", |
1338 | x => "center", |
1284 | y => "center", |
1339 | y => "center", |
1285 | force_w => $WIDTH * 9/10, |
1340 | force_w => $WIDTH * 9/10, |
1286 | force_h => $HEIGHT * 9/10, |
1341 | force_h => $HEIGHT * 9/10, |
1287 | title => "Inventory", |
1342 | title => "Player", |
1288 | name => "inventory_window", |
1343 | name => "playerbook", |
1289 | has_close_button => 1, |
1344 | has_close_button => 1 |
1290 | ; |
1345 | ; |
1291 | |
1346 | |
1292 | $invwin->add (my $hb = new CFClient::UI::HBox homogeneous => 1); |
1347 | my $ntb = |
|
|
1348 | $PL_NOTEBOOK = |
|
|
1349 | new CFClient::UI::Notebook |
|
|
1350 | expand => 1, |
|
|
1351 | debug => 1, |
|
|
1352 | filter => (new CFClient::UI::ScrolledWindow expand => 1, scroll_y => 1), |
|
|
1353 | ; |
1293 | |
1354 | |
1294 | $hb->add (my $vb1 = new CFClient::UI::VBox); |
1355 | $ntb->add ( |
1295 | $vb1->add (new CFClient::UI::Label align => 0, text => "Player"); |
1356 | "Stats & Skills" => $STATS_PAGE = stats_window, |
1296 | $vb1->add ($INV = new CFClient::UI::Inventory expand => 1); |
1357 | "Shows statistics and skill window, where all your Stats, Resistances and Skills are shown." |
|
|
1358 | ); |
|
|
1359 | $ntb->add ( |
|
|
1360 | Spellbook => $SPELL_PAGE = new CFClient::UI::SpellList, |
|
|
1361 | "Displays all spells you have and lets you edit keyboard shortcuts for them." |
|
|
1362 | ); |
|
|
1363 | $ntb->add ( |
|
|
1364 | Inventory => $INVENTORY_PAGE = inventory_widget, |
|
|
1365 | "Toggles the inventory window, where you can manage your loot (or treasures :). " |
|
|
1366 | . "You can also hit the <b>Tab</b>-key to show/hide the Inventory." |
|
|
1367 | ); |
1297 | |
1368 | |
1298 | $hb->add (my $vb2 = new CFClient::UI::VBox); |
1369 | $ntb->set_current_page ($INVENTORY_PAGE); |
1299 | |
1370 | |
1300 | $vb2->add ($INV_RIGHT_HB = new CFClient::UI::HBox); |
1371 | $plwin->add ($ntb); |
1301 | |
1372 | $plwin |
1302 | $vb2->add ($INVR = new CFClient::UI::Inventory expand => 1); |
|
|
1303 | |
|
|
1304 | # XXX: Call after $INVR = ... because set_opencont sets the items |
|
|
1305 | CFClient::Protocol::set_opencont ($::CONN, 0, "Floor"); |
|
|
1306 | |
|
|
1307 | $invwin |
|
|
1308 | } |
|
|
1309 | |
|
|
1310 | sub spell_setup { |
|
|
1311 | new CFClient::UI::SpellList |
|
|
1312 | } |
1373 | } |
1313 | |
1374 | |
1314 | sub update_bindings { |
1375 | sub update_bindings { |
1315 | $BIND_UPD_CB->() if $BIND_UPD_CB; |
1376 | $BIND_UPD_CB->() if $BIND_UPD_CB; |
1316 | } |
1377 | } |
… | |
… | |
1326 | for my $sym (keys %{$::CFG->{profile}{default}{bindings}{$mod}}) { |
1387 | for my $sym (keys %{$::CFG->{profile}{default}{bindings}{$mod}}) { |
1327 | my $cmds = $::CFG->{profile}{default}{bindings}{$mod}{$sym}; |
1388 | my $cmds = $::CFG->{profile}{default}{bindings}{$mod}{$sym}; |
1328 | next unless ref $cmds eq 'ARRAY' and @$cmds > 0; |
1389 | next unless ref $cmds eq 'ARRAY' and @$cmds > 0; |
1329 | |
1390 | |
1330 | my $lbl = join "; ", @$cmds; |
1391 | my $lbl = join "; ", @$cmds; |
1331 | my $nam = CFClient::Binder::keycombo_to_name ($mod, $sym); |
1392 | my $nam = CFClient::BindingEditor::keycombo_to_name ($mod, $sym); |
1332 | $binding_list->add (my $hb = new CFClient::UI::HBox); |
1393 | $binding_list->add (my $hb = new CFClient::UI::HBox); |
1333 | $hb->add (new CFClient::UI::Button |
1394 | $hb->add (new CFClient::UI::Button |
1334 | text => "delete", |
1395 | text => "delete", |
1335 | tooltip => "Deletes the binding", |
1396 | tooltip => "Deletes the binding", |
1336 | on_activate => sub { |
1397 | on_activate => sub { |
… | |
… | |
1429 | y => 'center', |
1490 | y => 'center', |
1430 | z => 2, |
1491 | z => 2, |
1431 | name => 'doc_browser', |
1492 | name => 'doc_browser', |
1432 | force_w => int $WIDTH * 7/8, |
1493 | force_w => int $WIDTH * 7/8, |
1433 | force_h => int $HEIGHT * 7/8, |
1494 | force_h => int $HEIGHT * 7/8, |
1434 | title => "Documentation"; |
1495 | title => "Help Browser", |
|
|
1496 | has_close_button => 1; |
1435 | |
1497 | |
1436 | $win->add (my $vbox = new CFClient::UI::VBox); |
1498 | $win->add (my $vbox = new CFClient::UI::VBox); |
1437 | |
1499 | |
1438 | $vbox->add (my $buttons = new CFClient::UI::HBox); |
1500 | $vbox->add (my $buttons = new CFClient::UI::HBox); |
1439 | $vbox->add (my $viewer = new CFClient::UI::TextScroller |
1501 | $vbox->add (my $viewer = new CFClient::UI::TextScroller |
… | |
… | |
1603 | . "There is a shortcut for making bindings: <b>Control-Insert</b> opens the binding editor " |
1665 | . "There is a shortcut for making bindings: <b>Control-Insert</b> opens the binding editor " |
1604 | . "with nothing set and the recording started. After doing the actions you " |
1666 | . "with nothing set and the recording started. After doing the actions you " |
1605 | . "want to record press <b>Insert</b> and you will be asked to press a key-combo. " |
1667 | . "want to record press <b>Insert</b> and you will be asked to press a key-combo. " |
1606 | . "After pressing the combo the binding will be saved automatically and the " |
1668 | . "After pressing the combo the binding will be saved automatically and the " |
1607 | . "binding editor closes"); |
1669 | . "binding editor closes"); |
1608 | $SETUP_NOTEBOOK->add (Spells => $SETUP_SPELLS = spell_setup, |
|
|
1609 | "Displays all spells you have and lets you edit keyboard shortcuts for them."); |
|
|
1610 | $SETUP_NOTEBOOK->add (Debug => debug_setup, |
1670 | $SETUP_NOTEBOOK->add (Debug => debug_setup, |
1611 | "Some debuggin' options. Do not ask."); |
1671 | "Some debuggin' options. Do not ask."); |
1612 | |
1672 | |
1613 | $BUTTONBAR = new CFClient::UI::Buttonbar x => 0, y => 0, z => 200; # put on top |
1673 | $BUTTONBAR = new CFClient::UI::Buttonbar x => 0, y => 0, z => 200; # put on top |
1614 | |
1674 | |
… | |
… | |
1618 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Message Window", other => $MESSAGE_WINDOW = message_window, |
1678 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Message Window", other => $MESSAGE_WINDOW = message_window, |
1619 | tooltip => "Toggles the server message log, where the client collects <i>all</i> messages from the server."); |
1679 | tooltip => "Toggles the server message log, where the client collects <i>all</i> messages from the server."); |
1620 | |
1680 | |
1621 | make_gauge_window->show; # XXX: this has to be set before make_stats_window as make_stats_window calls update_stats_window which updated the gauges also X-D |
1681 | make_gauge_window->show; # XXX: this has to be set before make_stats_window as make_stats_window calls update_stats_window which updated the gauges also X-D |
1622 | |
1682 | |
1623 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Stats Window", other => $STATS_WINDOW = stats_window, |
|
|
1624 | tooltip => "Toggles the statistics window, where all your Stats and Resistances are being displayed at all times."); |
|
|
1625 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Inventory", other => inventory_window, |
1683 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Playerbook", other => player_window, |
1626 | tooltip => "Toggles the inventory window, where you can manage your loot (or treasures :). " |
1684 | tooltip => "Toggles the player view, where you can manage Inventory, Spells, Skills and see your Stats."); |
1627 | . "You can also hit the <b>Tab</b>-key to show/hide the Inventory."); |
|
|
1628 | |
1685 | |
1629 | $BUTTONBAR->add (new CFClient::UI::Button |
1686 | $BUTTONBAR->add (new CFClient::UI::Button |
1630 | text => "Save Config", |
1687 | text => "Save Config", |
1631 | tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.", |
1688 | tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.", |
1632 | on_activate => sub { |
1689 | on_activate => sub { |
… | |
… | |
1635 | status "Configuration Saved"; |
1692 | status "Configuration Saved"; |
1636 | 0 |
1693 | 0 |
1637 | }, |
1694 | }, |
1638 | ); |
1695 | ); |
1639 | |
1696 | |
1640 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => help_window, |
1697 | $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => $HELP_WINDOW = help_window, |
1641 | tooltip => "View Documentation"); |
1698 | tooltip => "View Documentation"); |
1642 | |
1699 | |
1643 | $BUTTONBAR->add (new CFClient::UI::Button |
1700 | $BUTTONBAR->add (new CFClient::UI::Button |
1644 | text => "Quit", |
1701 | text => "Quit", |
1645 | tooltip => "Terminates the program", |
1702 | tooltip => "Terminates the program", |