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

Comparing deliantra/Deliantra-Client/DC/Item.pm (file contents):
Revision 1.13 by root, Thu May 8 20:19:49 2008 UTC vs.
Revision 1.18 by root, Thu Dec 29 07:13:44 2011 UTC

1package DC::Item; 1package DC::Item;
2 2
3use strict; 3use common::sense;
4use utf8;
5use Encode;
6 4
7use Deliantra::Protocol::Constants; 5use Deliantra::Protocol::Constants;
8 6
9my $last_enter_count = 1; 7my $last_enter_count = 1;
10 8
12 my ($self) = @_; 10 my ($self) = @_;
13 11
14 my $desc = 12 my $desc =
15 $self->{nrof} < 2 13 $self->{nrof} < 2
16 ? $self->{name} 14 ? $self->{name}
17 : "$self->{nrof} × $self->{name_pl}"; 15 : "$self->{nrof} $self->{name_pl}";
18 16
19 $self->{flags} & F_OPEN 17 $self->{flags} & F_OPEN
20 and $desc .= " (open)"; 18 and $desc .= " (open)";
21 $self->{flags} & F_APPLIED 19 $self->{flags} & F_APPLIED
22 and $desc .= " (applied)"; 20 and $desc .= " (applied)";
66 on_escape => sub { $w->destroy; 1 }, 64 on_escape => sub { $w->destroy; 1 },
67 ); 65 );
68 $entry->grab_focus; 66 $entry->grab_focus;
69 $w->show; 67 $w->show;
70} 68}
69
70my $bg_cursed = [1 , 0 , 0, 0.5];
71my $bg_magic = [0.2, 0.2, 1, 0.5];
71 72
72sub update_widgets { 73sub update_widgets {
73 my ($self) = @_; 74 my ($self) = @_;
74 75
75 # necessary to avoid cyclic references 76 # necessary to avoid cyclic references
163 . "Middle click - apply\n" 164 . "Middle click - apply\n"
164 . "Shift-Middle click - lock/unlock\n" 165 . "Shift-Middle click - lock/unlock\n"
165 . "Right click - further options" 166 . "Right click - further options"
166 . "</small>\n"; 167 . "</small>\n";
167 168
168 my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5] 169 my $bg = $self->{flags} & F_CURSED ? $bg_cursed
169 : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5] 170 : $self->{flags} & F_MAGIC ? $bg_magic
170 : undef; 171 : undef;
171 172
172 my $desc = DC::Item::desc_string $self; 173 my $desc = DC::Item::desc_string $self;
174 my $face_tooltip = "<b>$desc</b>\n\n$tooltip_std";
173 175
176 if (my $face = $self->{face_widget}) {
177 # already exists, so update if it changed
178 if ($face->{bg} != $bg) {
179 $face->{bg} = $bg;
180 $face->update;
181 }
182
183 $face->set_bg ($bg) if $face->{bg} != $bg;
184 $face->set_face ($self->{face}) if $face->{face} != $self->{face};
185 $face->set_anim ($self->{anim}) if $face->{anim} != $self->{anim};
186 $face->set_animspeed ($self->{animspeed}) if $face->{animspeed} != $self->{animspeed};
187
188 #$face->set_tooltip (
189 # "<b>Face/Animation.</b>\n"
190 # . "Item uses face #$self->{face}. "
191 # . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ")
192 # . "\n\n$tooltip_std"
193 #);
194 $face->set_tooltip ($face_tooltip);
195 } else {
196 # new object, create new face
174 $self->{face_widget} ||= new DC::UI::Face 197 $self->{face_widget} = new DC::UI::Face
175 can_events => 1, 198 can_events => 1,
176 can_hover => 1, 199 can_hover => 1,
200 bg => $bg,
201 face => $self->{face},
177 anim => $self->{anim}, 202 anim => $self->{anim},
178 animspeed => $self->{animspeed}, # TODO# must be set at creation time 203 animspeed => $self->{animspeed}, # TODO# must be set at creation time
204 tooltip => $face_tooltip,
179 on_button_down => $button_cb, 205 on_button_down => $button_cb,
206 ;
180 ; 207 }
181 $self->{face_widget}{bg} = $bg;
182 $self->{face_widget}{face} = $self->{face};
183 $self->{face_widget}{anim} = $self->{anim};
184 $self->{face_widget}{animspeed} = $self->{animspeed};
185# $self->{face_widget}->set_tooltip (
186# "<b>Face/Animation.</b>\n"
187# . "Item uses face #$self->{face}. "
188# . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ")
189# . "\n\n$tooltip_std"
190# );
191 $self->{face_widget}->set_tooltip ("<b>$desc</b>\n\n$tooltip_std");
192 208
193 $self->{desc_widget} ||= new DC::UI::Label 209 $self->{desc_widget} ||= new DC::UI::Label
194 can_events => 1, 210 can_events => 1,
195 can_hover => 1, 211 can_hover => 1,
196 ellipsise => 2, 212 ellipsise => 2,
209 $widget->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std"); 225 $widget->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std");
210 }); 226 });
211 }, 227 },
212 ; 228 ;
213 229
214 $self->{desc_widget}{bg} = $bg; 230 my $long_desc = $self->{long_desc} || $desc;
231
232 $self->{desc_widget}->set_bg ($bg) if $self->{desc_widget}{bg} != $bg;
215 $self->{desc_widget}->set_text ($desc); 233 $self->{desc_widget}->set_text ($desc);
216
217 my $long_desc = $self->{long_desc} || $desc;
218 $self->{desc_widget}->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std"); 234 $self->{desc_widget}->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std");
219 235
220 $self->{weight_widget} ||= new DC::UI::Label 236 $self->{weight_widget} ||= new DC::UI::Label
221 can_events => 1, 237 can_events => 1,
222 can_hover => 1, 238 can_hover => 1,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines