X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2Fblog-0025.html-inc;h=0de3c832cedb93b3d65e9876f3ff91874c42d50a;hb=a05e5d4499fb58198e463162d0385e8a156e1f03;hp=9145c2c8074f7f51cef46a8fbf9d9b0e6c381a63;hpb=769d193e7a4b5eeebd1f248a084ae4f2495df071;p=sdlgit%2FSDL-Site.git diff --git a/pages/blog-0025.html-inc b/pages/blog-0025.html-inc index 9145c2c..0de3c83 100644 --- a/pages/blog-0025.html-inc +++ b/pages/blog-0025.html-inc @@ -1,6 +1,59 @@

-My milestones (itches) for gaming in Perl +Once in a while .... (set_event_filter)

-

As a young sprout in spring,
the soil is moist,
and the sun bright.


But as fall comes,
with fading leaves,
my roots keep me standing. 



As a new Perl developer I am able to contribute with great enthusiasm due to the great community and the fancies of the language. However I know that these things will fade and I will need something else to take the place. Usually what has worked for me in the past was to set milestones. These will act as roots, keeping me interested in being involved. After all in words better than mines.
We all “scratch our own itches”. It’s why I started Linux, it’s why I started git, and it’s why I am still involved. --Linus

So here are my evolving milestones for Gaming in Perl:
--signed YAPGH
\ No newline at end of file +

+Once in a while
+Things just work!
+

+

+
+So I have been hacking for a while on SDL::Events::set_event_filter. The code below is an example usage. The magic behind this is here
+
+
 1 #!/usr/bin/perl -w
+ 2 use strict;
+ 3 use warnings;
+ 4 use SDL v2.3; #Require the redesign branch
+ 5 use SDL::Video;
+ 6 use SDL::Event;
+ 7 use SDL::Events;
+ 8 
+ 9 SDL::init(SDL_INIT_VIDEO);
+10 my $display = SDL::Video::set_video_mode(640,480,32, SDL_SWSURFACE );
+11 my  $event = SDL::Event->new();
+12 
+13 #This filters out all ActiveEvents
+14 my $filter = sub { 
+15      my ($e, $type) = ($_[0], $_[0]->type); 
+16      if($type == SDL_ACTIVEEVENT){ return 0 } 
+17      elsif($type == SDL_MOUSEBUTTONDOWN && $e->button_button == 1){ return 0 }
+18      else { return 1; }
+19       };
+20 
+21 SDL::Events::set_event_filter($filter);
+22 
+23 while(1)
+24 {
+25 
+26   SDL::Events::pump_events();
+27   if(SDL::Events::poll_event($event))
+28   {
+29 
+30   if(  $event->type == SDL_ACTIVEEVENT)
+31  {
+32  print "Hello Mouse!!!\n" if ($event->active_gain && ($event->active_state == SDL_APPMOUSEFOCUS) );
+33  print "Bye Mouse!!!\n" if (!$event->active_gain && ($event->active_state == SDL_APPMOUSEFOCUS) );
+34         }
+35   if( $event->type == SDL_MOUSEBUTTONDOWN)
+36    {
+37  my ($x, $y, $but ) = ($event->button_x, $event->button_y, $event->button_button);
+38  warn "$but CLICK!!! at $x and $y \n";
+39  }
+40 
+41       last if($event->type == SDL_QUIT);
+42   }
+43 }
+44 SDL::quit()
 
 
Tinker with $filter and look at perldoc lib/SDL/pods/Event.pod. 
 
Have fun,
--yapgh
+


+

\ No newline at end of file