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.159 by root, Tue Aug 21 17:54:02 2007 UTC vs.
Revision 1.163 by root, Wed Aug 22 21:17:32 2007 UTC

165 } 165 }
166} 166}
167 167
168# widgetset new 168# widgetset new
169sub ext_ws_n { 169sub ext_ws_n {
170 my ($id) = @_; 170 my ($self, $id) = @_;
171 171
172 $self->{widgetset}{$id} = { 172 $self->{widgetset}{$id} = {
173 w => {}, 173 w => {},
174 }; 174 };
175} 175}
176 176
177# widgetset destroy 177# widgetset destroy
178sub ext_ws_d { 178sub ext_ws_d {
179 my ($id) = @_; 179 my ($self, $id) = @_;
180 180
181 my $ws = delete $self->{widgetset}{$id} 181 my $ws = delete $self->{widgetset}{$id}
182 or return; 182 or return;
183 183
184 $_->destroy 184 $_->destroy
185 for values %{$ws->{w}}; 185 for values %{$ws->{w}};
186} 186}
187 187
188# widgetset create 188# widgetset create
189sub ext_ws_c => sub { 189sub ext_ws_c {
190 my ($ws, $id, $class, $args) = @_; 190 my ($self, $ws, $id, $class, $args) = @_;
191 191
192 for my $ev (grep /^on_/, keys %$args) { 192 for my $ev (grep /^on_/, keys %$args) {
193 my $rid = $args->{$ev}; 193 my $rid = $args->{$ev};
194 $args->{$ev} = sub { 194 $args->{$ev} = sub {
195 my $id = shift->{s_id}; 195 my $id = shift->{s_id};
207 ) or warn "server failed creating client-side widget " . (CFPlus::to_json $class) . ": $@\n"; 207 ) or warn "server failed creating client-side widget " . (CFPlus::to_json $class) . ": $@\n";
208} 208}
209 209
210# widgetset associate 210# widgetset associate
211sub ext_ws_a { 211sub ext_ws_a {
212 my (%ass) = @_; 212 my ($self, %ass) = @_;
213 213
214 # everything that has a name, wether conceivably useful or not 214 # everything that has a name, wether conceivably useful or not
215 my %wkw = ( 215 my %wkw = (
216 root => $CFPlus::UI::ROOT, 216 root => $CFPlus::UI::ROOT,
217 tooltip => $CFPlus::UI::TOOLTIP, 217 tooltip => $CFPlus::UI::TOOLTIP,
255 } 255 }
256} 256}
257 257
258# widget call 258# widget call
259sub ext_w_c { 259sub ext_w_c {
260 my ($id, $rid, $method, @args) = @_; 260 my ($self, $id, $rid, $method, @args) = @_;
261 261
262 my $w = $self->{widget}{$id} 262 my $w = $self->{widget}{$id}
263 or return; 263 or return;
264 264
265 if ($rid) { 265 if ($rid) {
269 } 269 }
270} 270}
271 271
272# widget set 272# widget set
273sub ext_w_s { 273sub ext_w_s {
274 my ($id, $attr) = @_; 274 my ($self, $id, $attr) = @_;
275 275
276 my $w = $self->{widget}{$id} 276 my $w = $self->{widget}{$id}
277 or return; 277 or return;
278 278
279 for (my $i = 0; $i < $#$attr; $i += 2) { 279 for (my $i = 0; $i < $#$attr; $i += 2) {
287 } 287 }
288} 288}
289 289
290# widget get 290# widget get
291sub ext_w_g { 291sub ext_w_g {
292 my ($id, $rid, $attr) = @_; 292 my ($self, $id, $rid, $attr) = @_;
293 293
294 my $w = $self->{widget}{$id} 294 my $w = $self->{widget}{$id}
295 or return; 295 or return;
296 296
297 $self->send_exti_msg (w_r => $rid, [map $w->{$_}, @$attr]); 297 $self->send_exti_msg (w_r => $rid, [map $w->{$_}, @$attr]);
298}) 298}
299 299
300# message window 300# message window
301sub ext_channel_info { 301sub ext_channel_info {
302 my ($info) = @_; 302 my ($self, $info) = @_;
303 $self->{channels}->{$info->{id}} = $info; 303 $self->{channels}->{$info->{id}} = $info;
304 $::MESSAGE_WINDOW->add_channel ($info); 304 $::MESSAGE_WINDOW->add_channel ($info);
305} 305}
306 306
307############################################################################# 307#############################################################################
478 for keys %RES_TBL; 478 for keys %RES_TBL;
479 479
480 my $sktbl = $::STATWIDS->{skill_tbl}; 480 my $sktbl = $::STATWIDS->{skill_tbl};
481 my @skills = keys %{ $self->{skill_info} }; 481 my @skills = keys %{ $self->{skill_info} };
482 482
483 if (grep +(exists $stats->{$_}) != (exists $prev->{$_}), @skills) { 483 my @order = sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] }
484 map [$_, $self->{skill_info}{$_}],
485 grep exists $stats->{$_},
486 @skills;
487
488 if ($self->{stat_order} ne join ",", map $_->[0], @order) {
489 $self->{stat_order} = join ",", map $_->[0], @order;
490
484 $sktbl->clear; 491 $sktbl->clear;
485 492
486 my $sw = $self->{skillwid}{""} ||= [ 493 my $sw = $self->{skillwid}{""} ||= [
487 0, 0, (new CFPlus::UI::Label text => "Experience", align => 1), 494 0, 0, (new CFPlus::UI::Label text => "Experience", align => 1),
488 1, 0, (new CFPlus::UI::Label text => "Lvl.", align => 1), 495 1, 0, (new CFPlus::UI::Label text => "Lvl.", align => 1),
500 507
501 my @TOOLTIP_LVL = (tooltip => "<b>Level</b>. The level of the skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1); 508 my @TOOLTIP_LVL = (tooltip => "<b>Level</b>. The level of the skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1);
502 my @TOOLTIP_EXP = (tooltip => "<b>Experience</b>. The experience points you have in this skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1); 509 my @TOOLTIP_EXP = (tooltip => "<b>Experience</b>. The experience points you have in this skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1);
503 510
504 my ($x, $y) = (0, 1); 511 my ($x, $y) = (0, 1);
505 for ( 512 for (@order) {
506 sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] }
507 map [$_, $self->{skill_info}{$_}],
508 grep exists $stats->{$_},
509 @skills
510 ) {
511 my ($idx, $name) = @$_; 513 my ($idx, $name) = @$_;
512 514
513 my $spell_cb = sub { 515 my $spell_cb = sub {
514 my ($widget, $ev) = @_; 516 my ($widget, $ev) = @_;
515 517
560 } 562 }
561 563
562 $sktbl->add_at (@add); 564 $sktbl->add_at (@add);
563 } 565 }
564 566
565 for (grep exists $stats->{$_}, @skills) { 567 for (@order) {
568 my ($idx, $name) = @$_;
569 my $val = $stats->{$idx};
570
571 next if $prev->{$idx}[1] == $val->[1];
572
566 my $sw = $self->{skillwid}{$_}; 573 my $sw = $self->{skillwid}{$idx};
567 $sw->[0]->set_text (::formsep ($stats->{$_}[1])); 574 $sw->[0]->set_text (::formsep ($val->[1]));
568 $sw->[1]->set_text ($stats->{$_}[0] * 1); 575 $sw->[1]->set_text ($val->[0] * 1);
569 $sw->[2]->set_value (@{$stats->{$_}}); 576 $sw->[2]->set_value (@$val);
577
578 #$::GAUGES->{sklprg}->set_label ($name);
579 $::GAUGES->{sklprg}->set_value (@$val);
570 } 580 }
571} 581}
572 582
573sub macro_send { 583sub macro_send {
574 my ($self, $macro) = @_; 584 my ($self, $macro) = @_;
627 637
628 if ($delay) { 638 if ($delay) {
629 # delay the map drawing a tiny bit in the hope of getting the missing fetched 639 # delay the map drawing a tiny bit in the hope of getting the missing fetched
630 Event->timer (after => 0.03, cb => sub { 640 Event->timer (after => 0.03, cb => sub {
631 $_[0]->w->cancel; 641 $_[0]->w->cancel;
632 $self->{map_widget}->update; 642 $self->{map_widget}->update
643 if $self->{map_widget};
633 }); 644 });
634 } else { 645 } else {
635 $self->{map_widget}->update; 646 $self->{map_widget}->update;
636 } 647 }
637} 648}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines