ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/Protocol.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/Protocol.pm (file contents):
Revision 1.220 by root, Wed Jan 4 11:23:23 2012 UTC vs.
Revision 1.221 by root, Sun Nov 4 02:13:53 2012 UTC

27 my ($class, %arg) = @_; 27 my ($class, %arg) = @_;
28 28
29 my $self = $class->SUPER::new (%arg, 29 my $self = $class->SUPER::new (%arg,
30 setup_req => { 30 setup_req => {
31 extmap => 1, 31 extmap => 1,
32 excmd => 1,
33 widget => 2, 32 widget => 2,
34 %{$arg{setup_req} || {}}, 33 %{$arg{setup_req} || {}},
35 }, 34 },
36 ); 35 );
36
37 $self->update_fx_want;
38
39 my $guard = $self->addme_guard;
40 $self->send_exti_req (resource => "exp_table", sub {
41 my ($idx) = @_;
42
43 $self->register_face_handler ($idx, sub {
44 my ($face) = @_;
45
46 undef $guard;
47 $self->{exp_table} = $self->{json_coder}->decode (delete $face->{data});
48 $_->() for values %{ $self->{on_exp_update} };
49 });
50
51 ()
52 });
53
54 my $guard = $self->addme_guard;
55 $self->send_exti_req (resource => "skill_info", sub {
56 my ($idx) = @_;
57
58 $self->register_face_handler ($idx, sub {
59 my ($face) = @_;
60
61 undef $guard;
62 my $info = $self->{json_coder}->decode (delete $face->{data});
63 $self->{skill_info} = { map { CS_STAT_SKILLINFO + $_ => $info->[$_][0] } 0 .. $#$info };
64 });
65
66 ()
67 });
68
69 my $guard = $self->addme_guard;
70 $self->send_exti_req (resource => "spell_paths", sub {
71 my ($idx) = @_;
72
73 $self->register_face_handler ($idx, sub {
74 my ($face) = @_;
75
76 undef $guard;
77 my $info = $self->{json_coder}->decode (delete $face->{data});
78 $self->{spell_paths} = { map { (1 << $_) => $info->[$_][0] } 0 .. $#$info };
79 });
80
81 ()
82 });
37 83
38 $self->{map_widget}->clr_commands; 84 $self->{map_widget}->clr_commands;
39 85
40 my @cmd_help = map { 86 my @cmd_help = map {
41 $_->[DC::Pod::N_KW][0] =~ /^(\S+) (?:\s+ \( ([^\)]*) \) )?/x 87 $_->[DC::Pod::N_KW][0] =~ /^(\S+) (?:\s+ \( ([^\)]*) \) )?/x
129 }); 175 });
130} 176}
131 177
132sub ext_capabilities { 178sub ext_capabilities {
133 my ($self, %cap) = @_; 179 my ($self, %cap) = @_;
134
135 $self->update_fx_want;
136
137 $self->send_exti_req (resource => "exp_table", sub {
138 my ($exp_table) = @_;
139
140 $self->register_face_handler ($exp_table, sub {
141 my ($face) = @_;
142
143 $self->{exp_table} = $self->{json_coder}->decode (delete $face->{data});
144 $_->() for values %{ $self->{on_exp_update} || {} };
145 });
146
147 ()
148 });
149 180
150 if (my $ts = $cap{tileset}) { 181 if (my $ts = $cap{tileset}) {
151 if (my ($default) = grep $_->[2] & 1, @$ts) { 182 if (my ($default) = grep $_->[2] & 1, @$ts) {
152 $self->{tileset} = $default; 183 $self->{tileset} = $default;
153 $self->{tilesize} = $default->[3]; 184 $self->{tilesize} = $default->[3];
454 485
455 if (my @diffs = 486 if (my @diffs =
456 ( 487 (
457 ($stats->{+CS_STAT_EXP64} > $prev->{+CS_STAT_EXP64} ? ($stats->{+CS_STAT_EXP64} - $prev->{+CS_STAT_EXP64}) . " experience gained" : ()), 488 ($stats->{+CS_STAT_EXP64} > $prev->{+CS_STAT_EXP64} ? ($stats->{+CS_STAT_EXP64} - $prev->{+CS_STAT_EXP64}) . " experience gained" : ()),
458 map { 489 map {
459 $stats->{$_} && $prev->{$_} 490 $stats->{$_} && $prev->{$_}
460 && $stats->{$_}[1] > $prev->{$_}[1] ? "($self->{skill_info}{$_}+" . ($stats->{$_}[1] - $prev->{$_}[1]) . ")" : () 491 && $stats->{$_}[1] > $prev->{$_}[1] ? "($self->{skill_info}{$_}+" . ($stats->{$_}[1] - $prev->{$_}[1]) . ")" : ()
461 } sort { $a <=> $b } keys %{$self->{skill_info}} 492 } sort { $a <=> $b } keys %{$self->{skill_info}}
462 ) 493 )
463 ) { 494 ) {
464 my $msg = join " ", @diffs; 495 my $msg = join " ", @diffs;
669} 700}
670 701
671sub feed_map1a { 702sub feed_map1a {
672 my ($self, $data) = @_; 703 my ($self, $data) = @_;
673 704
674 my $missing = $self->{map}->map1a_update ($data, $self->{setup}{extmap}); 705 my $missing = $self->{map}->map1a_update ($data);
675 my $delay; 706 my $delay;
676 707
677 for my $tile (@$missing) { 708 for my $tile (@$missing) {
678 next if $self->{delay}{$tile}; 709 next if $self->{delay}{$tile};
679 710
1348 my $version = JSON::XS->new->encode ($self->{s_version}); 1379 my $version = JSON::XS->new->encode ($self->{s_version});
1349 1380
1350 $::SERVER_INFO->set_markup ( 1381 $::SERVER_INFO->set_markup (
1351 "server <tt>$self->{host}:$self->{port}</tt>\n" 1382 "server <tt>$self->{host}:$self->{port}</tt>\n"
1352 . "protocol version <tt>$version</tt>\n" 1383 . "protocol version <tt>$version</tt>\n"
1353 . "minimap support $yesno[$self->{setup}{mapinfocmd} > 0]\n"
1354 . "extended command support $yesno[$self->{setup}{extcmd} > 0]\n"
1355 . "examine command support $yesno[$self->{setup}{excmd} > 0]\n"
1356 . "editing support $yesno[!!$self->{editor_support}]\n" 1384 . "editing support $yesno[!!$self->{editor_support}]\n"
1357 . "map attributes $yesno[$self->{setup}{extmap} > 0]\n"
1358 . "big image protocol support $yesno[$self->{setup}{fxix} > 0]\n"
1359 . "client support $yesno[$self->{cfplus_ext} > 0]" 1385 . "client support $yesno[$self->{cfplus_ext} > 0]"
1360 . ($self->{cfplus_ext} > 0 ? ", version $self->{cfplus_ext}" : "") ."\n" 1386 . ($self->{cfplus_ext} > 0 ? ", version $self->{cfplus_ext}" : "") ."\n"
1361 . "map size $self->{mapw}×$self->{maph}\n" 1387 . "map size $self->{mapw}×$self->{maph}\n"
1362 ); 1388 );
1363 1389

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines