<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>I need a bitmap reference in my sprite structure</title>
		<link>http://www.allegro.cc/forums/view/589389</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 03 Jan 2007 18:03:20 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How would I go about adding a reference to a bitmap in my sprite data structure? See I need it so I can finish my pixel-perfect collision detection routine for a bullet-to-obstacle. I need the bitmap reference so I can access the bitmap itself to get the pixels. Here is my sprite structure:</p><p>typedef struct SPRITE{<br />    int x;<br />    int y;<br />    int dir;<br />    int alive;<br />    int width;<br />    int height;<br />    int xspeed;<br />    int yspeed;<br />    int xdelay;<br />    int ydelay;<br />    int xcount;<br />    int ycount;<br />    int framecount;<br />    int framedelay;<br />    int curframe;<br />    int maxframe;<br />    int animdir;<br />    <br />    <i>*collision detection variables*</i><br />    int col_width;<br />    int col_height;<br />    int col_x_offset;<br />    int col_y_offset;<br />}SPRITE;</p><p>My first thought was to add standard statement of the BITMAP type like:</p><p>BITMAP *reference;</p><p>I tried that but when I went to access it like this:</p><p>obstacle-&gt;reference;</p><p>The compiler gave me an error. Unless I&#39;m trying to access it the wrong way...</p><p>Any help would be appreciated. Thanks in advance.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xmltorrent)</author>
		<pubDate>Wed, 03 Jan 2007 03:43:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">typedef</span> <span class="k1">struct</span> SPRITE</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  ...</td></tr><tr><td class="number">4</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> reference<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  ...</td></tr><tr><td class="number">6</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="c">//  and access the bitmap:</span></td></tr><tr><td class="number">9</td><td>obstacle.reference</td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="c">//  EDIT: You can also do this:</span></td></tr><tr><td class="number">13</td><td><span class="k1">typedef</span> <span class="k1">struct</span> SPRITE</td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>  ...</td></tr><tr><td class="number">16</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>reference<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  ...</td></tr><tr><td class="number">18</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="c">//  and access the bitmap:</span></td></tr><tr><td class="number">21</td><td>obstacle-&gt;reference</td></tr></tbody></table></div></div><p>
Is this what You meant? And what was the error returned from the compiler?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tomasz Grajewski)</author>
		<pubDate>Wed, 03 Jan 2007 03:51:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Use: <tt>obstacle.reference</tt>, not <tt>obstacle-&gt;reference</tt>.</p><p>edit: Tomasz, neither of the methods you describe work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 03 Jan 2007 03:59:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorta but not the ticket.</p><p>Like for testing purposes, I need the structure to hold the bitmap that represents the sprite. Then I want to draw the bitmap to the back buffer to make sure that the reference is holding the bitmap.</p><p>I did what you had there in the code and it compiled but when I went to run the program, it crashed at run-time.</p><p>EDIT:<br />I fixed it. Thanks for your help.</p><p>I added this to my sprite structure:</p><p>BITMAP *reference;</p><p>Then just set it equal to the bitmap in the animation array:</p><p>player-&gt;reference = player_images[0];</p><p>Then drew it to the buffer:</p><p>draw_sprite(buffer, player-&gt;reference, 300, 400);
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xmltorrent)</author>
		<pubDate>Wed, 03 Jan 2007 04:04:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The following compiles and executes for me flawlessly:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">typedef</span> <span class="k1">struct</span> <span class="k2">{</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pic<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> y<span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k2">}</span> sprite<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td><span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error with gfx mode!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>    <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>    sprite box<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    box.pic <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">200</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    box.x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    box.y <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span>box.pic, <span class="n">0</span>, <span class="n">0</span>, <span class="n">199</span>, <span class="n">199</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>box.pic, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, box.x, box.y, box.pic-&gt;w, box.pic-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td><span class="k2">}</span></td></tr><tr><td class="number">36</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 03 Jan 2007 04:09:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You probably didn&#39;t load it correctly. Most likely your bitmap is NULL, so when you try to use it it gives an error.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Wed, 03 Jan 2007 18:03:20 +0000</pubDate>
	</item>
</rss>
