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.9 by root, Wed Dec 26 18:09:30 2007 UTC vs.
Revision 1.10 by root, Wed Dec 26 20:46:39 2007 UTC

1package CFPlus::Item; 1package dc::Item;
2 2
3use strict; 3use strict;
4use utf8; 4use utf8;
5use Encode; 5use Encode;
6 6
43} 43}
44 44
45sub do_n_dialog { 45sub do_n_dialog {
46 my ($cb) = @_; 46 my ($cb) = @_;
47 47
48 my $w = new CFPlus::UI::Toplevel 48 my $w = new dc::UI::Toplevel
49 on_delete => sub { $_[0]->destroy; 1 }, 49 on_delete => sub { $_[0]->destroy; 1 },
50 has_close_button => 1, 50 has_close_button => 1,
51 ; 51 ;
52 52
53 $w->add (my $vb = new CFPlus::UI::VBox x => "center", y => "center"); 53 $w->add (my $vb = new dc::UI::VBox x => "center", y => "center");
54 $vb->add (new CFPlus::UI::Label text => "Enter item count:"); 54 $vb->add (new dc::UI::Label text => "Enter item count:");
55 $vb->add (my $entry = new CFPlus::UI::Entry 55 $vb->add (my $entry = new dc::UI::Entry
56 text => $last_enter_count, 56 text => $last_enter_count,
57 on_activate => sub { 57 on_activate => sub {
58 my ($entry) = @_; 58 my ($entry) = @_;
59 $last_enter_count = $entry->get_text; 59 $last_enter_count = $entry->get_text;
60 $cb->($last_enter_count); 60 $cb->($last_enter_count);
71 71
72sub update_widgets { 72sub update_widgets {
73 my ($self) = @_; 73 my ($self) = @_;
74 74
75 # necessary to avoid cyclic references 75 # necessary to avoid cyclic references
76 CFPlus::weaken $self; 76 dc::weaken $self;
77 77
78 my $button_cb = sub { 78 my $button_cb = sub {
79 my (undef, $ev, $x, $y) = @_; 79 my (undef, $ev, $x, $y) = @_;
80 80
81 my $targ = $::CONN->{player}{tag}; 81 my $targ = $::CONN->{player}{tag};
82 82
83 if ($self->{container} == $::CONN->{player}{tag}) { 83 if ($self->{container} == $::CONN->{player}{tag}) {
84 $targ = $::CONN->{open_container}; 84 $targ = $::CONN->{open_container};
85 } 85 }
86 86
87 if (($ev->{mod} & CFPlus::KMOD_SHIFT) && $ev->{button} == 1) { 87 if (($ev->{mod} & dc::KMOD_SHIFT) && $ev->{button} == 1) {
88 $::CONN->send ("move $targ $self->{tag} 0") 88 $::CONN->send ("move $targ $self->{tag} 0")
89 if $targ || !($self->{flags} & F_LOCKED); 89 if $targ || !($self->{flags} & F_LOCKED);
90 } elsif (($ev->{mod} & CFPlus::KMOD_SHIFT) && $ev->{button} == 2) { 90 } elsif (($ev->{mod} & dc::KMOD_SHIFT) && $ev->{button} == 2) {
91 $self->{flags} & F_LOCKED 91 $self->{flags} & F_LOCKED
92 ? $::CONN->send ("lock " . pack "CN", 0, $self->{tag}) 92 ? $::CONN->send ("lock " . pack "CN", 0, $self->{tag})
93 : $::CONN->send ("lock " . pack "CN", 1, $self->{tag}) 93 : $::CONN->send ("lock " . pack "CN", 1, $self->{tag})
94 } elsif ($ev->{button} == 1) { 94 } elsif ($ev->{button} == 1) {
95 $::CONN->send ("examine $self->{tag}"); 95 $::CONN->send ("examine $self->{tag}");
99 my $move_prefix = $::CONN->{open_container} ? 'put' : 'drop'; 99 my $move_prefix = $::CONN->{open_container} ? 'put' : 'drop';
100 if ($self->{container} == $::CONN->{open_container}) { 100 if ($self->{container} == $::CONN->{open_container}) {
101 $move_prefix = "take"; 101 $move_prefix = "take";
102 } 102 }
103 103
104 my $shortname = CFPlus::shorten $self->{name}, 14; 104 my $shortname = dc::shorten $self->{name}, 14;
105 105
106 my @menu_items = ( 106 my @menu_items = (
107 ["examine", sub { $::CONN->send ("examine $self->{tag}") }], 107 ["examine", sub { $::CONN->send ("examine $self->{tag}") }],
108 ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }], 108 ["mark", sub { $::CONN->send ("mark ". pack "N", $self->{tag}) }],
109 ["ignite/thaw", # first try of an easier use of flint&steel 109 ["ignite/thaw", # first try of an easier use of flint&steel
145 do_n_dialog (sub { $::CONN->send ("move $targ $self->{tag} $_[0]") }) 145 do_n_dialog (sub { $::CONN->send ("move $targ $self->{tag} $_[0]") })
146 } 146 }
147 ] 147 ]
148 ) 148 )
149 ), 149 ),
150 ["bind <i>apply $shortname</i> to a key" => sub { CFPlus::Macro::quick_macro ["apply $self->{name}"] }], 150 ["bind <i>apply $shortname</i> to a key" => sub { dc::Macro::quick_macro ["apply $self->{name}"] }],
151 ); 151 );
152 152
153 CFPlus::UI::Menu->new (items => \@menu_items)->popup ($ev); 153 dc::UI::Menu->new (items => \@menu_items)->popup ($ev);
154 } 154 }
155 155
156 1 156 1
157 }; 157 };
158 158
167 167
168 my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5] 168 my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5]
169 : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5] 169 : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5]
170 : undef; 170 : undef;
171 171
172 my $desc = CFPlus::Item::desc_string $self; 172 my $desc = dc::Item::desc_string $self;
173 173
174 $self->{face_widget} ||= new CFPlus::UI::Face 174 $self->{face_widget} ||= new dc::UI::Face
175 can_events => 1, 175 can_events => 1,
176 can_hover => 1, 176 can_hover => 1,
177 anim => $self->{anim}, 177 anim => $self->{anim},
178 animspeed => $self->{animspeed}, # TODO# must be set at creation time 178 animspeed => $self->{animspeed}, # TODO# must be set at creation time
179 on_button_down => $button_cb, 179 on_button_down => $button_cb,
188# . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") 188# . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ")
189# . "\n\n$tooltip_std" 189# . "\n\n$tooltip_std"
190# ); 190# );
191 $self->{face_widget}->set_tooltip ("<b>$desc</b>\n\n$tooltip_std"); 191 $self->{face_widget}->set_tooltip ("<b>$desc</b>\n\n$tooltip_std");
192 192
193 $self->{desc_widget} ||= new CFPlus::UI::Label 193 $self->{desc_widget} ||= new dc::UI::Label
194 can_events => 1, 194 can_events => 1,
195 can_hover => 1, 195 can_hover => 1,
196 ellipsise => 2, 196 ellipsise => 2,
197 align => -1, 197 align => -1,
198 198
215 $self->{desc_widget}->set_text ($desc); 215 $self->{desc_widget}->set_text ($desc);
216 216
217 my $long_desc = $self->{long_desc} || $desc; 217 my $long_desc = $self->{long_desc} || $desc;
218 $self->{desc_widget}->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std"); 218 $self->{desc_widget}->set_tooltip ("<b>$long_desc</b>\n\n$tooltip_std");
219 219
220 $self->{weight_widget} ||= new CFPlus::UI::Label 220 $self->{weight_widget} ||= new dc::UI::Label
221 can_events => 1, 221 can_events => 1,
222 can_hover => 1, 222 can_hover => 1,
223 ellipsise => 0, 223 ellipsise => 0,
224 align => 0, 224 align => 0,
225 on_button_down => $button_cb, 225 on_button_down => $button_cb,
226 ; 226 ;
227 $self->{weight_widget}{bg} = $bg; 227 $self->{weight_widget}{bg} = $bg;
228 $self->{weight_widget}->set_text (CFPlus::Item::weight_string $self); 228 $self->{weight_widget}->set_text (dc::Item::weight_string $self);
229 $self->{weight_widget}->set_tooltip ( 229 $self->{weight_widget}->set_tooltip (
230 "<b>Weight</b>.\n" 230 "<b>Weight</b>.\n"
231 . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ") 231 . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ")
232 . ($self->{nrof} ? "You have $self->{nrof} of it. " : "Item cannot stack with others of it's kind. ") 232 . ($self->{nrof} ? "You have $self->{nrof} of it. " : "Item cannot stack with others of it's kind. ")
233 . "\n\n$tooltip_std" 233 . "\n\n$tooltip_std"

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines