<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Allegro 5 file system</title>
		<link>http://www.allegro.cc/forums/view/616442</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 18 Aug 2016 15:38:09 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Since the native file dialog doesn&#39;t look so nice and also crashes the Windows version of my game. I wanted to make a save/ load screen with a list of slots.<br />I thought the allegro 5 file system was a nice feature to use for that.<br />However I saw a &quot;warning&quot; not to use the file&#39;s path but the ALLEGRO_FS_ENTRY itself to open the file ?  How would I do that ?</p><p>Correction.. the Dialog wasn&#39;t the problem.. it seems you cannot load a file in windows that was saved in linux for some reason... strange.. looking up the version number just went fine??
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Wed, 17 Aug 2016 16:45:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/616442/1024468#target">Ariesnl</a> said:</div><div class="quote"><p> However I saw a &quot;warning&quot; not to use the file&#39;s path but the ALLEGRO_FS_ENTRY itself to open the file ? How would I do that</p></div></div><p>Is <a href="https://www.allegro.cc/manual/5/al_open_fs_entry">this</a> what you&#39;re looking for?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p> it seems you cannot load a file in windows that was saved in linux for some reason... strange.. looking up the version number just went fine?? </p></div></div><p>How exactly are you saving the data? Are you just putting a pointer of a struct into a file stream? In that case, yeah, the save file won&#39;t be platform-independent. Every compiler has different rules for packing of structs and every architecture has its own endianness. Those and probably some more things influence how the data written to the file will be interpreted when read back. If you want truley platform-independent save files, you&#39;ll have to work at a byte level. Only write singular bytes to the file stream and do the conversion (multiple bytes &lt;-&gt; actual data type) yourself. Note that this is a lot slower and you&#39;re probably better just having platform-dependent save files, for the sake of the game. In my opinion, sharing save files between different platforms isn&#39;t really that important, anyways.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RPG Hacker)</author>
		<pubDate>Wed, 17 Aug 2016 23:30:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Partly it is.. however, trying to be &quot;modern&quot; all my load and save routines use C++ filestream... I&#39;m afraid that won&#39;t map to a filepointer system ?<br />It serializes the current game engine contents and after that the complete universe to an opened filestream.</p><p>By the way: g_pUniverse-&gt;StoreSector stores the Game engine contents  into the current sector.( like the number of ships of a certain kind etc.) </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">void</span> SaveGame<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FILECHOOSER"><span class="a">ALLEGRO_FILECHOOSER</span></a> <span class="k3">*</span> dlg <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  4</span>    ALLEGRO_PATH        <span class="k3">*</span> pSavePath  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>pSavePath, <span class="s">"Save"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>    dlg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_native_file_dialog"><span class="a">al_create_native_file_dialog</span></a><span class="k2">(</span>        <a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span>pSavePath,ALLEGRO_NATIVE_PATH_SEP<span class="k2">)</span>,
<span class="number">  9</span>
<span class="number"> 10</span>                                        <span class="s">"Save Game..."</span>,
<span class="number"> 11</span>
<span class="number"> 12</span>                                        <span class="s">"*.uni"</span>,
<span class="number"> 13</span>
<span class="number"> 14</span>                                        ALLEGRO_FILECHOOSER_SAVE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_show_native_file_dialog"><span class="a">al_show_native_file_dialog</span></a><span class="k2">(</span>g_pDisplay,dlg<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 17</span>
<span class="number"> 18</span>    <span class="k2">{</span>
<span class="number"> 19</span>
<span class="number"> 20</span>        ofstream SaveFile<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_native_file_dialog_path"><span class="a">al_get_native_file_dialog_path</span></a><span class="k2">(</span>dlg, <span class="n">0</span><span class="k2">)</span>,ios::out <span class="k3">|</span> ios::binary<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>        <span class="k1">if</span> <span class="k2">(</span>SaveFile<span class="k2">)</span>
<span class="number"> 23</span>
<span class="number"> 24</span>        <span class="k2">{</span>
<span class="number"> 25</span>
<span class="number"> 26</span>            g_pUniverse-&gt;StoreSector<span class="k2">(</span>g_pEnterprise-&gt;m_nSectorPositionX,g_pEnterprise-&gt;m_nSectorPositionY,g_pEngine<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span>            g_pEngine-&gt;Save<span class="k2">(</span>SaveFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span>            g_pUniverse-&gt;Save<span class="k2">(</span>SaveFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>            SaveFile.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>
<span class="number"> 34</span>        <span class="k2">}</span>
<span class="number"> 35</span>
<span class="number"> 36</span>        <span class="k1">else</span>
<span class="number"> 37</span>
<span class="number"> 38</span>        <span class="k2">{</span>
<span class="number"> 39</span>
<span class="number"> 40</span>            <span class="c">// handle error</span>
<span class="number"> 41</span>
<span class="number"> 42</span>        <span class="k2">}</span>
<span class="number"> 43</span>
<span class="number"> 44</span>
<span class="number"> 45</span>
<span class="number"> 46</span>    <span class="k2">}</span>
<span class="number"> 47</span>
<span class="number"> 48</span>
<span class="number"> 49</span>
<span class="number"> 50</span>    <a href="http://www.allegro.cc/manual/al_destroy_native_file_dialog"><span class="a">al_destroy_native_file_dialog</span></a><span class="k2">(</span>dlg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>
<span class="number"> 52</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Thu, 18 Aug 2016 00:21:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/616442/1024471#target">Ariesnl</a> said:</div><div class="quote"><p> I&#39;m afraid that won&#39;t map to a filepointer system ?</p></div></div><p>Well, not mapping to a file pointer is kind of the point of Allegro 5&#39;s filesystem. It&#39;s meant to just provide the data for you and abstract the actual interface so that you don&#39;t have to care where the data comes from. It could come from a native file, from a ZIP file or even from a completely different filesystem (like a network filesystem, for example) if you provide the interfaces for that. If you want something that maps to a native file pointer, Allegro&#39;s file I/O is probably what you want instead of filesystem (and even then that&#39;s probably using platform-dependent C file interfaces under the hood, not C++ interfaces).</p><p>As for your save function</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span>g_pUniverse-&gt;StoreSector<span class="k2">(</span>g_pEnterprise-&gt;m_nSectorPositionX,g_pEnterprise-&gt;m_nSectorPositionY,g_pEngine<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>g_pEngine-&gt;Save<span class="k2">(</span>SaveFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span>g_pUniverse-&gt;Save<span class="k2">(</span>SaveFile<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

These are really the functions that matter. I need to see how exactly you write some of that data to the actual file stream to know what goes wrong.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RPG Hacker)</author>
		<pubDate>Thu, 18 Aug 2016 13:27:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is what I have now. But it is not very efficient.<br />and won&#39;t work nice with allegro&#39;s file system...<br />sGameObject is a big struct containing everything a unit (sprite) could have...</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="k1">bool</span> TEngine::Save<span class="k2">(</span>ofstream <span class="k3">&amp;</span> a_SaveStream<span class="k2">)</span>
<span class="number">   2</span><span class="k2">{</span>
<span class="number">   3</span>  <span class="k1">char</span> szVersion<span class="k2">[</span><span class="n">18</span><span class="k2">]</span><span class="k3">=</span><span class="s">"CURRENT_SECTOR_V1"</span><span class="k2">;</span>
<span class="number">   4</span>    a_SaveStream.write<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>szVersion,<span class="k1">sizeof</span> <span class="k2">(</span>szVersion<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   5</span>
<span class="number">   6</span>
<span class="number">   7</span>  std::list<span class="k3">&lt;</span>TSprite <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>const_iterator p<span class="k3">=</span>m_lstItems.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   8</span>  <span class="k1">int</span> m_nObjects <span class="k3">=</span> CountSaveObjects<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   9</span>  a_SaveStream.write<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>m_nObjects,<span class="k1">sizeof</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  10</span>  <span class="k1">while</span> <span class="k2">(</span>p<span class="k3">!</span><span class="k3">=</span>m_lstItems.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  11</span>  <span class="k2">{</span>
<span class="number">  12</span>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDestroyed<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID <span class="k3">!</span><span class="k3">=</span> ID_NONE<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID <span class="k3">!</span><span class="k3">=</span> ID_SMOKE<span class="k2">)</span><span class="k2">)</span>
<span class="number">  13</span>        <span class="k2">{</span>
<span class="number">  14</span>            sGameObject object<span class="k2">;</span>
<span class="number">  15</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span><span class="k3">&amp;</span>object, <span class="n">0</span>, <span class="k1">sizeof</span><span class="k2">(</span>sGameObject<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  16</span>            object.m_ID <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID<span class="k2">;</span>
<span class="number">  17</span>            object.m_Member <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_Member<span class="k2">;</span>
<span class="number">  18</span>            object.m_dX <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dX<span class="k2">;</span>
<span class="number">  19</span>            object.m_dY <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dY<span class="k2">;</span>
<span class="number">  20</span>            object.m_nZ <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nZ<span class="k2">;</span>
<span class="number">  21</span>            object.m_dAngle <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dAngle<span class="k2">;</span>
<span class="number">  22</span>            object.m_blCanFind <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind<span class="k2">;</span>
<span class="number">  23</span>            object.m_dSpeed <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dSpeed<span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span>
<span class="number">  26</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID&gt;ID_BULLET_BOTTOM <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID<span class="k3">&lt;</span>ID_BULLET_TOP<span class="k2">)</span>
<span class="number">  27</span>            <span class="k2">{</span>
<span class="number">  28</span>               <span class="c">// sprite is a bullet</span>
<span class="number">  29</span>               object.m_nLife  <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TBullet<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nLife<span class="k2">;</span>
<span class="number">  30</span>               object.m_nCount <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TBullet<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nWait<span class="k2">;</span>
<span class="number">  31</span>            <span class="k2">}</span>
<span class="number">  32</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID&gt;ID_PLANET_BOTTOM <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID<span class="k3">&lt;</span>ID_STAR_TOP<span class="k2">)</span>
<span class="number">  33</span>            <span class="k2">{</span>
<span class="number">  34</span>                <span class="c">// sprite is a planet or a star</span>
<span class="number">  35</span>
<span class="number">  36</span>            <span class="k2">}</span>
<span class="number">  37</span>
<span class="number">  38</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID <span class="k3">=</span><span class="k3">=</span> ID_EXPLOSION<span class="k2">)</span>
<span class="number">  39</span>            <span class="k2">{</span>
<span class="number">  40</span>                <span class="c">// sprite is an explosion</span>
<span class="number">  41</span>                object.m_nLife <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TExplosion<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nFrame<span class="k2">;</span>
<span class="number">  42</span>                object.m_nCount <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TExplosion<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nWait<span class="k2">;</span>
<span class="number">  43</span>            <span class="k2">}</span>
<span class="number">  44</span>
<span class="number">  45</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID <span class="k3">=</span><span class="k3">=</span> ID_SMOKE<span class="k2">)</span>
<span class="number">  46</span>            <span class="k2">{</span>
<span class="number">  47</span>                object.m_nLife <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TSmoke<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nFrame<span class="k2">;</span>
<span class="number">  48</span>                object.m_nCount <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TSmoke<span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nWait<span class="k2">;</span>
<span class="number">  49</span>            <span class="k2">}</span>
<span class="number">  50</span>
<span class="number">  51</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID&gt;ID_SHIP_BOTTOM<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID<span class="k3">&lt;</span>ID_BASE_TOP<span class="k2">)</span><span class="k2">)</span>
<span class="number">  52</span>            <span class="k2">{</span>
<span class="number">  53</span>                <span class="c">//sprite is a ship or a starbase</span>
<span class="number">  54</span>
<span class="number">  55</span>                object.m_blDocked               <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocked<span class="k2">;</span>
<span class="number">  56</span>                object.m_blDocking              <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocking<span class="k2">;</span>
<span class="number">  57</span>                object.m_blReleasing            <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blReleasing<span class="k2">;</span>
<span class="number">  58</span>                object.m_blMustBeDestroyed      <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustBeDestroyed<span class="k2">;</span>
<span class="number">  59</span>                object.m_blMustSurvive          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustSurvive<span class="k2">;</span>
<span class="number">  60</span>
<span class="number">  61</span>                object.m_blMustReachPosition    <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustReachPosition<span class="k2">;</span>
<span class="number">  62</span>                object.m_blDock                 <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDock<span class="k2">;</span>
<span class="number">  63</span>                object.m_blNoRelease            <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blNoRelease<span class="k2">;</span>
<span class="number">  64</span>                object.m_blCanFind              <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind<span class="k2">;</span>
<span class="number">  65</span>                object.m_dWaypointX             <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dWaypointX<span class="k2">;</span>
<span class="number">  66</span>
<span class="number">  67</span>                object.m_dWaypointY             <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dWaypointY<span class="k2">;</span>
<span class="number">  68</span>                object.m_nTorpedoes             <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTorpedoes<span class="k2">;</span>
<span class="number">  69</span>                object.m_nRepairItem            <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nRepairItem<span class="k2">;</span>
<span class="number">  70</span>                object.m_nCrew                  <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCrew<span class="k2">;</span>
<span class="number">  71</span>                object.m_nEnergy                <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nEnergy<span class="k2">;</span>
<span class="number">  72</span>
<span class="number">  73</span>                object.m_nShieldEnergy          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nShieldEnergy<span class="k2">;</span>
<span class="number">  74</span>                object.m_nPhaserEnergy          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhaserEnergy<span class="k2">;</span>
<span class="number">  75</span>                object.m_nPreferedTarget        <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPreferedTarget<span class="k2">;</span>
<span class="number">  76</span>                object.m_nPhaserPower           <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhaserPower<span class="k2">;</span>
<span class="number">  77</span>                object.m_blCanCloak             <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanCloak<span class="k2">;</span>
<span class="number">  78</span>
<span class="number">  79</span>                object.m_blCanFind              <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind<span class="k2">;</span>
<span class="number">  80</span>                object.m_blPhaserOn             <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blPhaserOn<span class="k2">;</span>
<span class="number">  81</span>                object.m_nCloakCharge           <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakCharge<span class="k2">;</span>
<span class="number">  82</span>                object.m_nCloakCounter          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakCounter<span class="k2">;</span>
<span class="number">  83</span>                object.m_nPhotonTimer           <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhotonTimer<span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</span>                object.m_nTranslucency          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTranslucency<span class="k2">;</span>
<span class="number">  86</span>                object.m_nTask                  <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTask<span class="k2">;</span>
<span class="number">  87</span>                object.m_nCloakState            <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakState<span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>                <span class="c">// store health</span>
<span class="number">  90</span>                <span class="k1">for</span> <span class="k2">(</span><span class="k1">size_t</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_lstHealth.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  91</span>                <span class="k2">{</span>
<span class="number">  92</span>                    object.m_nHealth<span class="k2">[</span><span class="k2">(</span>HEALTH<span class="k2">)</span>i<span class="k2">]</span><span class="k3">=</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_lstHealth<span class="k2">[</span><span class="k2">(</span>HEALTH<span class="k2">)</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number">  93</span>                <span class="k2">}</span>
<span class="number">  94</span>
<span class="number">  95</span>                <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID<span class="k3">=</span><span class="k3">=</span>ID_PLAYER<span class="k2">)</span>
<span class="number">  96</span>                <span class="k2">{</span>
<span class="number">  97</span>                    <span class="c">// player specific ! sprite is the player</span>
<span class="number">  98</span>                    object.m_nSectorPositionX <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TEnterprise <span class="k3">*</span><span class="k2">)</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nSectorPositionX<span class="k2">;</span>
<span class="number">  99</span>                    object.m_nSectorPositionY <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TEnterprise <span class="k3">*</span><span class="k2">)</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nSectorPositionY<span class="k2">;</span>
<span class="number"> 100</span>                    object.m_nWarpFactor      <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TEnterprise <span class="k3">*</span><span class="k2">)</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nWarpFactor<span class="k2">;</span>
<span class="number"> 101</span>                    object.m_nProbes          <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TEnterprise <span class="k3">*</span><span class="k2">)</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nProbes<span class="k2">;</span>
<span class="number"> 102</span>                <span class="k2">}</span>
<span class="number"> 103</span>            <span class="k2">}</span>
<span class="number"> 104</span>
<span class="number"> 105</span>            a_SaveStream.write<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>object,<span class="k1">sizeof</span> <span class="k2">(</span>sGameObject<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>       <span class="k2">}</span>
<span class="number"> 107</span>     <span class="k3">+</span><span class="k3">+</span>p<span class="k2">;</span>
<span class="number"> 108</span>  <span class="k2">}</span>
<span class="number"> 109</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 110</span><span class="k2">}</span>
<span class="number"> 111</span>
<span class="number"> 112</span>
<span class="number"> 113</span>
<span class="number"> 114</span>
<span class="number"> 115</span>
<span class="number"> 116</span>
<span class="number"> 117</span>
<span class="number"> 118</span><span class="k1">bool</span> TEngine::Load<span class="k2">(</span>ifstream <span class="k3">&amp;</span> a_LoadStream<span class="k2">)</span>
<span class="number"> 119</span><span class="k2">{</span>
<span class="number"> 120</span>  Clear<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>  <span class="k1">char</span> szVersion<span class="k2">[</span><span class="n">18</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 122</span>  a_LoadStream.read<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span>szVersion,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span><span class="k3">*</span><span class="n">18</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>
<span class="number"> 124</span>  <span class="k1">int</span> m_nObjects<span class="k2">;</span>
<span class="number"> 125</span>  a_LoadStream.read<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>m_nObjects,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>
<span class="number"> 127</span>  <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>i<span class="k3">&lt;</span>m_nObjects<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 128</span>  <span class="k2">{</span>
<span class="number"> 129</span>       sGameObject object<span class="k2">;</span>
<span class="number"> 130</span>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span><span class="k3">&amp;</span>object, <span class="n">0</span>, <span class="k1">sizeof</span><span class="k2">(</span>sGameObject<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>     a_LoadStream.read<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>object,<span class="k1">sizeof</span><span class="k2">(</span>object<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>       TSprite <span class="k3">*</span> pSprite<span class="k3">=</span>NULL<span class="k2">;</span>
<span class="number"> 134</span>
<span class="number"> 135</span>     <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>object.m_ID&gt;<span class="k3">=</span>ID_CLASS_A<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>object.m_ID<span class="k3">&lt;</span>ID_BLACK_HOLE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 136</span>     <span class="k2">{</span>
<span class="number"> 137</span>       pSprite <span class="k3">=</span> <span class="k1">new</span> TSpaceObject<span class="k2">(</span>object.m_ID<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>
<span class="number"> 139</span>     <span class="k2">}</span>
<span class="number"> 140</span>     <span class="k1">if</span> <span class="k2">(</span>object.m_ID <span class="k3">=</span><span class="k3">=</span> ID_PROBE<span class="k2">)</span>
<span class="number"> 141</span>       <span class="k2">{</span>
<span class="number"> 142</span>           pSprite <span class="k3">=</span> <span class="k1">new</span> TProbe<span class="k2">(</span>object.m_dX ,
<span class="number"> 143</span>                          object.m_dY,
<span class="number"> 144</span>                object.m_dSpeed,
<span class="number"> 145</span>                object.m_dAngle,
<span class="number"> 146</span>                object.m_nZ,g_pEnterprise<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>       <span class="k2">}</span>
<span class="number"> 148</span>     <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>object.m_ID&gt;ID_BULLET_BOTTOM<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>object.m_ID<span class="k3">&lt;</span>ID_BULLET_TOP<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 149</span>     <span class="k2">{</span>
<span class="number"> 150</span>       pSprite <span class="k3">=</span> <span class="k1">new</span> TBullet<span class="k2">(</span> object.m_dX ,
<span class="number"> 151</span>                            object.m_dY,
<span class="number"> 152</span>                  object.m_dSpeed,
<span class="number"> 153</span>                  object.m_dAngle,
<span class="number"> 154</span>                  object.m_nZ,
<span class="number"> 155</span>                  object.m_ID,
<span class="number"> 156</span>                  object.m_Member<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>
<span class="number"> 158</span>            <span class="k2">(</span><span class="k2">(</span>TBullet <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nLife <span class="k3">=</span> object.m_nLife<span class="k2">;</span>
<span class="number"> 159</span>            <span class="k2">(</span><span class="k2">(</span>TBullet <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nWait <span class="k3">=</span> object.m_nCount<span class="k2">;</span>
<span class="number"> 160</span>     <span class="k2">}</span>
<span class="number"> 161</span>     <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>object.m_ID <span class="k3">=</span><span class="k3">=</span> ID_EXPLOSION<span class="k2">)</span>
<span class="number"> 162</span>       <span class="k2">{</span>
<span class="number"> 163</span>            pSprite <span class="k3">=</span> <span class="k1">new</span> TExplosion<span class="k2">(</span>object.m_dX,
<span class="number"> 164</span>                                     object.m_dY,
<span class="number"> 165</span>                                     object.m_dSpeed,
<span class="number"> 166</span>                     object.m_dAngle,
<span class="number"> 167</span>                     object.m_nZ<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>
<span class="number"> 169</span>
<span class="number"> 170</span>       <span class="k2">}</span>
<span class="number"> 171</span>       <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>object.m_ID&gt;ID_SHIP_BOTTOM<span class="k2">)</span>
<span class="number"> 172</span>     <span class="k2">{</span>
<span class="number"> 173</span>      <span class="k1">switch</span> <span class="k2">(</span>object.m_ID<span class="k2">)</span>
<span class="number"> 174</span>      <span class="k2">{</span>
<span class="number"> 175</span>          <span class="k1">case</span> ID_PLAYER:
<span class="number"> 176</span>                   <span class="k2">{</span>
<span class="number"> 177</span>                        pSprite <span class="k3">=</span> <span class="k1">new</span> TEnterprise<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 178</span>                        g_pEnterprise <span class="k3">=</span> <span class="k2">(</span>TEnterprise <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">;</span>
<span class="number"> 179</span>                        g_pEnterprise-&gt;m_nSectorPositionX <span class="k3">=</span> object.m_nSectorPositionX<span class="k2">;</span>
<span class="number"> 180</span>                        g_pEnterprise-&gt;m_nSectorPositionY <span class="k3">=</span> object.m_nSectorPositionY<span class="k2">;</span>
<span class="number"> 181</span>                        g_pEnterprise-&gt;m_nWarpFactor      <span class="k3">=</span> object.m_nWarpFactor<span class="k2">;</span>
<span class="number"> 182</span>                        g_pEnterprise-&gt;m_nProbes          <span class="k3">=</span> object.m_nProbes<span class="k2">;</span>
<span class="number"> 183</span>                   <span class="k2">}</span>
<span class="number"> 184</span>
<span class="number"> 185</span>
<span class="number"> 186</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 187</span>
<span class="number"> 188</span>        <span class="k1">case</span> ID_GALAXYCLASS:
<span class="number"> 189</span>                     pSprite <span class="k3">=</span> <span class="k1">new</span> TFederation_Ship<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>
<span class="number"> 191</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 192</span>
<span class="number"> 193</span>        <span class="k1">case</span> ID_KLINGONBC:
<span class="number"> 194</span>          <span class="k2">{</span>
<span class="number"> 195</span>            pSprite <span class="k3">=</span> <span class="k1">new</span> TKlingonBC<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>
<span class="number"> 197</span>
<span class="number"> 198</span>
<span class="number"> 199</span>          <span class="k2">}</span>
<span class="number"> 200</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 201</span>
<span class="number"> 202</span>        <span class="k1">case</span> ID_KLINGONBOP:
<span class="number"> 203</span>             <span class="k2">{</span>
<span class="number"> 204</span>                 pSprite <span class="k3">=</span> <span class="k1">new</span> TKlingonBOP<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>             <span class="k2">}</span>
<span class="number"> 206</span>
<span class="number"> 207</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 208</span>
<span class="number"> 209</span>        <span class="k1">case</span> ID_ROMULANBOP:
<span class="number"> 210</span>          <span class="k2">{</span>
<span class="number"> 211</span>            pSprite <span class="k3">=</span> <span class="k1">new</span> TRomulanBop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>
<span class="number"> 213</span>
<span class="number"> 214</span>
<span class="number"> 215</span>          <span class="k2">}</span>
<span class="number"> 216</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 217</span>
<span class="number"> 218</span>        <span class="k1">case</span> ID_FEDERATIONBASE:
<span class="number"> 219</span>        <span class="k2">{</span>
<span class="number"> 220</span>              pSprite <span class="k3">=</span> <span class="k1">new</span> TStarbase<span class="k2">(</span>ID_FEDERATIONBASE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>
<span class="number"> 222</span>          <span class="k2">}</span>
<span class="number"> 223</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 224</span>
<span class="number"> 225</span>        <span class="k1">case</span> ID_ROMULAN_BASE:
<span class="number"> 226</span>        <span class="k2">{</span>
<span class="number"> 227</span>              pSprite <span class="k3">=</span> <span class="k1">new</span> TStarbase<span class="k2">(</span>ID_ROMULAN_BASE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</span>
<span class="number"> 229</span>        <span class="k2">}</span>
<span class="number"> 230</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 231</span>
<span class="number"> 232</span>
<span class="number"> 233</span>        default:
<span class="number"> 234</span>            <span class="k1">throw</span> A5Exception<span class="k2">(</span><span class="s">"Unknown shiptype"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 235</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 236</span>
<span class="number"> 237</span>
<span class="number"> 238</span>      <span class="k2">}</span>
<span class="number"> 239</span>
<span class="number"> 240</span>      <span class="k1">if</span> <span class="k2">(</span>pSprite <span class="k3">!</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 241</span>            <span class="k2">{</span>
<span class="number"> 242</span>                <span class="c">// save TShip specific</span>
<span class="number"> 243</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCrew               <span class="k3">=</span> object.m_nCrew<span class="k2">;</span>
<span class="number"> 244</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nRepairItem         <span class="k3">=</span> object.m_nRepairItem<span class="k2">;</span>
<span class="number"> 245</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTorpedoes          <span class="k3">=</span> object.m_nTorpedoes<span class="k2">;</span>
<span class="number"> 246</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nShieldEnergy       <span class="k3">=</span> object.m_nShieldEnergy<span class="k2">;</span>
<span class="number"> 247</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhaserEnergy       <span class="k3">=</span> object.m_nPhaserEnergy<span class="k2">;</span>
<span class="number"> 248</span>
<span class="number"> 249</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPreferedTarget     <span class="k3">=</span> object.m_nPreferedTarget<span class="k2">;</span>
<span class="number"> 250</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhaserPower        <span class="k3">=</span> object.m_nPhaserPower<span class="k2">;</span>
<span class="number"> 251</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dWaypointX          <span class="k3">=</span> object.m_dWaypointX<span class="k2">;</span>
<span class="number"> 252</span>              <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dWaypointX          <span class="k3">=</span> object.m_dWaypointY<span class="k2">;</span>
<span class="number"> 253</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocked            <span class="k3">=</span> object.m_blDocked<span class="k2">;</span>
<span class="number"> 254</span>
<span class="number"> 255</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocking           <span class="k3">=</span> object.m_blDocking<span class="k2">;</span>
<span class="number"> 256</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blReleasing         <span class="k3">=</span> object.m_blReleasing<span class="k2">;</span>
<span class="number"> 257</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustBeDestroyed   <span class="k3">=</span> object.m_blMustBeDestroyed<span class="k2">;</span>
<span class="number"> 258</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustSurvive       <span class="k3">=</span> object.m_blMustSurvive<span class="k2">;</span>
<span class="number"> 259</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blMustReachPosition <span class="k3">=</span> object.m_blMustReachPosition<span class="k2">;</span>
<span class="number"> 260</span>
<span class="number"> 261</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blNoRelease         <span class="k3">=</span> object.m_blNoRelease<span class="k2">;</span>
<span class="number"> 262</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind           <span class="k3">=</span> object.m_blCanFind<span class="k2">;</span>
<span class="number"> 263</span>        <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanCloak          <span class="k3">=</span> object.m_blCanCloak<span class="k2">;</span>
<span class="number"> 264</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind           <span class="k3">=</span> object.m_blCanFind<span class="k2">;</span>
<span class="number"> 265</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blPhaserOn          <span class="k3">=</span> object.m_blPhaserOn<span class="k2">;</span>
<span class="number"> 266</span>
<span class="number"> 267</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakCharge        <span class="k3">=</span> object.m_nCloakCharge<span class="k2">;</span>
<span class="number"> 268</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakCounter       <span class="k3">=</span> object.m_nCloakCounter<span class="k2">;</span>
<span class="number"> 269</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nPhotonTimer        <span class="k3">=</span> object.m_nPhotonTimer<span class="k2">;</span>
<span class="number"> 270</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTranslucency       <span class="k3">=</span> object.m_nTranslucency<span class="k2">;</span>
<span class="number"> 271</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nTask               <span class="k3">=</span> object.m_nTask<span class="k2">;</span>
<span class="number"> 272</span>
<span class="number"> 273</span>                <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_nCloakState         <span class="k3">=</span> object.m_nCloakState<span class="k2">;</span>
<span class="number"> 274</span>
<span class="number"> 275</span>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">size_t</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_lstHealth.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 276</span>        <span class="k2">{</span>
<span class="number"> 277</span>            <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span>pSprite<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_lstHealth<span class="k2">[</span>i<span class="k2">]</span><span class="k3">=</span>object.m_nHealth<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 278</span>        <span class="k2">}</span>
<span class="number"> 279</span>            <span class="k2">}</span>
<span class="number"> 280</span>        <span class="k2">}</span>
<span class="number"> 281</span>
<span class="number"> 282</span>        <span class="k1">if</span> <span class="k2">(</span>pSprite <span class="k3">!</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 283</span>            <span class="k2">{</span>
<span class="number"> 284</span>                <span class="c">// save TSprite specific</span>
<span class="number"> 285</span>                pSprite-&gt;m_dX              <span class="k3">=</span> object.m_dX<span class="k2">;</span>
<span class="number"> 286</span>            pSprite-&gt;m_dY              <span class="k3">=</span> object.m_dY<span class="k2">;</span>
<span class="number"> 287</span>            pSprite-&gt;m_nZ              <span class="k3">=</span> object.m_nZ<span class="k2">;</span>
<span class="number"> 288</span>        pSprite-&gt;m_dSpeed          <span class="k3">=</span> object.m_dSpeed<span class="k2">;</span>
<span class="number"> 289</span>        pSprite-&gt;m_dAngle          <span class="k3">=</span> object.m_dAngle<span class="k2">;</span>
<span class="number"> 290</span>                pSprite-&gt;m_Member         <span class="k3">=</span> object.m_Member<span class="k2">;</span>
<span class="number"> 291</span>                pSprite-&gt;m_ID             <span class="k3">=</span> object.m_ID<span class="k2">;</span>
<span class="number"> 292</span>                Add<span class="k2">(</span>pSprite<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 293</span>            <span class="k2">}</span>
<span class="number"> 294</span>
<span class="number"> 295</span>     <span class="k2">}</span>
<span class="number"> 296</span>
<span class="number"> 297</span>std::list<span class="k3">&lt;</span>TSprite <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>const_iterator p<span class="k3">=</span>m_lstItems.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 298</span><span class="k1">while</span> <span class="k2">(</span>p<span class="k3">!</span><span class="k3">=</span>m_lstItems.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 299</span><span class="k2">{</span>
<span class="number"> 300</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID&gt;ID_SHIP_BOTTOM<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocked<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 301</span>  <span class="k2">{</span>
<span class="number"> 302</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blCanFind <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 303</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocking<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number"> 304</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blReleasing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 305</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dSpeed<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 306</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pBaseTarget<span class="k3">=</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span> Seekstarbase<span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_Member,<span class="k1">false</span>,<span class="n">100000</span>,<span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dX,<span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 307</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pTarget <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pBaseTarget<span class="k2">;</span>
<span class="number"> 308</span>  <span class="k2">}</span>
<span class="number"> 309</span>  <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_ID&gt;ID_SHIP_BOTTOM<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocking<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 310</span>  <span class="k2">{</span>
<span class="number"> 311</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blDocking<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span>
<span class="number"> 312</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_blReleasing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 313</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pBaseTarget<span class="k3">=</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span> Seekstarbase<span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_Member,<span class="k1">false</span>,<span class="n">100000</span>,<span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dX,<span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_dY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 314</span>    <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pTarget <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>TShip <span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>m_pBaseTarget<span class="k2">;</span>
<span class="number"> 315</span>  <span class="k2">}</span>
<span class="number"> 316</span>
<span class="number"> 317</span>  <span class="k3">+</span><span class="k3">+</span>p<span class="k2">;</span>
<span class="number"> 318</span><span class="k2">}</span>
<span class="number"> 319</span>
<span class="number"> 320</span>
<span class="number"> 321</span><span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 322</span>
<span class="number"> 323</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Thu, 18 Aug 2016 15:04:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you want cross-platform behavior, you need to save your structures one field at a time. Choose an endianness for the file format, and save every multi-byte integer with the specific function for its size (short : 16, long: 32).
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_fwrite16le"><span class="a">al_fwrite16le</span></a><span class="k2">(</span>saveFile, object.m_dX<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_fwrite16le"><span class="a">al_fwrite16le</span></a><span class="k2">(</span>saveFile, object.m_dY<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Same when you reload them :
</p><div class="source-code snippet"><div class="inner"><pre>object.m_dX <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fread16le"><span class="a">al_fread16le</span></a><span class="k2">(</span>saveFile<span class="k2">)</span><span class="k2">;</span>
object.m_dY <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fread16le"><span class="a">al_fread16le</span></a><span class="k2">(</span>saveFile<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Thu, 18 Aug 2016 15:38:09 +0000</pubDate>
	</item>
</rss>
