Added new article
[sdlgit/SDL-Site.git] / pages / blog-0022.html-inc
index 5eca744..0de3c83 100644 (file)
@@ -1,9 +1,59 @@
 <div class="blog">
 <h1 id="NAME">
-Frozen Bubble coming to CPAN
+Once in a while .... (set_event_filter)
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i>The frozen wind,</i></div><div style="text-align: right;"><i> made me shiver,</i></div><div style="text-align: right;"><i> with excitement</i>.</div><div style="text-align: right;"></div><br />
-<div style="text-align: left;">There has been some interest in making Frozen Bubble cross platform so I have forked Frozen Bubble v2.0 to my github<a href="http://github.com/kthakore/frozen-bubble/tree/master"> repo</a>. Any contributors are welcome! I will eventually be removing hacks that were needed to make Frozen Bubble work with the old SDL perl. The plan is to make Frozen Bubble cross platform by removing platform specific hacks and dependencies. One of the major switch will be from BSD sockets to SDL_net through SDL perl or XS. The main goal would be to be able to do&nbsp;</div><div style="text-align: left;"></div><blockquote><div style="text-align: left;">cpan install FrozenBubble</div></blockquote><div style="text-align: left;"></div><div style="text-align: left;">To do this the Makefile.PL will need to be rewritten a little bit. Moreover we will need to make test using code from Frozen Bubble so that it can be smoke tested on CPAN. &nbsp;If contributors need more information please contact me.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-4948555691607200165?l=yapgh.blogspot.com' alt='' /></div>
-<p><a href="http://feedads.g.doubleclick.net/~a/T8C5WsFxWYhGmWjc7hFEeUo2xM4/0/da"><img src="http://feedads.g.doubleclick.net/~a/T8C5WsFxWYhGmWjc7hFEeUo2xM4/0/di" border="0" ismap="true"></img></a><br/>
-<a href="http://feedads.g.doubleclick.net/~a/T8C5WsFxWYhGmWjc7hFEeUo2xM4/1/da"><img src="http://feedads.g.doubleclick.net/~a/T8C5WsFxWYhGmWjc7hFEeUo2xM4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/Ixkdit-wYBk" height="1" width="1"/></div></div>
\ No newline at end of file
+<div style="text-align: right;"><i> <br />
+Once in a while <br />
+Things just work! <br />
+</i><br />
+</div><br />
+<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 />
+<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