… | |
… | |
80 | |
80 | |
81 | if (delete $self->{need_update}) { |
81 | if (delete $self->{need_update}) { |
82 | glNewList $self->{list}; |
82 | glNewList $self->{list}; |
83 | |
83 | |
84 | if ($::MAP) { |
84 | if ($::MAP) { |
85 | my $sw = int $::WIDTH / 32; |
85 | my $sw = int $::WIDTH / (32 * $::CFG->{map_scale}); |
86 | my $sh = int $::HEIGHT / 32; |
86 | my $sh = int $::HEIGHT / (32 * $::CFG->{map_scale}); |
87 | |
87 | |
|
|
88 | glScale $::CFG->{map_scale}, $::CFG->{map_scale}; |
|
|
89 | |
88 | my $sx = $::CFG->{map_shift_x}; my $sx0 = $sx & 31; $sx = ($sx - $sx0) / 32; |
90 | my $sx = $::CFG->{map_shift_x} / $::CFG->{map_scale}; my $sx0 = $sx & 31; $sx = ($sx - $sx0) / 32; |
89 | my $sy = $::CFG->{map_shift_y}; my $sy0 = $sy & 31; $sy = ($sy - $sy0) / 32; |
91 | my $sy = $::CFG->{map_shift_y} / $::CFG->{map_scale}; my $sy0 = $sy & 31; $sy = ($sy - $sy0) / 32; |
90 | |
92 | |
91 | glTranslate $sx0 - 32, $sy0 - 32, 0; |
93 | glTranslate $sx0 - 32, $sy0 - 32, 0; |
92 | |
94 | |
93 | my ($w, $h, $data) = $::MAP->draw ($sx, $sy, 0, 0, $sw + 1, $sh + 1); |
95 | my ($w, $h, $data) = $::MAP->draw ($sx, $sy, 0, 0, $sw + 1, $sh + 1); |
94 | |
96 | |
… | |
… | |
349 | $self->emit (execute => $self->{select}); |
351 | $self->emit (execute => $self->{select}); |
350 | $self->emit ("close"); |
352 | $self->emit ("close"); |
351 | } |
353 | } |
352 | } elsif ($ev->{sym} == 27) { |
354 | } elsif ($ev->{sym} == 27) { |
353 | $self->emit ("close"); |
355 | $self->emit ("close"); |
354 | } elsif ($ev->{unicode}) { |
356 | } elsif ((chr $ev->{unicode}) =~ /^[[:alpha:]]$/) { |
355 | $self->{search} .= chr $ev->{unicode}; |
357 | $self->{search} .= chr $ev->{unicode}; |
356 | $self->update_labels; |
358 | $self->update_labels; |
357 | } |
359 | } |
|
|
360 | |
|
|
361 | length $self->{search} |
|
|
362 | or $self->emit ("close"); |
358 | } |
363 | } |
359 | |
364 | |
360 | 1 |
365 | 1 |