… | |
… | |
144 | my ($self, $row) = @_; |
144 | my ($self, $row) = @_; |
145 | |
145 | |
146 | my $hs = 0; |
146 | my $hs = 0; |
147 | for (my $xi = 0; $xi <= $#{$self->{childs}->[$row] || []}; $xi++) { |
147 | for (my $xi = 0; $xi <= $#{$self->{childs}->[$row] || []}; $xi++) { |
148 | my $c = $self->{childs}->[$row]->[$xi]; |
148 | my $c = $self->{childs}->[$row]->[$xi]; |
|
|
149 | if ($c) { |
149 | my ($w, $h) = $c->size_request if $c; |
150 | my ($w, $h) = $c->size_request; |
150 | if ($hs < $h) { $hs = $h } |
151 | if ($hs < $h) { $hs = $h } |
|
|
152 | } |
151 | } |
153 | } |
152 | return $hs; |
154 | return $hs; |
153 | } |
155 | } |
154 | |
156 | |
155 | sub max_col_width { |
157 | sub max_col_width { |
156 | my ($self, $col) = @_; |
158 | my ($self, $col) = @_; |
157 | |
159 | |
158 | my $ws = 0; |
160 | my $ws = 0; |
159 | for (my $yi = 0; $yi <= $#{$self->{childs} || []}; $yi++) { |
161 | for (my $yi = 0; $yi <= $#{$self->{childs} || []}; $yi++) { |
160 | my $c = ($self->{childs}->[$yi] || [])->[$col]; |
162 | my $c = ($self->{childs}->[$yi] || [])->[$col]; |
|
|
163 | if ($c) { |
161 | my ($w, $h) = $c->size_request if $c; |
164 | my ($w, $h) = $c->size_request; |
162 | if ($ws < $w) { $ws = $w } |
165 | if ($ws < $w) { $ws = $w } |
|
|
166 | } |
163 | } |
167 | } |
164 | return $ws; |
168 | return $ws; |
165 | } |
169 | } |
166 | |
170 | |
167 | sub size_request { |
171 | sub size_request { |
… | |
… | |
327 | |
331 | |
328 | use strict; |
332 | use strict; |
329 | |
333 | |
330 | our @ISA = qw/Crossfire::Client::Widget/; |
334 | our @ISA = qw/Crossfire::Client::Widget/; |
331 | |
335 | |
|
|
336 | use SDL; |
332 | use SDL::OpenGL; |
337 | use SDL::OpenGL; |
333 | use SDL::OpenGL::Constants; |
338 | use SDL::OpenGL::Constants; |
334 | |
339 | |
335 | sub key_down { |
340 | sub key_down { |
336 | print "MAPKEYDOWN\n"; |
341 | print "MAPKEYDOWN\n"; |
… | |
… | |
372 | |
377 | |
373 | glDisable GL_TEXTURE_2D; |
378 | glDisable GL_TEXTURE_2D; |
374 | glDisable GL_BLEND; |
379 | glDisable GL_BLEND; |
375 | } |
380 | } |
376 | |
381 | |
|
|
382 | my %DIR = ( |
|
|
383 | SDLK_KP8, [1, "north"], |
|
|
384 | SDLK_KP9, [2, "northest"], |
|
|
385 | SDLK_KP6, [3, "east"], |
|
|
386 | SDLK_KP3, [4, "southeast"], |
|
|
387 | SDLK_KP2, [5, "south"], |
|
|
388 | SDLK_KP1, [6, "southwest"], |
|
|
389 | SDLK_KP4, [7, "west"], |
|
|
390 | SDLK_KP7, [8, "northwest"], |
|
|
391 | ); |
|
|
392 | |
|
|
393 | sub key_down { |
|
|
394 | my ($self, $ev) = @_; |
|
|
395 | |
|
|
396 | my $mod = $ev->key_mod; |
|
|
397 | my $sym = $ev->key_sym; |
|
|
398 | |
|
|
399 | if ($sym == SDLK_KP5) { |
|
|
400 | $::CONN->send ("command stay fire"); |
|
|
401 | } elsif (exists $DIR{$sym}) { |
|
|
402 | if ($mod & KMOD_SHIFT) { |
|
|
403 | $::CONN->send ("command fire $DIR{$sym}[0]"); |
|
|
404 | } elsif ($mod & KMOD_CTRL) { |
|
|
405 | $::CONN->send ("command run $DIR{$sym}[0]"); |
|
|
406 | } else { |
|
|
407 | } |
|
|
408 | } |
|
|
409 | } |
|
|
410 | |
|
|
411 | sub key_up { |
|
|
412 | my ($self, $ev) = @_; |
|
|
413 | |
|
|
414 | my $mod = $ev->key_mod; |
|
|
415 | my $sym = $ev->key_sym; |
|
|
416 | |
|
|
417 | if (exists $DIR{$sym}) { |
|
|
418 | if ($mod & KMOD_SHIFT) { |
|
|
419 | $::CONN->send ("command fire_stop"); |
|
|
420 | } else { |
|
|
421 | $::CONN->send ("command run_stop"); |
|
|
422 | } |
|
|
423 | } |
|
|
424 | } |
|
|
425 | |
377 | 1; |
426 | 1; |
378 | |
427 | |