<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Variables...</title>
		<link>http://www.allegro.cc/forums/view/585040</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 17 May 2006 06:50:20 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m pulling my hair out trying to work this one out.</p><p>heres the code : </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="k1">void</span> draw_war_menu<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buf,player plr<span class="k2">)</span></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/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>black,<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">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  </td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>black,<span class="n">200</span>,<span class="n">79</span>,<span class="n">200</span><span class="k3">+</span><span class="n">400</span>,<span class="n">94</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">161</span>,<span class="n">165</span>,<span class="n">156</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>black,<span class="n">200</span>,<span class="n">119</span>,<span class="n">200</span><span class="k3">+</span><span class="n">400</span>,<span class="n">134</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">161</span>,<span class="n">165</span>,<span class="n">156</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_R<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>      plr.researching <span class="k3">=</span> <span class="n">1</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><span class="c">/*  if(key[KEY_E])</span></td></tr><tr><td class="number">13</td><td><span class="c">  {</span></td></tr><tr><td class="number">14</td><td><span class="c">      plr.researching = 0;</span></td></tr><tr><td class="number">15</td><td><span class="c">  }</span></td></tr><tr><td class="number">16</td><td><span class="c">*/</span>  </td></tr><tr><td class="number">17</td><td>  <a href="http://www.allegro.cc/manual/set_trans_blender" target="_blank"><span class="a">set_trans_blender</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">75</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buf,black,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    draw_header<span class="k2">(</span>buf,<span class="s">"War Menu"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>      alfont_set_font_size<span class="k2">(</span>mainfont, <span class="n">15</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">203</span>, <span class="n">60</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="s">"Soldiers"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  alfont_textprintf_right_aa<span class="k2">(</span>buf, mainfont,  <span class="n">595</span>, <span class="n">60</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="s">"%i"</span>,plr.army<span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>  alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">203</span>, <span class="n">80</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="s">"Attack"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  alfont_textprintf_right_aa<span class="k2">(</span>buf, mainfont,  <span class="n">595</span>, <span class="n">80</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="s">"%i"</span>,plr.attack<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>  alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">203</span>, <span class="n">100</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="s">"Defence"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>  alfont_textprintf_right_aa<span class="k2">(</span>buf, mainfont,  <span class="n">595</span>, <span class="n">100</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="s">"%i"</span>,plr.defence<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>  alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">203</span>, <span class="n">120</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="s">"Technology"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>  alfont_textprintf_right_aa<span class="k2">(</span>buf, mainfont,  <span class="n">595</span>, <span class="n">120</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="s">"%i"</span>,plr.technology<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>  alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">203</span>, <span class="n">140</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="s">"Technology progress"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>  draw_progress_bar<span class="k2">(</span>buf,<span class="n">320</span>,<span class="n">145</span>,<span class="n">599</span>, <span class="n">152</span>, plr.currtech,plr.technext,<span class="n">0</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>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">101</span>,<span class="n">110</span>,<span class="n">142</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>  <span class="k1">if</span><span class="k2">(</span>plr.researching <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">39</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">40</td><td>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>buf,<span class="n">605</span>,<span class="n">140</span>,<span class="n">655</span>,<span class="n">155</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">101</span>,<span class="n">110</span>,<span class="n">142</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&gt;</span> <span class="n">604</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&gt;</span> <span class="n">140</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&lt;</span> <span class="n">655</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&lt;</span> <span class="n">155</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">43</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>    <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>buf,<span class="n">605</span>,<span class="n">140</span>,<span class="n">655</span>,<span class="n">155</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">148</span>,<span class="n">143</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span>message,<span class="s">"Research technology"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">47</td><td>        plr.researching <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>    alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">607</span>, <span class="n">141</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="s">"Research"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>  </td></tr><tr><td class="number">52</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">53</td><td>  <span class="k1">if</span><span class="k2">(</span>plr.researching <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">54</td><td>    alfont_textprintf_aa<span class="k2">(</span>buf, mainfont,  <span class="n">607</span>, <span class="n">141</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="s">"Currently Researching..."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>  alfont_textprintf_right_aa<span class="k2">(</span>buf, mainfont,  <span class="n">595</span>, <span class="n">300</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="s">"%i"</span>,plr.researching<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    </td></tr><tr><td class="number">58</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

This function is called if plr.menu is set to 1 (or display the war menu) which works fine.<br />However whenever I try to set the plr.researching variable to 1 it automatically resets to 0.  I&#39;ve check all other files and there is no where that researching is being set at all.  Researching will only stay set if I am holding the mouse button down or have the R key checked.</p><p>Any ideas?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Moonsdescend)</author>
		<pubDate>Tue, 16 May 2006 17:40:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t pass entire structs as parameters. Either pass a pointer, or (if using C++) a reference. I don&#39;t know if that&#39;s related to your problem, but I don&#39;t see anything in that code that&#39;d cause it to reset (a stack overflow could cause you to start getting memory corruption, though). Double-check everywhere your check researching == 0 and make sure you aren&#39;t accidently doing researching = 0.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Tue, 16 May 2006 17:57:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s whats bugging me.  The only place that researching is being used is in this function.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Moonsdescend)</author>
		<pubDate>Tue, 16 May 2006 18:11:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you code in C:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> draw_war_menu<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buf,player <span class="k3">*</span>plr<span class="k2">)</span> <span class="k2">{</span>
   ...
   plr-&gt;whatever <span class="k3">=</span> something<span class="k2">;</span>
<span class="k2">}</span>

<span class="c">// call it like this:</span>
draw_war_menu<span class="k2">(</span>buffer, <span class="k3">&amp;</span>player<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

If you code in C++ the above will work but this is prefered:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> draw_war_menu<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buf,player <span class="k3">&amp;</span>plr<span class="k2">)</span> <span class="k2">{</span>
   ...
   plr.whatever <span class="k3">=</span> something<span class="k2">;</span>
<span class="k2">}</span>

<span class="c">// call it like this:</span>
draw_war_menu<span class="k2">(</span>buffer, player<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Btw, that&#39;s what Kitty Cat said in case you didn&#39;t understand.</p><p>EDIT: And in case you still don&#39;t understand, I&#39;ll try to explain. When you pass your player object by value, a <b>temporary copy</b> is made. You modify this <b>temporary copy</b> in your draw_war_menu function. When this function returns, the <b>temporary copy</b> is destroyed. So nothing gets reset to 0 because you never changed the original in the first place. You were modifying a <b>temporary copy</b>.</p><p>Also you might notice if you pay close attention, that your code not only doesn&#39;t do what you want, but will also be a bit slower than the proper way. Because making a <b>temporary copy</b> and then destroying it takes more time than not making a <b>temporary copy</b> and then destroying it.</p><p>And one more thing, you should always separate logic from drawing! Your code mixes logic and drawing. This is not good.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Tue, 16 May 2006 19:22:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
If you are passing player ply, then won&#39;t it be passing a copy to the function? In this case you will only be setting the copy&#39;s variable and not the original.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Tue, 16 May 2006 19:26:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Indeed, you are passing your structure&#39;s values. Use pointers or references.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 16 May 2006 20:25:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for all the advice.<br />I&#39;ll be starting the project again from scatch, so I&#39;ll keep it all in mind.</p><p>I think it might also have something to do with the fact that the plr struct is a global variable as well.  Would this cause a conflict using player plr as a global and player plr as a parameter?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Moonsdescend)</author>
		<pubDate>Wed, 17 May 2006 06:13:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No conflicts that I know of. Its a bit messy, but thats about it.</p><p>OT: Am I the only one who wants to post: &quot;No, use HTML&quot; ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 17 May 2006 06:50:20 +0000</pubDate>
	</item>
</rss>
