… | |
… | |
76 | $y -= int 0.5 * $::MAP->h; |
76 | $y -= int 0.5 * $::MAP->h; |
77 | |
77 | |
78 | $x += 1; |
78 | $x += 1; |
79 | $y += 1; |
79 | $y += 1; |
80 | |
80 | |
81 | $::CONN->send ("lookat $x $y") |
81 | $::CONN->lookat ($x, $y) |
82 | if $::CONN; |
82 | if $::CONN; |
83 | |
83 | |
84 | } elsif ($ev->{button} == 2) { |
84 | } elsif ($ev->{button} == 2) { |
85 | my ($ox, $oy) = ($ev->{x}, $ev->{y}); |
85 | my ($ox, $oy) = ($ev->{x}, $ev->{y}); |
86 | my ($bw, $bh) = ($::CFG->{map_shift_x}, $::CFG->{map_shift_y}); |
86 | my ($bw, $bh) = ($::CFG->{map_shift_x}, $::CFG->{map_shift_y}); |
… | |
… | |
181 | $self->{completer}->set_prefix (""); |
181 | $self->{completer}->set_prefix (""); |
182 | $self->{completer}->show; |
182 | $self->{completer}->show; |
183 | } elsif (exists $DIR{$sym}) { |
183 | } elsif (exists $DIR{$sym}) { |
184 | if ($mod & CFClient::KMOD_SHIFT) { |
184 | if ($mod & CFClient::KMOD_SHIFT) { |
185 | $self->{shft}++; |
185 | $self->{shft}++; |
|
|
186 | if ($DIR{$sym}[0] != $self->{fire_dir}) { |
186 | $::CONN->user_send ("fire $DIR{$sym}[0]"); |
187 | $::CONN->user_send ("fire $DIR{$sym}[0]"); |
|
|
188 | } |
|
|
189 | $self->{fire_dir} = $DIR{$sym}[0]; |
187 | } elsif ($mod & CFClient::KMOD_CTRL) { |
190 | } elsif ($mod & CFClient::KMOD_CTRL) { |
188 | $self->{ctrl}++; |
191 | $self->{ctrl}++; |
189 | $::CONN->user_send ("run $DIR{$sym}[0]"); |
192 | $::CONN->user_send ("run $DIR{$sym}[0]"); |
190 | } else { |
193 | } else { |
191 | $::CONN->user_send ("$DIR{$sym}[1]"); |
194 | $::CONN->user_send ("$DIR{$sym}[1]"); |
… | |
… | |
219 | |
222 | |
220 | my $res = 0; |
223 | my $res = 0; |
221 | my $mod = $ev->{mod}; |
224 | my $mod = $ev->{mod}; |
222 | my $sym = $ev->{sym}; |
225 | my $sym = $ev->{sym}; |
223 | |
226 | |
|
|
227 | if ($::CFG->{shift_fire_stop}) { |
224 | if (!($mod & CFClient::KMOD_SHIFT) && delete $self->{shft}) { |
228 | if (!($mod & CFClient::KMOD_SHIFT) && delete $self->{shft}) { |
225 | $::CONN->user_send ("fire_stop"); |
229 | $::CONN->user_send ("fire_stop"); |
|
|
230 | delete $self->{fire_dir}; |
226 | $res = 1; |
231 | $res = 1; |
|
|
232 | } |
|
|
233 | } else { |
|
|
234 | if (exists $DIR{$sym} && delete $self->{shft}) { |
|
|
235 | $::CONN->user_send ("fire_stop"); |
|
|
236 | delete $self->{fire_dir}; |
|
|
237 | $res = 1; |
|
|
238 | } elsif (($sym == CFClient::SDLK_LSHIFT || $sym == CFClient::SDLK_RSHIFT) && delete $self->{shft}) { # XXX: is RSHIFT ok? |
|
|
239 | $::CONN->user_send ("fire_stop"); |
|
|
240 | delete $self->{fire_dir}; |
|
|
241 | $res = 1; |
|
|
242 | } |
227 | } |
243 | } |
228 | |
244 | |
229 | if (!($mod & CFClient::KMOD_CTRL ) && delete $self->{ctrl}) { |
245 | if (!($mod & CFClient::KMOD_CTRL ) && delete $self->{ctrl}) { |
230 | $::CONN->user_send ("run_stop"); |
246 | $::CONN->user_send ("run_stop"); |
231 | $res = 1; |
247 | $res = 1; |
… | |
… | |
462 | ]; |
478 | ]; |
463 | |
479 | |
464 | $self->{entry} = new CFClient::UI::Entry |
480 | $self->{entry} = new CFClient::UI::Entry |
465 | on_changed => sub { |
481 | on_changed => sub { |
466 | $self->update_labels; |
482 | $self->update_labels; |
|
|
483 | }, |
|
|
484 | on_button_down => sub { |
|
|
485 | my ($entry, $ev, $x, $y) = @_; |
|
|
486 | |
|
|
487 | if ($ev->{button} == 3) { |
|
|
488 | (new CFClient::UI::Menu |
|
|
489 | items => [ |
|
|
490 | ["bind to a key" => sub { $::BIND_EDITOR->do_quick_binding ([$self->{select}], sub { $entry->focus_in }) }] |
|
|
491 | ], |
|
|
492 | )->popup ($ev); |
|
|
493 | return 1; |
|
|
494 | } |
|
|
495 | 0 |
467 | }, |
496 | }, |
468 | on_key_down => sub { |
497 | on_key_down => sub { |
469 | my ($entry, $ev) = @_; |
498 | my ($entry, $ev) = @_; |
470 | |
499 | |
471 | my $self = $entry->{parent}{parent}; |
500 | my $self = $entry->{parent}{parent}; |