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.161 by root, Wed Aug 22 16:52:34 2007 UTC vs.
Revision 1.168 by root, Thu Aug 30 07:08:17 2007 UTC

401 401
402 if ( 402 if (
403 my @diffs = map $_->[1]->($self, $_->[2], $prev->{$_->[0]}, $stats->{$_->[0]}), @statchange 403 my @diffs = map $_->[1]->($self, $_->[2], $prev->{$_->[0]}, $stats->{$_->[0]}), @statchange
404 ) { 404 ) {
405 my $msg = "<b>stat change</b>: " . (join " ", @diffs); 405 my $msg = "<b>stat change</b>: " . (join " ", @diffs);
406 $self->{statusbox}->add ($msg, group => "stat $msg", fg => [0.8, 1, 0.2, 1], timeout => 10); 406 $self->{statusbox}->add ($msg, group => "stat $msg", fg => [0.8, 1, 0.2, 1], timeout => 20);
407 } 407 }
408 408
409 $self->update_stats_window ($stats, $prev); 409 $self->update_stats_window ($stats, $prev);
410 410
411 $self->{prev_stats} = { %$stats }; 411 $self->{prev_stats} = { %$stats };
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] eq $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);
570 }
571}
572 577
573sub macro_send { 578 $::GAUGES->{sklprg}->set_label ("$name %d%%");
574 my ($self, $macro) = @_; 579 $::GAUGES->{sklprg}->set_value (@$val);
575
576 for my $cmd (@{ $macro->{action} }) {
577 $self->send_command ($cmd);
578 } 580 }
579} 581}
580 582
581sub user_send { 583sub user_send {
582 my ($self, $command) = @_; 584 my ($self, $command) = @_;
584 $self->{record}->($command) 586 $self->{record}->($command)
585 if $self->{record}; 587 if $self->{record};
586 588
587 $self->logprint ("send: ", $command); 589 $self->logprint ("send: ", $command);
588 $self->send_command ($command); 590 $self->send_command ($command);
589 ::status ($command);
590} 591}
591 592
592sub record { 593sub record {
593 my ($self, $cb) = @_; 594 my ($self, $cb) = @_;
594 595
877 # split metadata case, FT_MUSIC, FT_SOUND 878 # split metadata case, FT_MUSIC, FT_SOUND
878 if ($changed) { # new data 879 if ($changed) { # new data
879 my ($meta, $data) = unpack "(w/a*)*", $face->{data}; 880 my ($meta, $data) = unpack "(w/a*)*", $face->{data};
880 $face->{data} = $meta; 881 $face->{data} = $meta;
881 882
883 # rely on strict ordering here and also on later fetch
882 CFPlus::DB::put res_data => $face->{name} => $data, sub { }; 884 CFPlus::DB::put res_data => $face->{name} => $data, sub { };
883 CFPlus::DB::put res_meta => $face->{name} => $meta, sub { }; 885 CFPlus::DB::put res_meta => $face->{name} => $meta, sub { };
884 } 886 }
885 887
886 $face->{data} = $self->{json_coder}->decode ($face->{data}); 888 $face->{data} = $self->{json_coder}->decode ($face->{data});
887
888 ::add_license ($face); 889 ::add_license ($face);
890 ::message ({ markup => CFPlus::asxml "downloaded resource '$face->{data}{name}', type $face->{type}." })
891 if $changed;
889 892
890 if ($face->{type} == 3) { # FT_MUSIC 893 if ($face->{type} == 3) { # FT_MUSIC
891 ::message ({ markup => "downloaded song #$facenum" })
892 if $changed;
893
894 &::audio_music_push ($facenum); 894 &::audio_music_push ($facenum);
895 } elsif ($face->{type} == 5) { # FT_SOUND 895 } elsif ($face->{type} == 5) { # FT_SOUND
896 ::message ({ markup => "downloaded sound #$facenum" })
897 if $changed;
898
899 &::audio_sound_push ($facenum); 896 &::audio_sound_push ($facenum);
900 } 897 }
901 898
902 } else { 899 } else {
903 # flat resource case, FT_RSRC 900 # flat resource case, FT_RSRC

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines