--- deliantra/Deliantra-Client/bin/cfplus 2006/07/02 19:32:56 1.85
+++ deliantra/Deliantra-Client/bin/cfplus 2006/07/09 21:11:48 1.89
@@ -87,15 +87,22 @@
our $LOGIN_BUTTON;
our $QUIT_DIALOG;
our $HOST_ENTRY;
+our $PICKUP_ENABLE;
our $SERVER_INFO;
our $SETUP_DIALOG;
our $SETUP_NOTEBOOK;
our $SETUP_SERVER;
our $SETUP_KEYBOARD;
-our $SETUP_SPELLS;
-our $STATS_WINDOW;
+our $PL_NOTEBOOK;
+our $PL_WINDOW;
+
+our $INVENTORY_PAGE;
+our $STATS_PAGE;
+our $SPELL_PAGE;
+
+our $HELP_WINDOW;
our $MESSAGE_WINDOW;
our $FLOORBOX;
our $GAUGES;
@@ -116,9 +123,6 @@
our $INVR;
our $INV_RIGHT_HB;
-our $PL_NOTEBOOK;
-our $PL_WINDOW;
-
our $BIND_EDITOR;
our $BIND_UPD_CB;
@@ -225,7 +229,7 @@
return;
}
- $STATS_WINDOW->show;
+ $STATS_PAGE->show;
$MESSAGE_WINDOW->hide;
unshift @dialog, new CFClient::UI::Label
@@ -275,7 +279,7 @@
text => "Accept",
on_activate => sub {
$conn->send ("reply n");
- $STATS_WINDOW->hide;
+ $STATS_PAGE->hide;
destroy_query_dialog $conn;
0
},
@@ -378,7 +382,7 @@
$SETUP_NOTEBOOK->set_current_page ($SETUP_SERVER);
$SETUP_DIALOG->show;
$PL_WINDOW->hide;
- $SETUP_SPELLS->clear_spells;
+ $SPELL_PAGE->clear_spells;
return unless $CONN;
@@ -473,18 +477,6 @@
on_changed => sub { $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = $_[1]); 0 },
);
- $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize");
-
- $table->add (1, $row++, new CFClient::UI::Slider
- range => [$CFG->{stat_fontsize}, 0.5, 2, 0, 0.1],
- tooltip => "The font size used by the statistics window only. Changes are instant.",
- on_changed => sub {
- $CFG->{stat_fontsize} = $_[1];
- &set_stats_window_fontsize;
- 0
- }
- );
-
$table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize");
$table->add (1, $row++, new CFClient::UI::Slider
range => [$CFG->{gauge_fontsize}, 0.5, 2, 0, 0.1],
@@ -563,12 +555,6 @@
$vbox
}
-sub set_stats_window_fontsize {
- for (values %{$STATWIDS}) {
- $_->set_fontsize ($::CFG->{stat_fontsize});
- }
-}
-
sub set_gauge_window_fontsize {
for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) {
$_->set_fontsize ($::CFG->{gauge_fontsize});
@@ -657,9 +643,7 @@
}
sub stats_window {
- my $tgw =
- new CFClient::UI::Window
- child => my $vb = new CFClient::UI::VBox;
+ my $vb = new CFClient::UI::VBox;
$vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1,
can_hover => 1, can_events => 1,
@@ -761,10 +745,12 @@
}
}
- &set_stats_window_fontsize;
+ $vb->add (my $tbl3 = new CFClient::UI::Table expand => 1);
+ $STATWIDS->{"_skill_tbl"} = $tbl3;
+
update_stats_window ({});
- $tgw
+ $vb
}
sub formsep($) {
@@ -835,6 +821,43 @@
blind => CS_STAT_RES_BLIND,
);
+ if ($::CONN && !$STATWIDS->{_skill_tbl_init}) {
+ my $sktbl = $STATWIDS->{_skill_tbl};
+ $sktbl->clear;
+
+ $sktbl->add (0, 0, new CFClient::UI::Label text => "Exp.", align => 1);
+ $sktbl->add (1, 0, new CFClient::UI::Label text => "Level", align => 1);
+ $sktbl->add (2, 0, new CFClient::UI::Label text => "Skillname");
+
+ my @skills;
+
+ for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) {
+ push @skills, [$i, $::CONN->{skill_info}{$i}];
+ }
+
+ my $y = 1;
+ for (sort { $a->[1] cmp $b->[1] } @skills) {
+ my ($idx, $name) = @$_;
+
+ unless (defined $STATWIDS->{"sk_xp_$idx"} || !$::CONN->{skill_info}{$idx}) {
+ $sktbl->add (0, $y, $STATWIDS->{"sk_xp_$idx"} = new CFClient::UI::Label text => "0", align => 1);
+ $sktbl->add (1, $y, $STATWIDS->{"sk_lvl_$idx"} = new CFClient::UI::Label text => "0", align => 1);
+ $sktbl->add (2, $y++, new CFClient::UI::Label text => $name);
+ }
+ }
+
+ $STATWIDS->{_skill_tbl_init} = 1;
+ }
+
+ for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) {
+ if (exists $stats->{$i}) {
+ $STATWIDS->{"sk_xp_$i"}->set_text (formsep $stats->{$i}->[1])
+ if $STATWIDS->{"sk_xp_$i"};
+ $STATWIDS->{"sk_lvl_$i"}->set_text (sprintf "%d", $stats->{$i}->[0])
+ if $STATWIDS->{"sk_lvl_$i"};
+ }
+ }
+
$STATWIDS->{"res_$_"}->set_text (sprintf "%d%", $stats->{$tbl{$_}})
for keys %tbl;
}
@@ -1188,7 +1211,7 @@
for (
["General", 0, 0,
- ["Enable autopickup" => PICKUP_NEWMODE],
+ ["Enable autopickup" => PICKUP_NEWMODE, \$PICKUP_ENABLE],
["Inhibit autopickup" => PICKUP_INHIBIT],
["Stop before pickup" => PICKUP_STOP],
["Debug autopickup" => PICKUP_DEBUG],
@@ -1235,7 +1258,7 @@
my $mask = $_->[1];
$table->add ($x , $y, new CFClient::UI::Label text => $_->[0], align => 1, expand => 1);
- $table->add ($x+1, $y, new CFClient::UI::CheckBox
+ $table->add ($x+1, $y, my $checkbox = new CFClient::UI::CheckBox
state => $::CFG->{pickup} & $mask,
on_changed => sub {
my ($box, $value) = @_;
@@ -1251,6 +1274,8 @@
0
});
+
+ ${$_->[2]} = $checkbox if $_->[2];
}
}
@@ -1297,6 +1322,17 @@
$hb
}
+sub toggle_player_page {
+ my ($widget) = @_;
+
+ if ($PL_WINDOW->{visible} && $PL_NOTEBOOK->get_current_page == $widget) {
+ $PL_WINDOW->hide;
+ } else {
+ $PL_NOTEBOOK->set_current_page ($widget);
+ $PL_WINDOW->show;
+ }
+}
+
sub player_window {
my $plwin = $PL_WINDOW = new CFClient::UI::FancyFrame
x => "center",
@@ -1314,20 +1350,22 @@
debug => 1,
filter => (new CFClient::UI::ScrolledWindow expand => 1, scroll_y => 1),
;
- $ntb->add (
- Inventory => inventory_widget,
- "Toggles the inventory window, where you can manage your loot (or treasures :). "
- . "You can also hit the Tab-key to show/hide the Inventory."
- );
$ntb->add (
- Stats => $STATS_WINDOW = stats_window,
- "Toggles the statistics window, where all your Stats and Resistances are being displayed at all times."
+ "Stats & Skills" => $STATS_PAGE = stats_window,
+ "Shows statistics and skill window, where all your Stats, Resistances and Skills are shown."
);
$ntb->add (
- Spells => $SETUP_SPELLS = new CFClient::UI::SpellList,
+ Spellbook => $SPELL_PAGE = new CFClient::UI::SpellList,
"Displays all spells you have and lets you edit keyboard shortcuts for them."
);
+ $ntb->add (
+ Inventory => $INVENTORY_PAGE = inventory_widget,
+ "Toggles the inventory window, where you can manage your loot (or treasures :). "
+ . "You can also hit the Tab-key to show/hide the Inventory."
+ );
+
+ $ntb->set_current_page ($INVENTORY_PAGE);
$plwin->add ($ntb);
$plwin
@@ -1453,7 +1491,8 @@
name => 'doc_browser',
force_w => int $WIDTH * 7/8,
force_h => int $HEIGHT * 7/8,
- title => "Documentation";
+ title => "Help Browser",
+ has_close_button => 1;
$win->add (my $vbox = new CFClient::UI::VBox);
@@ -1640,7 +1679,7 @@
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
- $BUTTONBAR->add (new CFClient::UI::Flopper text => "Player", other => player_window,
+ $BUTTONBAR->add (new CFClient::UI::Flopper text => "Playerbook", other => player_window,
tooltip => "Toggles the player view, where you can manage Inventory, Spells, Skills and see your Stats.");
$BUTTONBAR->add (new CFClient::UI::Button
@@ -1654,7 +1693,7 @@
},
);
- $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => help_window,
+ $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => $HELP_WINDOW = help_window,
tooltip => "View Documentation");
$BUTTONBAR->add (new CFClient::UI::Button