… | |
… | |
206 | ["Statistics\tF2", sub { ::toggle_player_page ($::STATS_PAGE) }], |
206 | ["Statistics\tF2", sub { ::toggle_player_page ($::STATS_PAGE) }], |
207 | ["Skills\tF3", sub { ::toggle_player_page ($::SKILL_PAGE) }], |
207 | ["Skills\tF3", sub { ::toggle_player_page ($::SKILL_PAGE) }], |
208 | ["Spells…\tF4", sub { ::toggle_player_page ($::SPELL_PAGE) }], |
208 | ["Spells…\tF4", sub { ::toggle_player_page ($::SPELL_PAGE) }], |
209 | ["Inventory…\tF5", sub { ::toggle_player_page ($::INVENTORY_PAGE) }], |
209 | ["Inventory…\tF5", sub { ::toggle_player_page ($::INVENTORY_PAGE) }], |
210 | ["Setup… \tF9", sub { $::SETUP_DIALOG->toggle_visibility }], |
210 | ["Setup… \tF9", sub { $::SETUP_DIALOG->toggle_visibility }], |
211 | ["Server Messages…", sub { $::MESSAGE_WINDOW->toggle_visibility }], |
211 | # ["Server Messages…", sub { $::MESSAGE_WINDOW->toggle_visibility }], |
212 | [ |
212 | [ |
213 | $::PICKUP_ENABLE->{state} |
213 | $::PICKUP_ENABLE->{state} |
214 | ? "Disable automatic pickup" |
214 | ? "Disable automatic pickup" |
215 | : "Enable automatic pickup", |
215 | : "Enable automatic pickup", |
216 | sub { $::PICKUP_ENABLE->toggle } |
216 | sub { $::PICKUP_ENABLE->toggle } |
… | |
… | |
319 | my $mod = $ev->{mod}; |
319 | my $mod = $ev->{mod}; |
320 | my $sym = $ev->{sym}; |
320 | my $sym = $ev->{sym}; |
321 | my $uni = $ev->{unicode}; |
321 | my $uni = $ev->{unicode}; |
322 | |
322 | |
323 | $mod &= DC::KMOD_CTRL | DC::KMOD_ALT | DC::KMOD_SHIFT; |
323 | $mod &= DC::KMOD_CTRL | DC::KMOD_ALT | DC::KMOD_SHIFT; |
|
|
324 | |
|
|
325 | # ignore repeated keypresses |
|
|
326 | return if $self->{last_mod} == $mod && $self->{last_sym} == $sym; |
|
|
327 | $self->{last_mod} = $mod; |
|
|
328 | $self->{last_sym} = $sym; |
324 | |
329 | |
325 | if ($::CONN && (my $dir = $DIR{(!!($mod & DC::KMOD_ALT)) . ",$sym"})) { |
330 | if ($::CONN && (my $dir = $DIR{(!!($mod & DC::KMOD_ALT)) . ",$sym"})) { |
326 | if ($mod & DC::KMOD_SHIFT) { |
331 | if ($mod & DC::KMOD_SHIFT) { |
327 | $self->{shft}++; |
332 | $self->{shft}++; |
328 | if ($dir->[0] != $self->{fire_dir}) { |
333 | if ($dir->[0] != $self->{fire_dir}) { |
… | |
… | |
347 | |
352 | |
348 | my $res = 0; |
353 | my $res = 0; |
349 | my $mod = $ev->{mod}; |
354 | my $mod = $ev->{mod}; |
350 | my $sym = $ev->{sym}; |
355 | my $sym = $ev->{sym}; |
351 | |
356 | |
|
|
357 | delete $self->{last_mod}; |
|
|
358 | delete $self->{last_sym}; |
|
|
359 | |
352 | if ($::CFG->{shift_fire_stop}) { |
360 | if ($::CFG->{shift_fire_stop}) { |
353 | if (!($mod & DC::KMOD_SHIFT) && delete $self->{shft}) { |
361 | if (!($mod & DC::KMOD_SHIFT) && delete $self->{shft}) { |
354 | $::CONN->user_send ("fire_stop"); |
362 | $::CONN->user_send ("fire_stop"); |
355 | delete $self->{fire_dir}; |
363 | delete $self->{fire_dir}; |
356 | $res = 1; |
364 | $res = 1; |
… | |
… | |
431 | |
439 | |
432 | glPushMatrix; |
440 | glPushMatrix; |
433 | glTranslate $sx0, $sy0; |
441 | glTranslate $sx0, $sy0; |
434 | glScale $::CFG->{map_scale}, $::CFG->{map_scale}; |
442 | glScale $::CFG->{map_scale}, $::CFG->{map_scale}; |
435 | |
443 | |
436 | $::MAP->draw ($dx, $dy, $sw, $sh, $self->{tilesize}); |
444 | $::MAP->draw ($dx, $dy, $sw, $sh, |
|
|
445 | $self->{tilesize}, |
|
|
446 | $::CONN->{player}{tag}, 0, 0); |
437 | |
447 | |
438 | glScale $self->{tilesize}, $self->{tilesize}; |
448 | glScale $self->{tilesize}, $self->{tilesize}; |
439 | |
449 | |
440 | if (my $tex = $self->{fow_texture}) { |
450 | if (my $tex = $self->{fow_texture}) { |
441 | glPushMatrix; |
451 | glPushMatrix; |