--- deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/22 16:52:34 1.161 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/22 21:17:32 1.163 @@ -480,7 +480,14 @@ my $sktbl = $::STATWIDS->{skill_tbl}; my @skills = keys %{ $self->{skill_info} }; - if (grep +(exists $stats->{$_}) != (exists $prev->{$_}), @skills) { + my @order = sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] } + map [$_, $self->{skill_info}{$_}], + grep exists $stats->{$_}, + @skills; + + if ($self->{stat_order} ne join ",", map $_->[0], @order) { + $self->{stat_order} = join ",", map $_->[0], @order; + $sktbl->clear; my $sw = $self->{skillwid}{""} ||= [ @@ -502,12 +509,7 @@ my @TOOLTIP_EXP = (tooltip => "Experience. The experience points you have in this skill.$TOOLTIP_ALL", can_events => 1, can_hover => 1); my ($x, $y) = (0, 1); - for ( - sort { $stats->{$b->[0]}[1] <=> $stats->{$a->[0]}[1] or $a->[1] cmp $b->[1] } - map [$_, $self->{skill_info}{$_}], - grep exists $stats->{$_}, - @skills - ) { + for (@order) { my ($idx, $name) = @$_; my $spell_cb = sub { @@ -562,11 +564,19 @@ $sktbl->add_at (@add); } - for (grep exists $stats->{$_}, @skills) { - my $sw = $self->{skillwid}{$_}; - $sw->[0]->set_text (::formsep ($stats->{$_}[1])); - $sw->[1]->set_text ($stats->{$_}[0] * 1); - $sw->[2]->set_value (@{$stats->{$_}}); + for (@order) { + my ($idx, $name) = @$_; + my $val = $stats->{$idx}; + + next if $prev->{$idx}[1] == $val->[1]; + + my $sw = $self->{skillwid}{$idx}; + $sw->[0]->set_text (::formsep ($val->[1])); + $sw->[1]->set_text ($val->[0] * 1); + $sw->[2]->set_value (@$val); + + #$::GAUGES->{sklprg}->set_label ($name); + $::GAUGES->{sklprg}->set_value (@$val); } }