--- deliantra/Deliantra-Client/DC/Item.pm 2008/05/08 20:19:49 1.13 +++ deliantra/Deliantra-Client/DC/Item.pm 2009/01/11 23:45:52 1.14 @@ -69,6 +69,9 @@ $w->show; } +my $bg_cursed = [1 , 0 , 0, 0.5]; +my $bg_magic = [0.2, 0.2, 1, 0.5]; + sub update_widgets { my ($self) = @_; @@ -165,30 +168,42 @@ . "Right click - further options" . "\n"; - my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5] - : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5] + my $bg = $self->{flags} & F_CURSED ? $bg_cursed + : $self->{flags} & F_MAGIC ? $bg_magic : undef; my $desc = DC::Item::desc_string $self; + my $face_tooltip = "$desc\n\n$tooltip_std"; - $self->{face_widget} ||= new DC::UI::Face - can_events => 1, - can_hover => 1, - anim => $self->{anim}, - animspeed => $self->{animspeed}, # TODO# must be set at creation time - on_button_down => $button_cb, - ; - $self->{face_widget}{bg} = $bg; - $self->{face_widget}{face} = $self->{face}; - $self->{face_widget}{anim} = $self->{anim}; - $self->{face_widget}{animspeed} = $self->{animspeed}; -# $self->{face_widget}->set_tooltip ( -# "Face/Animation.\n" -# . "Item uses face #$self->{face}. " -# . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") -# . "\n\n$tooltip_std" -# ); - $self->{face_widget}->set_tooltip ("$desc\n\n$tooltip_std"); + if (my $face = $self->{face_widget}) { + if ($face->{bg} != $bg) { + $face->{bg} = $bg; + $face->update; + } + + $face->set_face ($self->{face}) if $face->{face} != $self->{face}; + $face->set_anim ($self->{anim}) if $face->{anim} != $self->{anim}; + $face->set_animspeed ($self->{animspeed}) if $face->{animspeed} != $self->{animspeed}; + + #$face->set_tooltip ( + # "Face/Animation.\n" + # . "Item uses face #$self->{face}. " + # . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") + # . "\n\n$tooltip_std" + #); + $face->set_tooltip ($face_tooltip); + } else { + $self->{face_widget} = new DC::UI::Face + can_events => 1, + can_hover => 1, + bg => $bg, + face => $self->{face}, + anim => $self->{anim}, + animspeed => $self->{animspeed}, # TODO# must be set at creation time + tooltip => $face_tooltip, + on_button_down => $button_cb, + ; + } $self->{desc_widget} ||= new DC::UI::Label can_events => 1,