Updated
[sdlgit/SDL-Site.git] / pages / blog-0025.html-inc
index a612737..0de3c83 100644 (file)
@@ -1,60 +1,59 @@
 <div class="blog">
 <h1 id="NAME">
-More Games + Update
+Once in a while .... (set_event_filter)
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i><br />
-idle digits,<br />
-play,<br />
-away,<br />
-idle digits.<br />
-</i></div><br />
-So while I am hacking away on v2.4 and <a href="http://github.com/kthakore/SDL_perl/tree/experimental">breaking</a> a lot of things. Here is a link to some more <a href="http://home.comcast.net/%7Eg.f.taylor/GarrysGames.html">games</a> for SDL Perl. These only work in windows now but I will look into bringing them to CPAN (with Garry's permission). <br />
-<br />
-<i>--yapgh</i><br />
+<div style="text-align: right;"><i> <br />
+Once in a while <br />
+Things just work! <br />
+</i><br />
+</div><br />
 <br />
-These where reported by Garry Taylor. Here is the rest of the email:<br />
+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 <a href="http://github.com/kthakore/SDL_perl/blob/1712fe42d62c2a3e382e6bf91366eb2ce9d2f5f4/src/Core/Events.xs">here</a> <br />
 <br />
-<blockquote><i>Hi all,</i><br />
-<i>I hadn't checked this newsgroup in a while and was happy to see </i><br />
-<i>that it still alive and well.  I saw that some people had been sharing </i><br />
-<i>some SDL Perl games online, and I had a few to share as well. At </i><br />
-<i>"http://home.comcast.net/~g.f.taylor/GarrysGames.html" you can find four </i><br />
-<i>games I have written as well as a simple flip book program to let a </i><br />
-<i>child play at making animation on the computer.  The games are "Toad" (a </i><br />
-<i>Frogger wanna be), "RabbitHat" (like Centipede), "BunnyHunt" (sort of </i><br />
-<i>like Pac-Man) and "Bonk The Buggies".  All (with the exception of Toad </i><br />
-<i>which in its very first incarnation was a game I wrote in TRS-80 Basic </i><br />
-<i>back in 1981) were written originally to run on my Windows 3.11 PC for </i><br />
-<i>my little girl so that she could play games which were not quite so </i><br />
-<i>violent as games were starting to become at the time.</i><br />
-<i><br />
-</i><br />
-<i>A few years ago I got the idea of trying to get them to run again </i><br />
-<i>by rewriting them in Perl.  The downloads are Windows XP/Vista installs </i><br />
-<i>which include a bare bones Perl environment for running the games (the </i><br />
-<i>installs put the code into its own separate place, and shouldn't </i><br />
-<i>interfere with your existing Perl setups).  I did this so that I could </i><br />
-<i>share the games with friends and family who either don't have SDL </i><br />
-<i>installed, don't have Perl installed, or don't do any programming and </i><br />
-<i>just needed something that will run.  The code as it currently stands </i><br />
-<i>was not written for general publication, so there are probably places </i><br />
-<i>where the Perl code itself is not always the best looking it could be, </i><br />
-<i>but the games themselves work pretty well.  Also, it is worth noting </i><br />
-<i>that I wound up being lazy and made a few additions to the Perl SDL code </i><br />
-<i>that I was using to add an additional function or two for printing text </i><br />
-<i>onto the screen that was centered or right aligned.</i><br />
-<i><br />
-</i><br />
-<i>While I have not made any Unix installs for the code, I have </i><br />
-<i>actually run the games on a few Linux machines that I have access to, </i><br />
-<i>where I also had installed SDL.  I have not updated my SDL installs in </i><br />
-<i>several years now, so there may be complications that arise if running </i><br />
-<i>it with  a new version of SDL.</i><br />
-<i><br />
-</i><br />
-<i>I hope you enjoy the games (or at least aren't too mean about it </i><br />
-<i>if you don't).</i><br />
-<i>Garry Taylor</i></blockquote><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-500220938152318100?l=yapgh.blogspot.com' alt='' /></div>
-<p><a href="http://feedads.g.doubleclick.net/~a/0KKHnr9jOgazWK4j_1G9YWPSuXI/0/da"><img src="http://feedads.g.doubleclick.net/~a/0KKHnr9jOgazWK4j_1G9YWPSuXI/0/di" border="0" ismap="true"></img></a><br/>
-<a href="http://feedads.g.doubleclick.net/~a/0KKHnr9jOgazWK4j_1G9YWPSuXI/1/da"><img src="http://feedads.g.doubleclick.net/~a/0KKHnr9jOgazWK4j_1G9YWPSuXI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/T10swKg2Nik" height="1" width="1"/></div></div>
\ No newline at end of file
+<pre><a href="" name="line1"> 1</a> <span style="color: #444444;">#!/usr/bin/perl -w
+<a href="" name="line2"> 2</a> </span><b>use</b> strict;
+<a href="" name="line3"> 3</a> <b>use</b> warnings;
+<a href="" name="line4"> 4</a> <b>use</b> SDL v2.3; <span style="color: #444444;">#Require the redesign branch
+<a href="" name="line5"> 5</a> </span><b>use</b> SDL::Video;
+<a href="" name="line6"> 6</a> <b>use</b> SDL::Event;
+<a href="" name="line7"> 7</a> <b>use</b> SDL::Events;
+<a href="" name="line8"> 8</a> 
+<a href="" name="line9"> 9</a> SDL::init<span style="color: #4444ff;"><b>(</b></span>SDL_INIT_VIDEO<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line10">10</a> <b>my</b> <span style="color: #2040a0;">$display</span> = SDL::Video::set_video_mode<span style="color: #4444ff;"><b>(</b></span>640,480,32, SDL_SWSURFACE <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line11">11</a> <b>my</b>  <span style="color: #2040a0;">$event</span> = SDL::Event-&gt;<b>new</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line12">12</a> 
+<a href="" name="line13">13</a> <span style="color: #444444;">#This filters out all ActiveEvents
+<a href="" name="line14">14</a> </span><b>my</b> <span style="color: #2040a0;">$filter</span> = sub <span style="color: #4444ff;"><b>{</b></span> 
+<a href="" name="line15">15</a>      <b>my</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$e</span>, <span style="color: #2040a0;">$type</span><span style="color: #4444ff;"><b>)</b></span> = <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$_</span><span style="color: #4444ff;"><b>[</b></span>0<span style="color: #4444ff;"><b>]</b></span>, <span style="color: #2040a0;">$_</span><span style="color: #4444ff;"><b>[</b></span>0<span style="color: #4444ff;"><b>]</b></span>-&gt;type<span style="color: #4444ff;"><b>)</b></span>; 
+<a href="" name="line16">16</a>      <b>if</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$type</span> == SDL_ACTIVEEVENT<span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>{</b></span> <b>return</b> 0 <span style="color: #4444ff;"><b>}</b></span> 
+<a href="" name="line17">17</a>      <b>elsif</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$type</span> == SDL_MOUSEBUTTONDOWN &amp;&amp; <span style="color: #2040a0;">$e</span>-&gt;button_button == 1<span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>{</b></span> <b>return</b> 0 <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line18">18</a>      <b>else</b> <span style="color: #4444ff;"><b>{</b></span> <b>return</b> 1; <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line19">19</a>       <span style="color: #4444ff;"><b>}</b></span>;
+<a href="" name="line20">20</a> 
+<a href="" name="line21">21</a> SDL::Events::set_event_filter<span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$filter</span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line22">22</a> 
+<a href="" name="line23">23</a> <b>while</b><span style="color: #4444ff;"><b>(</b></span>1<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line24">24</a> <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line25">25</a> 
+<a href="" name="line26">26</a>   SDL::Events::pump_events<span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line27">27</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span>SDL::Events::poll_event<span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span><span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line28">28</a>   <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line29">29</a> 
+<a href="" name="line30">30</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span>  <span style="color: #2040a0;">$event</span>-&gt;type == SDL_ACTIVEEVENT<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line31">31</a>  <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line32">32</a>  <span style="color: brown;"><b>print</b></span> <span style="color: green;">"Hello Mouse!!!<span style="color: #77dd77;">\n</span>"</span> <b>if</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_gain &amp;&amp; <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_state == SDL_APPMOUSEFOCUS<span style="color: #4444ff;"><b>)</b></span> <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line33">33</a>  <span style="color: brown;"><b>print</b></span> <span style="color: green;">"Bye Mouse!!!<span style="color: #77dd77;">\n</span>"</span> <b>if</b> <span style="color: #4444ff;"><b>(</b></span>!<span style="color: #2040a0;">$event</span>-&gt;active_gain &amp;&amp; <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_state == SDL_APPMOUSEFOCUS<span style="color: #4444ff;"><b>)</b></span> <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line34">34</a>         <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line35">35</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span> <span style="color: #2040a0;">$event</span>-&gt;type == SDL_MOUSEBUTTONDOWN<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line36">36</a>    <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line37">37</a>  <b>my</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$x</span>, <span style="color: #2040a0;">$y</span>, <span style="color: #2040a0;">$but</span> <span style="color: #4444ff;"><b>)</b></span> = <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;button_x, <span style="color: #2040a0;">$event</span>-&gt;button_y, <span style="color: #2040a0;">$event</span>-&gt;button_button<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line38">38</a>  <span style="color: brown;"><b>warn</b></span> <span style="color: green;">"<span style="color: #2040a0;">$but</span> CLICK!!! at <span style="color: #2040a0;">$x</span> and <span style="color: #2040a0;">$y</span> <span style="color: #77dd77;">\n</span>"</span>;
+<a href="" name="line39">39</a>  <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line40">40</a> 
+<a href="" name="line41">41</a>       <b>last</b> <b>if</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;type == SDL_QUIT<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line42">42</a>   <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line43">43</a> <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line44">44</a> SDL::quit<span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;&nbsp;</pre><pre>&nbsp;</pre><pre>&nbsp;</pre><pre>Tinker with $filter and look at perldoc lib/SDL/pods/Event.pod.&nbsp;</pre><pre>&nbsp;</pre><pre>Have fun,</pre><pre>--yapgh</pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-2301663122914111362?l=yapgh.blogspot.com' alt='' /></div>
+<p><a href="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/0/da"><img src="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/0/di" border="0" ismap="true"></img></a><br/>
+<a href="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/1/da"><img src="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/nw1gIYSWG5M" height="1" width="1"/></div></div>
\ No newline at end of file