--- deliantra/Deliantra-Client/DC/Protocol.pm 2006/06/07 05:54:09 1.26
+++ deliantra/Deliantra-Client/DC/Protocol.pm 2006/06/11 18:41:30 1.30
@@ -400,8 +400,11 @@
sub spell_add {
my ($self, $spell) = @_;
- # TODO
- # create a widget dynamically, using spell face (CF::Protocol downloads them)
+ # try to create single paragraphs of multiple lines sent by the server
+ $spell->{message} =~ s/(?<=\S)\n(?=\w)/ /g;
+ $spell->{message} =~ s/\n+$//;
+ $spell->{message} ||= "Server did not provide a description for this spell.";
+
$::SETUP_SPELLS->add_spell ($spell);
$self->{map_widget}->add_command ("invoke $spell->{name}", CFClient::UI::Label::escape $spell->{message});
@@ -499,7 +502,7 @@
$row++;
} else {
$::FLOORBOX->add (1, $row, new CFClient::UI::Button
- text => "More...",
+ text => "More...",
on_activate => sub { $::INV_WINDOW->toggle_visibility },
);
last;
@@ -622,11 +625,29 @@
my ($self, $player) = @_;
$::STATWIDS->{weight}->set_text (sprintf "Weight: %.1fkg", $player->{weight} / 1000);
+}
+
+sub logged_in {
+ my ($self) = @_;
+
+ $self->send_ext_req (cfplus => "version", "1", sub {
+ $self->{cfplus_ext} = $_[0];
+ });
- # do it here because it is ignored earlier, and there is no "login" event
$self->send_command ("output-sync $::CFG->{output_sync}");
$self->send_command ("output-count $::CFG->{output_count}");
- $self->send_command ("pickup $::CFG->{pickup}")
+ $self->send_command ("pickup $::CFG->{pickup}");
+
+ my @yesno = ("no", "yes");
+
+ $::SERVER_INFO->set_markup (
+ "server $self->{host}:$self->{port}\n"
+ . "protocol version $self->{version}\n"
+ . "minimap support $yesno[$self->{setup}{mapinfocmd} > 0]\n"
+ . "extended command support $yesno[$self->{setup}{extcmd} > 0]\n"
+ . "cfplus support $yesno[$self->{cfplus_ext} > 0]\n"
+ . "map size $self->{mapw}×$self->{maph}\n"
+ );
}
1;