<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Strange problem</title>
		<link>http://www.allegro.cc/forums/view/589365</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 03 Jan 2007 07:30:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have an animation that I&#39;m pushing into a vector and updating upon the Update() method.  Problem is that if I put the code in one class it works fine and all frames are played, if I move it into a different class I only get one frame and other strange errors.</p><p>Works:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> BlockTile
<span class="k2">{</span>
    <span class="k1">unsigned</span> <span class="k1">int</span> x<span class="k2">;</span>
    <span class="k1">unsigned</span> <span class="k1">int</span> y<span class="k2">;</span>
    AnimTile tile<span class="k2">;</span>
<span class="k2">}</span>BlockTile<span class="k2">;</span>
</pre></div></div><p>
</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> Game::GetBlock<span class="k2">(</span><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>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>mouse_click <span class="k3">&amp;</span><span class="k3">&amp;</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> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&gt;</span> MAP_X <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&lt;</span> MAP_X <span class="k3">+</span> VIEW_W <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&gt;</span> MAP_Y <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&lt;</span> MAP_Y <span class="k3">+</span> VIEW_H<span class="k2">)</span></td></tr><tr><td class="number">4</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>        Camera <span class="k3">*</span>cam <span class="k3">=</span> tileMap-&gt;cam<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>        <span class="k1">int</span> mx <span class="k3">=</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">-</span> MAP_X <span class="k3">+</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>cam-&gt;x<span class="k2">)</span> <span class="k3">/</span> TILE_W<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>      <span class="k1">int</span> my <span class="k3">=</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">-</span> MAP_Y <span class="k3">+</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>cam-&gt;y<span class="k2">)</span> <span class="k3">/</span> TILE_H<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>        AnimTile <span class="k3">*</span>tile <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>mx, my<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>        <span class="k1">if</span><span class="k2">(</span>tile <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>tile-&gt;id <span class="k3">=</span><span class="k3">=</span> ID_BLOCK <span class="k3">|</span><span class="k3">|</span> tile-&gt;id <span class="k3">=</span><span class="k3">=</span> ID_INVBLOCK<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>            BlockTile block<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>            block.tile <span class="k3">=</span> <span class="k3">*</span>tileMap-&gt;GetTile<span class="k2">(</span>SHRINKBLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>            block.x <span class="k3">=</span> mx<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>            block.y <span class="k3">=</span> my<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>            <span class="k1">if</span><span class="k2">(</span>tile-&gt;id <span class="k3">=</span><span class="k3">=</span> ID_INVBLOCK<span class="k2">)</span></td></tr><tr><td class="number">19</td><td>                block.tile.direction <span class="k3">=</span> ANIM_BACKWARD<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>            block.tile.Reset<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>            vTiles.push_back<span class="k2">(</span>block<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>            BlockScan scan<span class="k2">(</span>tileMap, mx, my, tile-&gt;id<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>            vScan.push_back<span class="k2">(</span>scan<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>            tileMap-&gt;SetTile<span class="k2">(</span>mx, my, <span class="k3">&amp;</span>vTiles<span class="k2">[</span>vTiles.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span>.tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>        mouse_click <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">29</td><td>    <span class="k1">if</span><span class="k2">(</span>mouse_click <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</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><span class="k2">)</span></td></tr><tr><td class="number">30</td><td>        mouse_click <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k2">}</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td><span class="k1">void</span> Game::Update<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">34</td><td><span class="k2">{</span></td></tr><tr><td class="number">35</td><td>    <span class="c">// Update tilemap animations</span></td></tr><tr><td class="number">36</td><td>    tileMap-&gt;Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    </td></tr><tr><td class="number">38</td><td>    <span class="c">// Update camera position</span></td></tr><tr><td class="number">39</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>UpdateCamera<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">40</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>        <span class="c">// Scan blocks if clicked</span></td></tr><tr><td class="number">42</td><td>        GetBlock<span class="k2">(</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>&#160;</td></tr><tr><td class="number">45</td><td>    <span class="c">// Update blocks</span></td></tr><tr><td class="number">46</td><td>    vector <span class="k3">&lt;</span>BlockScan&gt;::iterator i<span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> vScan.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">&lt;</span> vScan.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>        <span class="k1">if</span><span class="k2">(</span>i-&gt;isActive<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span></td></tr><tr><td class="number">50</td><td>            i <span class="k3">=</span> vScan.erase<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">52</td><td>            i-&gt;Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">54</td><td>    </td></tr><tr><td class="number">55</td><td>    <span class="c">// Update animations</span></td></tr><tr><td class="number">56</td><td>    vector <span class="k3">&lt;</span>BlockTile&gt;::iterator j<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    <span class="k1">for</span><span class="k2">(</span>j <span class="k3">=</span> vTiles.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> j <span class="k3">&lt;</span> vTiles.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span></td></tr><tr><td class="number">58</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>        <span class="k1">if</span><span class="k2">(</span>j-&gt;tile.direction <span class="k3">=</span><span class="k3">=</span> ANIM_FORWARD <span class="k3">&amp;</span><span class="k3">&amp;</span> j-&gt;tile.CurFrame<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> j-&gt;tile.NumFrames<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">60</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">61</td><td>            tileMap-&gt;SetTile<span class="k2">(</span>j-&gt;x, j-&gt;y, INVBLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>            j <span class="k3">=</span> vTiles.erase<span class="k2">(</span>j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>        <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>j-&gt;tile.direction <span class="k3">=</span><span class="k3">=</span> ANIM_BACKWARD <span class="k3">&amp;</span><span class="k3">&amp;</span> j-&gt;tile.CurFrame<span class="k2">(</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">65</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">66</td><td>            tileMap-&gt;SetTile<span class="k2">(</span>j-&gt;x, j-&gt;y, BLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>            j <span class="k3">=</span> vTiles.erase<span class="k2">(</span>j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">69</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">70</td><td>            j-&gt;tile.Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">72</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Doesn&#39;t work:
</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 "blockscan.h"</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>BlockScan::BlockScan<span class="k2">(</span>TileMap <span class="k3">*</span><span class="k3">&amp;</span>map, <span class="k1">unsigned</span> <span class="k1">int</span> x, <span class="k1">unsigned</span> <span class="k1">int</span> y, <span class="k1">unsigned</span> <span class="k1">int</span> tile_id<span class="k2">)</span> <span class="k2">:</span> active<span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>, timer<span class="k2">(</span>gametick <span class="k3">+</span> SCAN_SPEED<span class="k2">)</span></td></tr><tr><td class="number">6</td><td><span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    DEBUG<span class="k2">(</span><span class="s">"BlockScan::BlockScan()"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    </td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>tileMap<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>    this-&gt;x <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    this-&gt;y <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    this-&gt;tileMap <span class="k3">=</span> map<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    this-&gt;tile_id <span class="k3">=</span> tile_id<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>    BlockTile block<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    block.tile <span class="k3">=</span> <span class="k3">*</span>tileMap-&gt;GetTile<span class="k2">(</span>SHRINKBLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    block.x <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    block.y <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    </td></tr><tr><td class="number">22</td><td>    <span class="k1">if</span><span class="k2">(</span>tile_id <span class="k3">=</span><span class="k3">=</span> ID_BLOCK<span class="k2">)</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>        new_tile <span class="k3">=</span> INVBLOCK<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>        block.tile.direction <span class="k3">=</span> ANIM_FORWARD<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>tile_id <span class="k3">=</span><span class="k3">=</span> ID_INVBLOCK<span class="k2">)</span></td></tr><tr><td class="number">28</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>        new_tile <span class="k3">=</span> BLOCK<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>        block.tile.direction <span class="k3">=</span> ANIM_BACKWARD<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">33</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">34</td><td>        active <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>        <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>    </td></tr><tr><td class="number">38</td><td>    block.tile.Reset<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    vTiles.push_back<span class="k2">(</span>block<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>        </td></tr><tr><td class="number">41</td><td>    AnimTile <span class="k3">*</span>tmp<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>    tmp<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>x, y <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    tmp<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>x, y <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    </td></tr><tr><td class="number">45</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>tmp<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>tmp<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">46</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">47</td><td>        direction <span class="k3">=</span> DIR_VERTICAL<span class="k2">;</span></td></tr><tr><td class="number">48</td><td>        val1 <span class="k3">=</span> y <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>        val2 <span class="k3">=</span> y <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">52</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">53</td><td>        direction <span class="k3">=</span> DIR_HORIZONTAL<span class="k2">;</span></td></tr><tr><td class="number">54</td><td>        val1 <span class="k3">=</span> x <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>        val2 <span class="k3">=</span> x <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>    </td></tr><tr><td class="number">58</td><td>    tileMap-&gt;SetTile<span class="k2">(</span>x, y, <span class="k3">&amp;</span>vTiles<span class="k2">[</span>vTiles.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span>.tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td><span class="k2">}</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>BlockScan::~BlockScan<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">62</td><td><span class="k2">{</span></td></tr><tr><td class="number">63</td><td>    DEBUG<span class="k2">(</span><span class="s">"BlockScan::~BlockScan()"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td><span class="k2">}</span></td></tr><tr><td class="number">65</td><td>&#160;</td></tr><tr><td class="number">66</td><td><span class="k1">void</span> BlockScan::Update<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">67</td><td><span class="k2">{</span></td></tr><tr><td class="number">68</td><td>    <span class="k1">if</span><span class="k2">(</span>active <span class="k3">&amp;</span><span class="k3">&amp;</span> gametick <span class="k3">&gt;</span><span class="k3">=</span> timer<span class="k2">)</span></td></tr><tr><td class="number">69</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>        AnimTile <span class="k3">*</span>tmp<span class="k2">;</span></td></tr><tr><td class="number">71</td><td>        </td></tr><tr><td class="number">72</td><td>        <span class="k1">unsigned</span> <span class="k1">int</span> mapW, mapH<span class="k2">;</span></td></tr><tr><td class="number">73</td><td>        tileMap-&gt;GetWidth<span class="k2">(</span>mapW<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>      tileMap-&gt;GetHeight<span class="k2">(</span>mapH<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>      </td></tr><tr><td class="number">76</td><td>        <span class="k1">if</span><span class="k2">(</span>direction <span class="k3">=</span><span class="k3">=</span> DIR_VERTICAL<span class="k2">)</span></td></tr><tr><td class="number">77</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">78</td><td>            <span class="k1">if</span><span class="k2">(</span>val1 <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">79</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">80</td><td>                <span class="k1">if</span><span class="k2">(</span>val1 <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">81</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">82</td><td>                    tmp <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>x, val1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>                    <span class="k1">if</span><span class="k2">(</span>tmp <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp-&gt;id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span></td></tr><tr><td class="number">84</td><td>                    <span class="k2">{</span></td></tr><tr><td class="number">85</td><td>                        tileMap-&gt;SetTile<span class="k2">(</span>x, val1, new_tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>                        <span class="k3">-</span><span class="k3">-</span>val1<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>                    <span class="k2">}</span></td></tr><tr><td class="number">88</td><td>                    <span class="k1">else</span></td></tr><tr><td class="number">89</td><td>                        val1 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">90</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">91</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">92</td><td>                    val1 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">94</td><td>            <span class="k1">if</span><span class="k2">(</span>val2 <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">95</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">96</td><td>                <span class="k1">if</span><span class="k2">(</span>val2 <span class="k3">&lt;</span> mapW<span class="k2">)</span></td></tr><tr><td class="number">97</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">98</td><td>                    tmp <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>x, val2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>                    <span class="k1">if</span><span class="k2">(</span>tmp <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp-&gt;id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span></td></tr><tr><td class="number">100</td><td>                    <span class="k2">{</span></td></tr><tr><td class="number">101</td><td>                        tileMap-&gt;SetTile<span class="k2">(</span>x, val2, new_tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">102</td><td>                        <span class="k3">+</span><span class="k3">+</span>val2<span class="k2">;</span></td></tr><tr><td class="number">103</td><td>                    <span class="k2">}</span></td></tr><tr><td class="number">104</td><td>                    <span class="k1">else</span></td></tr><tr><td class="number">105</td><td>                        val2 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">106</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">107</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">108</td><td>                    val2 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">110</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">111</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">112</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">113</td><td>            <span class="k1">if</span><span class="k2">(</span>val1 <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">114</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">115</td><td>                <span class="k1">if</span><span class="k2">(</span>val1 <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">116</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">117</td><td>                    tmp <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>val1, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">118</td><td>                    <span class="k1">if</span><span class="k2">(</span>tmp <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp-&gt;id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span></td></tr><tr><td class="number">119</td><td>                    <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>                        tileMap-&gt;SetTile<span class="k2">(</span>val1, y, new_tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>                        <span class="k3">-</span><span class="k3">-</span>val1<span class="k2">;</span></td></tr><tr><td class="number">122</td><td>                    <span class="k2">}</span></td></tr><tr><td class="number">123</td><td>                    <span class="k1">else</span></td></tr><tr><td class="number">124</td><td>                        val1 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">125</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">126</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">127</td><td>                    val1 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">129</td><td>            <span class="k1">if</span><span class="k2">(</span>val2 <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">130</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">131</td><td>                <span class="k1">if</span><span class="k2">(</span>val2 <span class="k3">&lt;</span> mapH<span class="k2">)</span></td></tr><tr><td class="number">132</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">133</td><td>                    tmp <span class="k3">=</span> tileMap-&gt;GetTile<span class="k2">(</span>val2, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">134</td><td>                    <span class="k1">if</span><span class="k2">(</span>tmp <span class="k3">&amp;</span><span class="k3">&amp;</span> tmp-&gt;id <span class="k3">=</span><span class="k3">=</span> tile_id<span class="k2">)</span></td></tr><tr><td class="number">135</td><td>                    <span class="k2">{</span></td></tr><tr><td class="number">136</td><td>                        tileMap-&gt;SetTile<span class="k2">(</span>val2, y, new_tile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">137</td><td>                        <span class="k3">+</span><span class="k3">+</span>val2<span class="k2">;</span></td></tr><tr><td class="number">138</td><td>                    <span class="k2">}</span></td></tr><tr><td class="number">139</td><td>                    <span class="k1">else</span></td></tr><tr><td class="number">140</td><td>                        val2 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">141</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">142</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">143</td><td>                    val2 <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">144</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">145</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">146</td><td>        <span class="k1">if</span><span class="k2">(</span>val1 <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> val2 <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">147</td><td>            active <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">148</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">149</td><td>            timer <span class="k3">=</span> gametick <span class="k3">+</span> SCAN_SPEED<span class="k2">;</span></td></tr><tr><td class="number">150</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">151</td><td>    <span class="c">// Update animations</span></td></tr><tr><td class="number">152</td><td>    vector <span class="k3">&lt;</span>BlockTile&gt;::iterator j<span class="k2">;</span></td></tr><tr><td class="number">153</td><td>    <span class="k1">for</span><span class="k2">(</span>j <span class="k3">=</span> vTiles.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> j <span class="k3">&lt;</span> vTiles.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span></td></tr><tr><td class="number">154</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">155</td><td>        <span class="k1">if</span><span class="k2">(</span>j-&gt;tile.direction <span class="k3">=</span><span class="k3">=</span> ANIM_FORWARD <span class="k3">&amp;</span><span class="k3">&amp;</span> j-&gt;tile.CurFrame<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> j-&gt;tile.NumFrames<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">156</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">157</td><td>            tileMap-&gt;SetTile<span class="k2">(</span>j-&gt;x, j-&gt;y, INVBLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>            j <span class="k3">=</span> vTiles.erase<span class="k2">(</span>j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">159</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">160</td><td>        <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>j-&gt;tile.direction <span class="k3">=</span><span class="k3">=</span> ANIM_BACKWARD <span class="k3">&amp;</span><span class="k3">&amp;</span> j-&gt;tile.CurFrame<span class="k2">(</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">161</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">162</td><td>            tileMap-&gt;SetTile<span class="k2">(</span>j-&gt;x, j-&gt;y, BLOCK<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">163</td><td>            j <span class="k3">=</span> vTiles.erase<span class="k2">(</span>j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">164</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">165</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">166</td><td>            j-&gt;tile.Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">167</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">168</td><td><span class="k2">}</span></td></tr><tr><td class="number">169</td><td>&#160;</td></tr><tr><td class="number">170</td><td><span class="k1">bool</span> BlockScan::isActive<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">171</td><td><span class="k2">{</span></td></tr><tr><td class="number">172</td><td>    <span class="k1">return</span> active<span class="k2">;</span></td></tr><tr><td class="number">173</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

I&#39;m trying to make all blocks that are scanned play the animation but for now I&#39;m just trying to get the clicked tile to work.  I can&#39;t see why the two implementations would cause different results.  I&#39;ve even tried just simply calling j-&gt;tile.Update() and in isActive() returning true always so that the Game class doesn&#39;t kill the scan when it is complete but I still only get the first frame of the animation in BlockScan whereas in Game I get all frames.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Tue, 02 Jan 2007 00:48:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bump...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 02 Jan 2007 03:42:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I got it fixed, basically I just needed to use pointers rather than the default copy method which seemed to break things.  Once I wrote my own copy constructor and used new and delete things worked smoothly.  For those who are wondering what I&#39;m working on here is a screenshot:<br /><span class="remote-thumbnail"><span class="json">{"name":"img","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/e\/2eacecb0198c4a3a94a588f9ce60ea59.jpg","w":650,"h":513,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/e\/2eacecb0198c4a3a94a588f9ce60ea59"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/e/2eacecb0198c4a3a94a588f9ce60ea59-240.jpg" alt="img" width="240" height="189" /></span></p><p>I&#39;ll have a download link available before long.  It&#39;s going to be a semi-clone of Mario vs Donkey Kong II only featuring Alex <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Tue, 02 Jan 2007 03:47:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
featuring Alex
</p></div></div><p>
The alligator?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Wed, 03 Jan 2007 03:09:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The alligator?
</p></div></div><p>

I thought he meant <a href="http://philip.greenspun.com/dogs/alex">this Alex</a>. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 03 Jan 2007 03:22:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your update animations and update blocks for loops will skip the next element whenever you erase one.  If you erase the last element that code should crash.  You have to move the iterator increment out of the for statement and only execute it if you do not erase anything.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 03 Jan 2007 03:36:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>DDustin: What?  Oh I see, I should check to make sure that j does not equal end or you will call update on an invalid element.  Thanks.</p><p>Actually I&#39;m not sure that case will ever happen, it&#39;s in an else clause.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Wed, 03 Jan 2007 05:49:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Calling itr = list.erase(itr); is effectively the same as ++itr.  Your for loop also executes ++itr, resulting (in cases where an erase occurs) in ++itr being executed twice.</p><p>If you erased the last element, you will ++ your way <b>past</b> list.end() and your loop will continue iterating infinitely (although your compiler may project you from this).</p><p>Even if its not the last element, you&#39;re still skipping the element just after the one you erased, since you&#39;ve incremented your iterator twice.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 03 Jan 2007 06:55:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What would be a good solution to this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Wed, 03 Jan 2007 07:12:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span> doErase <span class="k2">)</span>
 theIter <span class="k3">=</span> list.erase<span class="k2">(</span>theIter<span class="k2">)</span>
<span class="k1">else</span> theIter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
</pre></div></div><p>
Oslt.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 03 Jan 2007 07:17:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Wed, 03 Jan 2007 07:30:54 +0000</pubDate>
	</item>
</rss>
