/[VRac]/Screen.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /Screen.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 98 by dpavlin, Thu Aug 2 16:01:16 2007 UTC revision 103 by dpavlin, Thu Aug 2 18:01:51 2007 UTC
# Line 255  Check SDL event loop if there are any pe Line 255  Check SDL event loop if there are any pe
255  my $pending_key;  my $pending_key;
256  my $run_for = 2000;  my $run_for = 2000;
257    
258    my $key_down;
259    
260    sub key_down {
261            my $self = shift;
262            my $key = shift;
263            warn "key_down($key) = ",$key_down->{$key}, "\n" if $self->debug;
264            return $key_down->{$key};
265    }
266    
267  sub key_pressed {  sub key_pressed {
268          my $self = shift;          my $self = shift;
269    
270          # don't take key, just pull event          # don't take key, just pull event
271          my $just_checking = shift;          my $just_checking = shift || 0;
   
         if ( defined($pending_key) ) {  
                 my $k = $pending_key;  
                 undef $pending_key unless $just_checking;  
                 return $k;  
         }  
272    
273          my $event = $self->event || confess "no event?";          my $event = $self->event || confess "no event?";
274    
275          $event->poll || return;          $event->poll || return $pending_key;
276    
277          my $type = $event->type();          my $type = $event->type();
278    
279          exit if ($type == SDL_QUIT);          exit if ($type == SDL_QUIT);
280    
281          my $k;          my $k = $pending_key;
282    
283          if ($type == SDL_KEYDOWN) {          if ($type == SDL_KEYDOWN) {
284                  $k = $event->key_name();                  $k = $event->key_name();
285                    $key_down->{$k}++;
286                  if ( $k eq 'escape' ) {                  if ( $k eq 'escape' ) {
287                          $run_for = $self->cli;                          $run_for = $self->cli;
288                          warn "will check event loop every $run_for cycles\n";                          warn "will check event loop every $run_for cycles\n";
289                            $pending_key = '~';
290                  } else {                  } else {
291                          warn "SDL_KEYDOWN ($type) = '$k'\n";                          warn "SDL_KEYDOWN ($type) = '$k'", $just_checking ? ' fake' : '', "\n";
292                          $pending_key = $k if $just_checking;                          $pending_key = $k;
293                  }                  }
294          } elsif ( $type == SDL_KEYUP ) {          } elsif ( $type == SDL_KEYUP ) {
295                  my $up = $event->key_name();                  my $up = $event->key_name();
296                  warn "SDL_KEYUP ($type) = '$up'\n";                  $key_down->{$up} = 0;
297                    warn "SDL_KEYUP ($type) = '$up'", $just_checking ? ' fake' : '', "\n";
298                    undef $pending_key;
299          }          }
300    
301          return $k;          warn "key_pressed = $pending_key\n" if $pending_key;
302    
303            return $pending_key;
304  }  }
305    
306  =head2 loop  =head2 loop

Legend:
Removed from v.98  
changed lines
  Added in v.103

  ViewVC Help
Powered by ViewVC 1.1.26