… | |
… | |
256 | } |
256 | } |
257 | |
257 | |
258 | sub update_widgets { |
258 | sub update_widgets { |
259 | my ($self) = @_; |
259 | my ($self) = @_; |
260 | |
260 | |
|
|
261 | my $button_cb = sub { |
|
|
262 | my (undef, $ev, $x, $y) = @_; |
|
|
263 | |
|
|
264 | if (($ev->{mod} & CFClient::KMOD_SHIFT) && $ev->{button} == 1) { |
|
|
265 | my $targ = $::CONN->{player}{tag}; |
|
|
266 | |
|
|
267 | if ($self->{container} == $::CONN->{player}{tag}) { |
|
|
268 | $targ = $::CONN->{open_container}; |
|
|
269 | } |
|
|
270 | |
|
|
271 | $::CONN->send ("move $targ $self->{tag} 0"); |
|
|
272 | } elsif ($ev->{button} == 1) { |
|
|
273 | $::CONN->send ("examine $self->{tag}"); |
|
|
274 | } elsif ($ev->{button} == 2) { |
|
|
275 | $::CONN->send ("apply $self->{tag}"); |
|
|
276 | } elsif ($ev->{button} == 3) { |
|
|
277 | my @menu_items = ( |
|
|
278 | ["examine", sub { $::CONN->send ("examine $self->{tag}") }], |
|
|
279 | ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }], |
|
|
280 | ["apply", sub { $::CONN->send ("apply $self->{tag}") }], |
|
|
281 | ( |
|
|
282 | $self->{flags} & Crossfire::Protocol::F_LOCKED |
|
|
283 | ? ( |
|
|
284 | ["unlock", sub { $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) }], |
|
|
285 | ) |
|
|
286 | : ( |
|
|
287 | ["lock", sub { $::CONN->send ("lock " . pack "CN", 1, $self->{tag}) }], |
|
|
288 | ["drop", sub { $::CONN->send ("move $::CONN->{open_container} $self->{tag} 0") }], |
|
|
289 | ) |
|
|
290 | ), |
|
|
291 | ); |
|
|
292 | |
|
|
293 | CFClient::UI::Menu->new (items => \@menu_items)->popup ($ev); |
|
|
294 | } |
|
|
295 | |
|
|
296 | 1 |
|
|
297 | }; |
|
|
298 | |
261 | my $tooltip_std = "<small>" |
299 | my $tooltip_std = "<small>" |
262 | . "Left click - examine item\n" |
300 | . "Left click - examine item\n" |
263 | . "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n" |
301 | . "Shift-Left click - " . ($self->{container} ? "move or drop" : "take") . " item\n" |
264 | . "Middle click - apply\n" |
302 | . "Middle click - apply\n" |
265 | . "Right click - further options" |
303 | . "Right click - further options" |
266 | . "</small>\n"; |
304 | . "</small>\n"; |
267 | |
305 | |
268 | $self->{face_widget} ||= new CFClient::UI::Face can_events => 1, can_hover => 1; |
306 | $self->{face_widget} ||= new CFClient::UI::Face |
|
|
307 | can_events => 1, |
|
|
308 | can_hover => 1, |
|
|
309 | anim => $self->{anim}, |
|
|
310 | animspeed => $self->{animspeed}, # TODO# must be set at creation time |
|
|
311 | connect_button_down => $button_cb, |
|
|
312 | ; |
269 | $self->{face_widget}{face} = $self->{face}; |
313 | $self->{face_widget}{face} = $self->{face}; |
270 | $self->{face_widget}{anim} = $self->{anim}; |
314 | $self->{face_widget}{anim} = $self->{anim}; |
271 | $self->{face_widget}{animspeed} = $self->{animespeed}; |
315 | $self->{face_widget}{animspeed} = $self->{animspeed}; |
272 | $self->{face_widget}->set_tooltip ( |
316 | $self->{face_widget}->set_tooltip ( |
273 | "<b>Face/Animation.</b>\n" |
317 | "<b>Face/Animation.</b>\n" |
274 | . "Item uses face #$self->{face}. " |
318 | . "Item uses face #$self->{face}. " |
275 | . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
319 | . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
276 | . "\n\n$tooltip_std" |
320 | . "\n\n$tooltip_std" |
277 | ); |
321 | ); |
278 | |
322 | |
279 | $self->{desc_widget} ||= new CFClient::UI::Label ellipsise => 2, can_events => 1, can_hover => 1; |
323 | $self->{desc_widget} ||= new CFClient::UI::Label |
280 | $self->{desc_widget}->set_text (CFClient::Item::desc_string $self); |
324 | can_events => 1, |
|
|
325 | can_hover => 1, |
|
|
326 | ellipsise => 2, |
|
|
327 | xalign => 0, |
|
|
328 | connect_button_down => $button_cb, |
|
|
329 | ; |
|
|
330 | my $desc = CFClient::Item::desc_string $self; |
|
|
331 | $self->{desc_widget}->set_text ($desc); |
|
|
332 | $self->{desc_widget}->set_tooltip ("<b>$desc</b>.\n$tooltip_std"); |
281 | |
333 | |
282 | $self->{weight_widget} ||= new CFClient::UI::Label ellipsise => 0, can_events => 1, can_hover => 1, align => 0.5; |
334 | $self->{weight_widget} ||= new CFClient::UI::Label |
|
|
335 | can_events => 1, |
|
|
336 | can_hover => 1, |
|
|
337 | ellipsise => 0, |
|
|
338 | xalign => 0.5, |
|
|
339 | connect_button_down => $button_cb, |
|
|
340 | ; |
283 | $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); |
341 | $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); |
284 | |
342 | |
285 | $self->{weight_widget}->set_tooltip ( |
343 | $self->{weight_widget}->set_tooltip ( |
286 | "<b>Weight</b>.\n" |
344 | "<b>Weight</b>.\n" |
287 | . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ") |
345 | . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ") |