<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Looking for animation classes</title>
		<link>http://www.allegro.cc/forums/view/588130</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 24 Oct 2006 03:49:50 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Anyone here care to share their animation class with me? I&#39;ve written so many (that I never saved) and I don&#39;t want to write another one. I&#39;d love to use someone else&#39;s if they would be kind to share with a little doc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Fri, 20 Oct 2006 04:36:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check out my sig. axl includes an animation library that can be used by itself.</p><p>the direct link to the online manual is here:<br /><a href="http://retrospec.sgn.net/users/nwalker/axl/index.html">http://retrospec.sgn.net/users/nwalker/axl/index.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Fri, 20 Oct 2006 05:32:19 +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="p">#ifndef ANIMATION_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define ANIMATION_H</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include "datafile.h"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "stopwatch.h"</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "bitmap.h"</span></td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">8</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">class</span> animation <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>public:</td></tr><tr><td class="number">12</td><td>    </td></tr><tr><td class="number">13</td><td>    <span class="c">// path must be ready to use with the specified datafile.</span></td></tr><tr><td class="number">14</td><td>    <span class="c">// The path will be postfixed with a number starting at 0 and</span></td></tr><tr><td class="number">15</td><td>    <span class="c">// incremented until no image is found.  An example path could</span></td></tr><tr><td class="number">16</td><td>    <span class="c">// be: CHARACTERS/BRILLY/FIST/LEFT/</span></td></tr><tr><td class="number">17</td><td>    <span class="c">// </span></td></tr><tr><td class="number">18</td><td>    <span class="c">// Note the object in the datafile must have an attribute called</span></td></tr><tr><td class="number">19</td><td>    <span class="c">// TIME which specifies how many milliseconds the frame will display</span></td></tr><tr><td class="number">20</td><td>    <span class="c">// for.  If it is not specified the time defaults to 0</span></td></tr><tr><td class="number">21</td><td>    animation<span class="k2">(</span><span class="k1">const</span> std::string <span class="k3">&amp;</span>path, datafile_t<span class="k3">*</span> <span class="k3">=</span> <span class="k3">&amp;</span>datafile<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>    animation<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    animation<span class="k2">(</span><span class="k1">const</span> animation<span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    </td></tr><tr><td class="number">26</td><td>    <span class="c">// Animation is running (started) by default</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">void</span> start<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">void</span> restart<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    <span class="k1">void</span> unpause<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <span class="k1">void</span> stop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_613.html" target="_blank">pause</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  <span class="k1">void</span> setframe<span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> frame<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>    </td></tr><tr><td class="number">34</td><td>    <span class="c">// Alais functions representing the same operations</span></td></tr><tr><td class="number">35</td><td>    <span class="k1">bool</span> unpaused<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    <span class="k1">bool</span> paused<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">bool</span> started<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <span class="k1">bool</span> stopped<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    </td></tr><tr><td class="number">40</td><td>    <span class="c">// Calculates the current Bitmap and returns it</span></td></tr><tr><td class="number">41</td><td>    <span class="c">// Returns 0 if there is no frame available.</span></td></tr><tr><td class="number">42</td><td>    Bitmap <span class="k3">*</span>get_bmp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    </td></tr><tr><td class="number">44</td><td>    <span class="c">// Finds the frame associated with the parameter 'frame'.  Frame can be</span></td></tr><tr><td class="number">45</td><td>    <span class="c">// any value and this function will wrap it to the correct frame number.</span></td></tr><tr><td class="number">46</td><td>    <span class="c">// Returns 0 if there are no frames available.</span></td></tr><tr><td class="number">47</td><td>    Bitmap <span class="k3">*</span>get_bmp<span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> frame<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    </td></tr><tr><td class="number">49</td><td>    <span class="c">// Must be set to point to a variable that holds the milliseconds since</span></td></tr><tr><td class="number">50</td><td>    <span class="c">// program start</span></td></tr><tr><td class="number">51</td><td>    <span class="k1">static</span> <span class="k1">volatile</span> <span class="k1">unsigned</span> <span class="k1">int</span> <span class="k3">*</span>msecs<span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    </td></tr><tr><td class="number">53</td><td>private:</td></tr><tr><td class="number">54</td><td>    </td></tr><tr><td class="number">55</td><td>    <span class="k1">struct</span> Frame <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>        </td></tr><tr><td class="number">57</td><td>        <span class="k1">int</span> msec_delay<span class="k2">;</span></td></tr><tr><td class="number">58</td><td>        Bitmap bmp<span class="k2">;</span></td></tr><tr><td class="number">59</td><td>        </td></tr><tr><td class="number">60</td><td>        Frame<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tmp<span class="k2">)</span> <span class="k2">:</span> bmp<span class="k2">(</span>tmp<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">61</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    </td></tr><tr><td class="number">63</td><td>    std::vector<span class="k3">&lt;</span>Frame&gt; frames<span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    </td></tr><tr><td class="number">65</td><td>    <span class="k1">unsigned</span> <span class="k1">int</span> cur_frame<span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    <span class="k1">unsigned</span> <span class="k1">int</span> frame_msec_start<span class="k2">;</span></td></tr><tr><td class="number">67</td><td>    </td></tr><tr><td class="number">68</td><td>    <span class="k1">bool</span> running<span class="k2">;</span></td></tr><tr><td class="number">69</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td><span class="p">#endif</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td><span class="c">// ....</span></td></tr><tr><td class="number">74</td><td>&#160;</td></tr><tr><td class="number">75</td><td><span class="p">#include "animation.h"</span></td></tr><tr><td class="number">76</td><td><span class="p">#include "log.h"</span></td></tr><tr><td class="number">77</td><td><span class="p">#include &lt;sstream&gt;</span></td></tr><tr><td class="number">78</td><td><span class="p">#include &lt;iostream&gt;</span></td></tr><tr><td class="number">79</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">80</td><td>&#160;</td></tr><tr><td class="number">81</td><td><span class="k1">volatile</span> <span class="k1">unsigned</span> <span class="k1">int</span> <span class="k3">*</span>animation::msecs <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>&#160;</td></tr><tr><td class="number">83</td><td>animation::animation<span class="k2">(</span><span class="k1">const</span> string <span class="k3">&amp;</span>path, datafile_t <span class="k3">*</span>datafile<span class="k2">)</span></td></tr><tr><td class="number">84</td><td>    <span class="k2">:</span> cur_frame<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, running<span class="k2">(</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">85</td><td><span class="k2">{</span></td></tr><tr><td class="number">86</td><td>    <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>datf<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">;</span></td></tr><tr><td class="number">88</td><td>    </td></tr><tr><td class="number">89</td><td>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="n">1</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">90</td><td>        </td></tr><tr><td class="number">91</td><td>        ostringstream os<span class="k2">;</span></td></tr><tr><td class="number">92</td><td>        </td></tr><tr><td class="number">93</td><td>        os <span class="k3">&lt;</span><span class="k3">&lt;</span> path <span class="k3">&lt;</span><span class="k3">&lt;</span> i<span class="k2">;</span></td></tr><tr><td class="number">94</td><td>        </td></tr><tr><td class="number">95</td><td>        bmp <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k2">)</span>datafile-&gt;loadfind<span class="k2">(</span>os.str<span class="k2">(</span><span class="k2">)</span>, <span class="k3">&amp;</span>datf<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>        </td></tr><tr><td class="number">97</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bmp<span class="k2">)</span></td></tr><tr><td class="number">98</td><td>            <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>        </td></tr><tr><td class="number">100</td><td>        frames.push_back<span class="k2">(</span>Frame<span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>        </td></tr><tr><td class="number">102</td><td>        frames.back<span class="k2">(</span><span class="k2">)</span>.msec_delay <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/get_datafile_property" target="_blank"><span class="a">get_datafile_property</span></a><span class="k2">(</span>datf, <a href="http://www.allegro.cc/manual/DAT_ID" target="_blank"><span class="a">DAT_ID</span></a><span class="k2">(</span><span class="s">'T'</span>, <span class="s">'I'</span>, <span class="s">'M'</span>, <span class="s">'E'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><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>    </td></tr><tr><td class="number">105</td><td>    <span class="k1">if</span><span class="k2">(</span>frames.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">106</td><td>        out <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Unknown anim \""</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> path <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"\"\n"</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td>    </td></tr><tr><td class="number">108</td><td>    frame_msec_start <span class="k3">=</span> <span class="k3">*</span>msecs<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>&#160;</td></tr><tr><td class="number">111</td><td>animation::animation<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">112</td><td>    <span class="k2">:</span> cur_frame<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, frame_msec_start<span class="k2">(</span><span class="k3">*</span>msecs<span class="k2">)</span>, running<span class="k2">(</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">113</td><td><span class="k2">{</span></td></tr><tr><td class="number">114</td><td>    </td></tr><tr><td class="number">115</td><td><span class="k2">}</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>animation::animation<span class="k2">(</span><span class="k1">const</span> animation <span class="k3">&amp;</span>src<span class="k2">)</span></td></tr><tr><td class="number">118</td><td>    <span class="k2">:</span> frames<span class="k2">(</span>src.frames<span class="k2">)</span>, cur_frame<span class="k2">(</span>src.cur_frame<span class="k2">)</span>, frame_msec_start<span class="k2">(</span>src.frame_msec_start<span class="k2">)</span>, running<span class="k2">(</span>src.running<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>    </td></tr><tr><td class="number">121</td><td><span class="k2">}</span></td></tr><tr><td class="number">122</td><td>&#160;</td></tr><tr><td class="number">123</td><td>Bitmap <span class="k3">*</span>animation::get_bmp<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">124</td><td><span class="k2">{</span></td></tr><tr><td class="number">125</td><td>    <span class="k1">if</span><span class="k2">(</span>frames.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">126</td><td>        <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>    </td></tr><tr><td class="number">128</td><td>    <span class="k1">unsigned</span> <span class="k1">int</span> s <span class="k3">=</span> frames.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td>    </td></tr><tr><td class="number">130</td><td>    <span class="k1">while</span><span class="k2">(</span>running <span class="k3">&amp;</span><span class="k3">&amp;</span> frame_msec_start <span class="k3">+</span> frames<span class="k2">[</span>cur_frame<span class="k2">]</span>.msec_delay <span class="k3">&lt;</span> <span class="k3">*</span>msecs<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">131</td><td>        </td></tr><tr><td class="number">132</td><td>        frame_msec_start <span class="k3">+</span><span class="k3">=</span> frames<span class="k2">[</span>cur_frame<span class="k2">]</span>.msec_delay<span class="k2">;</span></td></tr><tr><td class="number">133</td><td>        </td></tr><tr><td class="number">134</td><td>        cur_frame<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">135</td><td>        </td></tr><tr><td class="number">136</td><td>        <span class="k1">if</span><span class="k2">(</span>cur_frame <span class="k3">&gt;</span><span class="k3">=</span> s<span class="k2">)</span></td></tr><tr><td class="number">137</td><td>            cur_frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>        </td></tr><tr><td class="number">139</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>frames<span class="k2">[</span>cur_frame<span class="k2">]</span>.msec_delay<span class="k2">)</span></td></tr><tr><td class="number">140</td><td>            <span class="k1">break</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>    </td></tr><tr><td class="number">143</td><td>    Bitmap <span class="k3">*</span>ret <span class="k3">=</span> <span class="k3">&amp;</span>frames<span class="k2">[</span>cur_frame<span class="k2">]</span>.bmp<span class="k2">;</span></td></tr><tr><td class="number">144</td><td>    </td></tr><tr><td class="number">145</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ret<span class="k2">)</span></td></tr><tr><td class="number">146</td><td>        err <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Returning 0 for get_bmp()\n"</span><span class="k2">;</span></td></tr><tr><td class="number">147</td><td>    </td></tr><tr><td class="number">148</td><td>    <span class="k1">return</span> ret<span class="k2">;</span></td></tr><tr><td class="number">149</td><td><span class="k2">}</span></td></tr><tr><td class="number">150</td><td>&#160;</td></tr><tr><td class="number">151</td><td>Bitmap <span class="k3">*</span>animation::get_bmp<span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> frame<span class="k2">)</span></td></tr><tr><td class="number">152</td><td><span class="k2">{</span></td></tr><tr><td class="number">153</td><td>    <span class="k1">if</span><span class="k2">(</span>frames.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">154</td><td>        <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">155</td><td>    </td></tr><tr><td class="number">156</td><td>    Bitmap <span class="k3">*</span>ret <span class="k3">=</span> <span class="k3">&amp;</span>frames<span class="k2">[</span>frame % frames.size<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>.bmp<span class="k2">;</span></td></tr><tr><td class="number">157</td><td>    </td></tr><tr><td class="number">158</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ret<span class="k2">)</span></td></tr><tr><td class="number">159</td><td>        err <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Returning 0 for get_bmp("</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> frame <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">")\n"</span><span class="k2">;</span></td></tr><tr><td class="number">160</td><td>    </td></tr><tr><td class="number">161</td><td>    <span class="k1">return</span> ret<span class="k2">;</span></td></tr><tr><td class="number">162</td><td><span class="k2">}</span></td></tr><tr><td class="number">163</td><td>&#160;</td></tr><tr><td class="number">164</td><td><span class="k1">void</span> animation::start<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">165</td><td><span class="k2">{</span></td></tr><tr><td class="number">166</td><td>    running <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">167</td><td>    frame_msec_start <span class="k3">=</span> <span class="k3">*</span>msecs<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">void</span> animation::setframe<span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> frame<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>    running <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">173</td><td>  <span class="k1">if</span> <span class="k2">(</span>frame&gt;frames.size<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span> frame<span class="k3">=</span>frames.size<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">174</td><td>    cur_frame<span class="k3">=</span>frame<span class="k2">;</span></td></tr><tr><td class="number">175</td><td><span class="k2">}</span></td></tr><tr><td class="number">176</td><td>&#160;</td></tr><tr><td class="number">177</td><td><span class="k1">void</span> animation::restart<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">178</td><td><span class="k2">{</span></td></tr><tr><td class="number">179</td><td>    running <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">180</td><td>    cur_frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">181</td><td>    frame_msec_start <span class="k3">=</span> <span class="k3">*</span>msecs<span class="k2">;</span></td></tr><tr><td class="number">182</td><td><span class="k2">}</span></td></tr><tr><td class="number">183</td><td>&#160;</td></tr><tr><td class="number">184</td><td><span class="k1">void</span> animation::unpause<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">185</td><td><span class="k2">{</span></td></tr><tr><td class="number">186</td><td>    running <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">187</td><td><span class="k2">}</span></td></tr><tr><td class="number">188</td><td>&#160;</td></tr><tr><td class="number">189</td><td><span class="k1">void</span> animation::stop<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">190</td><td><span class="k2">{</span></td></tr><tr><td class="number">191</td><td>    cur_frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">192</td><td>    running <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">193</td><td><span class="k2">}</span></td></tr><tr><td class="number">194</td><td>&#160;</td></tr><tr><td class="number">195</td><td><span class="k1">void</span> animation::pause<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">196</td><td><span class="k2">{</span></td></tr><tr><td class="number">197</td><td>    running <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">198</td><td><span class="k2">}</span></td></tr><tr><td class="number">199</td><td>&#160;</td></tr><tr><td class="number">200</td><td><span class="k1">bool</span> animation::unpaused<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">201</td><td><span class="k2">{</span></td></tr><tr><td class="number">202</td><td>    <span class="k1">return</span> running<span class="k2">;</span></td></tr><tr><td class="number">203</td><td><span class="k2">}</span></td></tr><tr><td class="number">204</td><td>&#160;</td></tr><tr><td class="number">205</td><td><span class="k1">bool</span> animation::paused<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">206</td><td><span class="k2">{</span></td></tr><tr><td class="number">207</td><td>    <span class="k1">return</span> <span class="k3">!</span>running<span class="k2">;</span></td></tr><tr><td class="number">208</td><td><span class="k2">}</span></td></tr><tr><td class="number">209</td><td>&#160;</td></tr><tr><td class="number">210</td><td><span class="k1">bool</span> animation::started<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">211</td><td><span class="k2">{</span></td></tr><tr><td class="number">212</td><td>    <span class="k1">return</span> running<span class="k2">;</span></td></tr><tr><td class="number">213</td><td><span class="k2">}</span></td></tr><tr><td class="number">214</td><td>&#160;</td></tr><tr><td class="number">215</td><td><span class="k1">bool</span> animation::stopped<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">216</td><td><span class="k2">{</span></td></tr><tr><td class="number">217</td><td>    <span class="k1">return</span> <span class="k3">!</span>running<span class="k2">;</span></td></tr><tr><td class="number">218</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
Obviously dependant on the <u>datafile</u>, <u>stopwatch</u>, <u>bitmap</u> and <u>log</u> modules of my engine which I haven&#39;t included.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Fri, 20 Oct 2006 07:45:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My question with these is, what happens if I have multiples of the same unit? It would seem I would have duplicates of the images loaded into memory with these classes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Sat, 21 Oct 2006 22:37:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Rick said:</div><div class="quote"><p>
It would seem I would have duplicates of the images loaded into memory with these classes.
</p></div></div><p>

Well with amount of memory in most modern computers storing a new copy of a bitmap for each unit of a RTS probably will not cause much troubles. If you want to be efficient about it remember Allegro deals with (BITMAP *) pointers. That means you can set multiple units bitmap images to point at one bitmap in memory.<br />For example:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> itor<span class="k2">;</span>
BITMAT <span class="k3">*</span> GruntStand <span class="k3">=</span> LoadBitmap<span class="k2">(</span><span class="s">"GruntStand.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span>itor <span class="k3">=</span><span class="n">0</span><span class="k2">;</span> itor <span class="k3">&lt;</span> NUMGRUNTS<span class="k2">;</span> itor<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
   Army<span class="k2">[</span>itor<span class="k2">]</span> <span class="k3">=</span> <span class="k1">new</span> Grunt<span class="k2">;</span>
   Army<span class="k2">[</span>itor<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Image <span class="k3">=</span> GruntStand<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
Will only store one copy of the Bitmap GruntStand.bmp in memory but all the Grunt instances will be able to access it as their own class variable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Wilson Saunders)</author>
		<pubDate>Sat, 21 Oct 2006 23:45:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah I know. The 2 animation classes above store bitmaps and a current frame variable together. That means one of two things.</p><p>A) Every like unit animates the same<br />B) Duplicate copies of the bitmaps per units</p><p>I think I&#39;ll end up writting my own to handle these issues. Basically the currentFrame should be seperately stored from the bitmaps that make up the animation. That way each unit can have different currentFrame values and just get the image from a manager type class from this units currentFrame.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Sun, 22 Oct 2006 00:16:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
My question with these is, what happens if I have multiples of the same unit? It would seem I would have duplicates of the images loaded into memory with these classes.
</p></div></div><p>
The animation class has no concept of storing one copy of a bitmap.</p><p>The Bitmap class handles that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sun, 22 Oct 2006 05:00:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I see now Dustin, you are using an already loaded datafile.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Sun, 22 Oct 2006 17:16:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hey rick check out my game character editor I&#39;m making it to were all animations are reusable<br /><a href="http://www.allegro.cc/depot/Thegame/">http://www.allegro.cc/depot/Thegame/</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Sun, 22 Oct 2006 21:54:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Posting the animation classes for The Mighty Stupid. It&#39;s two main classes; an animation class that holds all the animation data for a given entity, and a tracking class, which references the animation and handles all playback and frame tracking. That way I can have one animation loaded and have 20 different enemies (with 20 different trackers) running off it without wasting memory. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Just the interfaces ....</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">class</span> CAnimation</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>   public:</td></tr><tr><td class="number">4</td><td>      <span class="c">// a sprite with bounding boxes used for collision detection.</span></td></tr><tr><td class="number">5</td><td>      <span class="k1">class</span> CFrame</td></tr><tr><td class="number">6</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>         public:</td></tr><tr><td class="number">8</td><td>            <span class="k1">class</span> CBBox</td></tr><tr><td class="number">9</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>               public:</td></tr><tr><td class="number">11</td><td>                  <span class="c">// all variables</span></td></tr><tr><td class="number">12</td><td>                  <span class="k1">int</span>   xpos, ypos, width, height<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>                  <span class="k1">char</span>  state<span class="k2">;</span>  <span class="c">// for flags, like aggressive, passive, etc.</span></td></tr><tr><td class="number">14</td><td>                  <span class="k1">int</span>   type<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>                  <span class="k1">int</span>   ID<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>                  <span class="k1">int</span>   damage<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>                  <span class="c">// ctor; no dtor needed</span></td></tr><tr><td class="number">19</td><td>                  CBBox<span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> w <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> h <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> s <span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">:</span> xpos<span class="k2">(</span>x<span class="k2">)</span>, ypos<span class="k2">(</span>y<span class="k2">)</span>, width<span class="k2">(</span>w<span class="k2">)</span>, height<span class="k2">(</span>h<span class="k2">)</span>, state<span class="k2">(</span>s<span class="k2">)</span><span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">20</td><td>            <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>            <span class="c">// all variables</span></td></tr><tr><td class="number">23</td><td>            std::vector<span class="k3">&lt;</span>CBBox&gt; bboxes<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>            <span class="k1">bool</span>               hflip<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>            <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a>            <span class="k3">*</span>bitmap<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>            <span class="k1">int</span>                xoff, yoff<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>            <span class="k1">long</span> <span class="k1">unsigned</span> <span class="k1">int</span>  keyframe<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>            CFrame<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> hflip<span class="k2">(</span><span class="n">0</span><span class="k2">)</span> <span class="k2">{</span> <span class="k2">}</span></td></tr><tr><td class="number">30</td><td>            CFrame<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> k, <span class="k1">int</span> f<span class="k2">)</span><span class="k2">:</span> hflip<span class="k2">(</span>f<span class="k2">)</span>, bitmap<span class="k2">(</span>b<span class="k2">)</span>, xoff<span class="k2">(</span>x<span class="k2">)</span>, yoff<span class="k2">(</span>y<span class="k2">)</span>, keyframe<span class="k2">(</span>k<span class="k2">)</span> <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="c">// for drawing ....</span></td></tr><tr><td class="number">33</td><td>            <span class="k1">void</span> DrawRects<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>            <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>b, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>            <span class="k1">void</span> DrawLit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>            <span class="k1">void</span> DrawTrans<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>            <span class="k1">void</span> DrawTransLit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans, <span class="k1">int</span> color, <span class="k1">int</span> fade<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>      <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>      <span class="c">// class that holds one 2D sequence of images and bounding boxes. It's just</span></td></tr><tr><td class="number">41</td><td>      <span class="c">// one big vector, with a few helper functions. An array wouldn't give any real</span></td></tr><tr><td class="number">42</td><td>      <span class="c">// speed here, since frames change relatively rarely. Very simple class ...</span></td></tr><tr><td class="number">43</td><td>      <span class="k1">class</span> CObjectAnime</td></tr><tr><td class="number">44</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">45</td><td>         public:</td></tr><tr><td class="number">46</td><td>            std::vector<span class="k3">&lt;</span>CFrame&gt; images<span class="k2">;</span></td></tr><tr><td class="number">47</td><td>            <span class="k1">int</span> looping<span class="k2">;</span></td></tr><tr><td class="number">48</td><td>            <span class="k1">inline</span> <span class="k1">int</span> size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>            <span class="k1">inline</span> CFrame<span class="k3">&amp;</span> <span class="k1">operator</span><span class="k2">[</span><span class="k2">]</span><span class="k2">(</span><span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>      <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>      <span class="k1">typedef</span> std::vector<span class="k3">&lt;</span>CFrame::CBBox&gt;::iterator boxiterator<span class="k2">;</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>      <span class="c">// CAnimation's variables. Just a map, a bitmap array, and the number of bmp's ...</span></td></tr><tr><td class="number">55</td><td>      std::map<span class="k3">&lt;</span>std::string, CObjectAnime&gt; sprites<span class="k2">;</span></td></tr><tr><td class="number">56</td><td>      <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k3">*</span> images<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>      <span class="k1">int</span>      numimages<span class="k2">;</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td>      <span class="c">// ctors and dtor</span></td></tr><tr><td class="number">60</td><td>      CAnimation<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>      CAnimation<span class="k2">(</span>std::string filename<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>      <span class="k1">void</span> ConstructFromDatafile<span class="k2">(</span>std::string filename<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>     ~CAnimation<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td>      <span class="c">// add a frame of animation. If framename doesn't exist, the sequence is created</span></td></tr><tr><td class="number">66</td><td>      <span class="k1">void</span> AddFrame<span class="k2">(</span>std::string framename, <span class="k1">int</span> frame, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> k, <span class="k1">int</span> f<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>      <span class="k1">inline</span> <span class="k1">void</span> Destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>      <span class="k1">inline</span> <span class="k1">bool</span> IsEmpty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>      <span class="k1">inline</span> <span class="k1">bool</span> Find<span class="k2">(</span>std::string s<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></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">class</span> CAnimeTracker</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>   private:</td></tr><tr><td class="number">4</td><td>      <span class="c">// all the variables</span></td></tr><tr><td class="number">5</td><td>      CAnimation<span class="k3">*</span>                animations<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>      CAnimation::CObjectAnime<span class="k3">*</span>  curanimation<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>      CAnimation::CFrame<span class="k3">*</span>        cursprite<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>      <span class="k1">int</span>   frame<span class="k2">;</span>                  <span class="c">// current frame of current animation</span></td></tr><tr><td class="number">9</td><td>      <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span>                   <span class="c">// current time in animation</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">float</span> oldtime<span class="k2">;</span>                <span class="c">// time last update</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">float</span> speed<span class="k2">;</span>                  <span class="c">// speed control</span></td></tr><tr><td class="number">12</td><td>      <span class="k1">bool</span>  paused<span class="k2">;</span>                 <span class="c">// is it paused?</span></td></tr><tr><td class="number">13</td><td>      <span class="k1">float</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_128.html" target="_blank">delay</a><span class="k2">;</span>                  <span class="c">// pause delay</span></td></tr><tr><td class="number">14</td><td>      <span class="k1">bool</span>  stopped<span class="k2">;</span>                <span class="c">// is it stopped?</span></td></tr><tr><td class="number">15</td><td>      std::list<span class="k3">&lt;</span>std::string&gt; sequences<span class="k2">;</span>  <span class="c">// for "programming" an animation sequence</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>   public:</td></tr><tr><td class="number">18</td><td>      <span class="c">// ctors and dtor</span></td></tr><tr><td class="number">19</td><td>      CAnimeTracker<span class="k2">(</span>CAnimation<span class="k3">&amp;</span> a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>      CAnimeTracker<span class="k2">(</span>CAnimation<span class="k3">&amp;</span> a, std::string init<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>     ~CAnimeTracker<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>      <span class="c">// advance animation</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">void</span> Update<span class="k2">(</span><span class="k1">int</span> externaltime <span class="k3">=</span> <span class="n">0</span><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>      <span class="c">// lots of inline junk</span></td></tr><tr><td class="number">27</td><td>      <span class="k1">void</span> ResetTime<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                 <span class="c">// moved to .cpp; explained there</span></td></tr><tr><td class="number">28</td><td>      <span class="k1">void</span> Delay<span class="k2">(</span><span class="k1">int</span> d<span class="k2">)</span><span class="k2">;</span>                <span class="c">// moved to .cpp; explained there</span></td></tr><tr><td class="number">29</td><td>      <span class="k1">void</span> Unpause<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                   <span class="c">// moved to .cpp; explained there</span></td></tr><tr><td class="number">30</td><td>      <span class="k1">void</span> SetTime<span class="k2">(</span><span class="k1">float</span> t<span class="k2">)</span><span class="k2">;</span>            <span class="c">// more than just time = x. moved to .cpp; explained there</span></td></tr><tr><td class="number">31</td><td>      <span class="k1">inline</span> <span class="k1">void</span>  Pause<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>      <span class="k1">inline</span> <span class="k1">bool</span>  IsPaused<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>      <span class="k1">inline</span> <span class="k1">bool</span>  IsStopped<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>      <span class="k1">inline</span> <span class="k1">void</span>  AdjustSpeed<span class="k2">(</span><span class="k1">float</span> s<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>      <span class="k1">inline</span> <span class="k1">void</span>  SetSpeed<span class="k2">(</span><span class="k1">float</span> s<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>      <span class="k1">inline</span> <span class="k1">float</span> GetSpeed<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      <span class="k1">inline</span> <span class="k1">float</span> GetTime<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>      <span class="k1">inline</span> CAnimation::CFrame<span class="k3">*</span> GetCurrentSprite<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>      <span class="c">// for changing, checking and manipulating the sequences</span></td></tr><tr><td class="number">42</td><td>      <span class="k1">bool</span>    ChangeSequence<span class="k2">(</span>std::string str<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>      <span class="k1">void</span>    AppendSequence<span class="k2">(</span>std::string str<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>      <span class="k1">bool</span>    InterruptSequence<span class="k2">(</span>std::string str<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>      <span class="k1">void</span>    MakeNextSequence<span class="k2">(</span>std::string str<span class="k2">)</span><span class="k2">;</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>      <span class="k1">void</span>    SwitchSequence<span class="k2">(</span>std::string str<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>      <span class="k1">void</span>    ResetAnimation<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> ResetTime<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>      std::string CurrentSequence<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>      <span class="c">// drawing functions</span></td></tr><tr><td class="number">52</td><td>      <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>      <span class="k1">void</span> DrawLit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>      <span class="k1">void</span> DrawTrans<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>      <span class="k1">void</span> DrawTransLit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> trans, <span class="k1">int</span> color, <span class="k1">int</span> fade<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>      <span class="k1">void</span> DrawRects<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> b, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
Explanations available upon request, but I think it&#39;s pretty self explanitory. Implementations are left as an exercise for the reader. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Mon, 23 Oct 2006 03:57:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I see now Dustin, you are using an already loaded datafile.
</p></div></div><p>
Actually the images in the datafile are loaded into textures, which is handled by Bitmap.</p><p>Bitmap maintains a lookup table with pointers to items in the datafile as the key and the texture IDs as the value.</p><p>If passed a pointer to a bitmap that is already in the lookup table, that texture ID is used, otherwise the upload is performed.</p><p>Obviously there is the minute chance that a bitmap could be passed with the same address of an old bitmap that was deallocated, but the work-around for this is speed and memory demanding.  And I&#39;m keeping the whole datafile loaded into memory anyway.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Tue, 24 Oct 2006 03:30:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p> 	</p><div class="quote_container"><div class="title">23yrold3yrold said:</div><div class="quote"><p>
That way I can have one animation loaded and have 20 different enemies (with 20 different trackers) running off it without wasting memory.
</p></div></div><p>
character editor I&#39;m making it to were all animations are reusable:P<br />same thing i was shooting for
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Tue, 24 Oct 2006 03:49:50 +0000</pubDate>
	</item>
</rss>
