<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>A5 Linux to Windows (Porting Blues!)</title>
		<link>http://www.allegro.cc/forums/view/608697</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 31 Oct 2011 09:05:17 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello,</p><p>I recently put together a small prototype application on A5. The main coding platform was Debian, using CodeBlocks as the IDE. I have had no problems with the Linux code compiling or running (A-5.0.4 w/ g++), and indeed the ported code with a few tweaks runs on Windows 7 64 bit, but gets into some trouble on Win_XP 32 bit.</p><p>In short, I compiled the program on my 32 bit / Win_XP platform, using the A-5.0.4 Allegro binaries. When I run the executable on this platform, it functions normally until I click on the &quot;close window&quot; X in the TLH corner. It then gives me that &quot;The program is not functioning.. blah.. blah.. send a report to MicroSoft?... etc&quot; window. I repeat, this only happens on the 32 bit. Even the same 32 bit binary on Win_7_64 apparently works without a hitch.</p><p>If anyone can please have a look at the source code contained along with the binary <a href="https://sourceforge.net/projects/shipgunmodel/files/GunSim_V1_1/">here</a> (the 7z window binary is the one I would like checking, please) and maybe suggest what I might be doing wrong (or if you know of this problem already with A5 on XP). I would be very grateful!</p><p>Post Script:</p><p>What I originally assumed the problem might be was my (possibly bad) habit in g++ of passing character arrays as char pointers to functions and then using sprintf to populate the array. Like this...</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="number">  2</span><span class="k1">void</span> txt_output<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>buff<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buff, <span class="s">"Lo and Behold!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span><span class="k2">}</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  8</span><span class="k2">{</span>
<span class="number">  9</span>   <span class="k1">char</span> buffer<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 10</span>   txt_output<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>   
<span class="number"> 12</span>   ....
<span class="number"> 13</span><span class="k2">}</span>
</div></div><p>

I put this &quot;right&quot; for MSVC++ 2008 by declaring the buffer globally and using sprintf_s() with strlen(buffer) instead, but it still shows that report window after closing down the program. It is vaguely reminiscent of the occasional GDI leak problem I used to get every now and then by the odd bit of frenetic, careless coding in WINAPI. I would just like to be sure it isn&#39;t this.</p><p>My thanks in advance for any help!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (KeithS)</author>
		<pubDate>Sun, 30 Oct 2011 07:34:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I hate to tell you, but you have the syntax for the sprintf_s calls wrong. It is <span class="source-code"> <span class="k1">int</span> sprintf_s<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>buffer,<span class="k1">size_t</span> sizeOfBuffer,<span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>format <span class="k2">[</span>,argument<span class="k2">]</span> ... <span class="k2">)</span><span class="k2">;</span></span>, so you should be putting the buffer length as the second argument, not the last. The second thing wrong with it is that you are trying to find the length of the buffer using strlen, which will find the length until the first null, which could be sooner than the end giving you a smaller buffer, or worse it could cause it to extend past the bounds of the buffer. What you want to do is add another argument to the draw_phase_X functions where you can pass in the buffer size. I&#39;m not certain that&#39;s the problem, but with the code included in the 7z it should not have even compiled.</p><p>EDIT: Also, globals are bad in most situations, so the way you had it originally would have been better, so long as you add the length argument to the function.</p><p>EDIT2: The problem is actually in the last lines. You don&#39;t need this part:
</p><div class="source-code snippet"><div class="inner"><pre>    <a href="http://www.allegro.cc/manual/al_shutdown_image_addon"><span class="a">al_shutdown_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/al_shutdown_primitives_addon"><span class="a">al_shutdown_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/al_shutdown_ttf_addon"><span class="a">al_shutdown_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/al_shutdown_font_addon"><span class="a">al_shutdown_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_uninstall_mouse"><span class="a">al_uninstall_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Allegro automatically calls all those functions when the program exits, and the al_uninstall_system() call was doing something strange with a ttf font. I found this using a debugger, which gave me a segfault and call stack to work with.</p><p>Here is the complete source for GunsimV11.cpp that has the changes, I replaced the sprintf_s calls with snprintf since I&#39;m using Code::Blocks, but it has the same syntax.
</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="c">//#define _CRT_SECURE_NO_WARNINGS</span>
<span class="number">    2</span><span class="p">#define M_PI 3.141593</span>
<span class="number">    3</span><span class="p">#include "GunSim.h"</span>
<span class="number">    4</span><span class="p">#include "al5setp.h"</span>
<span class="number">    5</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">    6</span><span class="c">//#include &lt;string&gt;</span>
<span class="number">    7</span><span class="c">//#include &lt;stdio.h&gt;</span>
<span class="number">    8</span>
<span class="number">    9</span>
<span class="number">   10</span>GunPhysics gun_phys<span class="k2">;</span>
<span class="number">   11</span><span class="k1">const</span> <span class="k1">int</span> ZF_SIZE <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span>
<span class="number">   12</span><span class="k1">const</span> <span class="k1">float</span> SCREEN_1_Y_LOWER_LIMIT <span class="k3">=</span> <span class="n">430</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">   13</span><span class="k1">const</span> <span class="k1">float</span> SCREEN_1_Y_UPPER_LIMIT <span class="k3">=</span> <span class="n">127</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">   14</span>
<span class="number">   15</span><span class="k1">struct</span> record_position
<span class="number">   16</span><span class="k2">{</span>
<span class="number">   17</span>    <span class="k1">double</span> x_pos<span class="k2">;</span>
<span class="number">   18</span>    <span class="k1">double</span> y_pos<span class="k2">;</span>
<span class="number">   19</span>    <span class="k1">double</span> velocity<span class="k2">;</span>
<span class="number">   20</span>    <span class="k1">double</span> angle<span class="k2">;</span>
<span class="number">   21</span>    <span class="k1">double</span> flight_time<span class="k2">;</span>
<span class="number">   22</span>    <span class="k1">double</span> mach_no<span class="k2">;</span>
<span class="number">   23</span>    <span class="k1">double</span> rho<span class="k2">;</span>
<span class="number">   24</span>    <span class="k1">double</span> Cd<span class="k2">;</span>
<span class="number">   25</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">   26</span>
<span class="number">   27</span><span class="k1">struct</span> button_position
<span class="number">   28</span><span class="k2">{</span>
<span class="number">   29</span>    <span class="k1">float</span> x1<span class="k2">;</span>
<span class="number">   30</span>    <span class="k1">float</span> x2<span class="k2">;</span>
<span class="number">   31</span>    <span class="k1">float</span> y1<span class="k2">;</span>
<span class="number">   32</span>    <span class="k1">float</span> y2<span class="k2">;</span>
<span class="number">   33</span>    <span class="k1">int</span> rgb<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   34</span>    string label<span class="k2">;</span>
<span class="number">   35</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">   36</span><span class="c">//****************************************************</span>
<span class="number">   37</span>
<span class="number">   38</span><span class="k1">bool</span> set_rho_values<span class="k2">(</span><span class="k2">)</span>
<span class="number">   39</span><span class="k2">{</span>
<span class="number">   40</span>    <span class="k1">size_t</span> vec_size<span class="k2">;</span>
<span class="number">   41</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">   42</span>    ifstream ref_file<span class="k2">(</span><span class="s">"rhos.txt"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   43</span>
<span class="number">   44</span>    <span class="k1">if</span><span class="k2">(</span>ref_file.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">   45</span>    <span class="k2">{</span>
<span class="number">   46</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.rho_alt_gradient<span class="k2">;</span>
<span class="number">   47</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.rho_at_SL<span class="k2">;</span>
<span class="number">   48</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> vec_size<span class="k2">;</span>
<span class="number">   49</span>        gun_phys.ref_rho_table.resize<span class="k2">(</span>vec_size<span class="k2">)</span><span class="k2">;</span>
<span class="number">   50</span>        <span class="k1">for</span><span class="k2">(</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="k1">int</span><span class="k2">)</span>vec_size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">   51</span>        <span class="k2">{</span>
<span class="number">   52</span>            <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ref_file.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">   53</span>                ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.ref_rho_table.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span>
<span class="number">   54</span>            <span class="k1">else</span>
<span class="number">   55</span>            <span class="k2">{</span>
<span class="number">   56</span>                ref_file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   57</span>                <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   58</span>            <span class="k2">}</span>
<span class="number">   59</span>        <span class="k2">}</span>
<span class="number">   60</span>    <span class="k2">}</span>
<span class="number">   61</span>    <span class="k1">else</span>
<span class="number">   62</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   63</span>
<span class="number">   64</span>    ref_file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   65</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">   66</span><span class="k2">}</span>
<span class="number">   67</span><span class="c">//****************************************************</span>
<span class="number">   68</span><span class="k1">bool</span> set_Mach_Cd_values<span class="k2">(</span><span class="k2">)</span>
<span class="number">   69</span><span class="k2">{</span>
<span class="number">   70</span>    <span class="c">//size_t vec_size;</span>
<span class="number">   71</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">   72</span>    ifstream ref_file<span class="k2">(</span><span class="s">"mach_cd.txt"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   73</span>
<span class="number">   74</span>    <span class="k1">if</span><span class="k2">(</span>ref_file.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">   75</span>    <span class="k2">{</span>
<span class="number">   76</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.Mach_fall_off<span class="k2">;</span>
<span class="number">   77</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.ref_Mach_1<span class="k2">;</span>
<span class="number">   78</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.temp_at_SL<span class="k2">;</span>
<span class="number">   79</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.temp_lapse<span class="k2">;</span>
<span class="number">   80</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.gravity_accel<span class="k2">;</span>
<span class="number">   81</span>        ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.cd_table_size<span class="k2">;</span>
<span class="number">   82</span>
<span class="number">   83</span>        gun_phys.ref_Cd_table.resize<span class="k2">(</span>gun_phys.cd_table_size<span class="k2">)</span><span class="k2">;</span>
<span class="number">   84</span>        gun_phys.ref_Mach_table.resize<span class="k2">(</span>gun_phys.cd_table_size<span class="k2">)</span><span class="k2">;</span>
<span class="number">   85</span>
<span class="number">   86</span>        <span class="k1">for</span><span class="k2">(</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="k1">int</span><span class="k2">)</span>gun_phys.cd_table_size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">   87</span>        <span class="k2">{</span>
<span class="number">   88</span>            <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ref_file.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">   89</span>            <span class="k2">{</span>
<span class="number">   90</span>                ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.ref_Mach_table.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span>
<span class="number">   91</span>                ref_file <span class="k3">&gt;</span><span class="k3">&gt;</span> gun_phys.ref_Cd_table.at<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span>
<span class="number">   92</span>            <span class="k2">}</span>
<span class="number">   93</span>            <span class="k1">else</span>
<span class="number">   94</span>            <span class="k2">{</span>
<span class="number">   95</span>                ref_file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   96</span>                <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   97</span>            <span class="k2">}</span>
<span class="number">   98</span>        <span class="k2">}</span>
<span class="number">   99</span>    <span class="k2">}</span>
<span class="number">  100</span>    <span class="k1">else</span>
<span class="number">  101</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  102</span>
<span class="number">  103</span>    ref_file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  104</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  105</span><span class="k2">}</span>
<span class="number">  106</span>
<span class="number">  107</span><span class="c">//****************************************************</span>
<span class="number">  108</span>
<span class="number">  109</span><span class="k1">void</span> reset_gun_params<span class="k2">(</span><span class="c">/*double gun_ang, double muz_vel*/</span><span class="c">/*, double muz_alt,*/</span> <span class="k1">int</span> <span class="k3">&amp;</span>zf_i<span class="k2">)</span>
<span class="number">  110</span><span class="k2">{</span>
<span class="number">  111</span>    zf_i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  112</span>    <span class="c">//gun_phys.shell_FP_angle = gun_ang;</span>
<span class="number">  113</span>    <span class="c">//gun_phys.shell_velocity = muz_vel;</span>
<span class="number">  114</span>    gun_phys.shell_FP_angle <span class="k3">=</span> gun_phys.gun_angle<span class="k2">;</span>
<span class="number">  115</span>    gun_phys.shell_velocity <span class="k3">=</span> gun_phys.muzzle_velocity<span class="k2">;</span>
<span class="number">  116</span>    gun_phys.shell_FP_degrees <span class="k3">=</span> <span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">/</span> M_PI<span class="k2">)</span> <span class="k3">*</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  117</span>    gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  118</span>    <span class="c">//gun_phys.shell_y_pos = muz_alt;</span>
<span class="number">  119</span>    gun_phys.shell_y_pos <span class="k3">=</span> gun_phys.gun_deck_altitude<span class="k2">;</span>
<span class="number">  120</span>    gun_phys.shell_x_pos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  121</span>    gun_phys.flight_time_100_s <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  122</span>
<span class="number">  123</span><span class="k2">}</span>
<span class="number">  124</span>
<span class="number">  125</span><span class="c">//****************************************************</span>
<span class="number">  126</span>
<span class="number">  127</span><span class="k1">void</span> update_shell_trajectory<span class="k2">(</span><span class="k1">double</span> BPS_Tm<span class="k2">)</span>
<span class="number">  128</span><span class="k2">{</span>
<span class="number">  129</span>    gun_phys.rho_at_alt <span class="k3">=</span> gun_phys.Rho_Calculator<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  130</span>    gun_phys.shell_Mach <span class="k3">=</span> gun_phys.Mach_Calculator<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  131</span>    gun_phys.Cd <span class="k3">=</span> gun_phys.Cd_Calculator<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  132</span>    gun_phys.shell_velocity <span class="k3">=</span> gun_phys.New_Velocity_Calculator<span class="k2">(</span>BPS_Tm<span class="k2">)</span><span class="k2">;</span>
<span class="number">  133</span>    gun_phys.update_shell_position<span class="k2">(</span>BPS_Tm<span class="k2">)</span><span class="k2">;</span>
<span class="number">  134</span>    gun_phys.shell_FP_degrees <span class="k3">=</span> <span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">/</span> M_PI<span class="k2">)</span> <span class="k3">*</span> <span class="n">180</span><span class="k2">;</span>
<span class="number">  135</span>    gun_phys.flight_time_100_s<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  136</span><span class="k2">}</span>
<span class="number">  137</span><span class="c">//****************************************************</span>
<span class="number">  138</span><span class="k1">void</span> shell_position_recording<span class="k2">(</span>vector<span class="k3">&lt;</span>record_position&gt; <span class="k3">*</span>posit, <span class="k1">double</span> BPS_Tm<span class="k2">)</span>
<span class="number">  139</span><span class="k2">{</span>
<span class="number">  140</span>    record_position temp_position <span class="k3">=</span> <span class="k2">{</span><span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  141</span>    temp_position.flight_time <span class="k3">=</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>gun_phys.flight_time_100_s <span class="k3">/</span> BPS_Tm<span class="k2">;</span><span class="c">//BPS;</span>
<span class="number">  142</span>    temp_position.velocity <span class="k3">=</span> gun_phys.shell_velocity<span class="k2">;</span>
<span class="number">  143</span>    temp_position.angle <span class="k3">=</span> gun_phys.shell_FP_degrees<span class="k2">;</span>
<span class="number">  144</span>    temp_position.x_pos <span class="k3">=</span> gun_phys.shell_x_pos<span class="k2">;</span>
<span class="number">  145</span>    temp_position.y_pos <span class="k3">=</span> gun_phys.shell_y_pos<span class="k2">;</span>
<span class="number">  146</span>    temp_position.mach_no <span class="k3">=</span> gun_phys.shell_Mach<span class="k2">;</span>
<span class="number">  147</span>    temp_position.Cd <span class="k3">=</span> gun_phys.Cd<span class="k2">;</span>
<span class="number">  148</span>    temp_position.rho <span class="k3">=</span> gun_phys.rho_at_alt<span class="k2">;</span>
<span class="number">  149</span>    posit-&gt;push_back<span class="k2">(</span>temp_position<span class="k2">)</span><span class="k2">;</span>
<span class="number">  150</span><span class="k2">}</span>
<span class="number">  151</span><span class="c">//****************************************************</span>
<span class="number">  152</span>
<span class="number">  153</span><span class="k1">void</span> init_phase_0_buttons<span class="k2">(</span>button_position <span class="k3">*</span>buts<span class="k2">)</span>
<span class="number">  154</span><span class="c">// Be careful here. the number of buttons on phase 0 is currently 12</span>
<span class="number">  155</span><span class="c">// This one might be a case for a dynamic array or a vector, in future.</span>
<span class="number">  156</span><span class="k2">{</span>
<span class="number">  157</span>    <span class="k1">float</span> posit_xy<span class="k2">[</span><span class="n">12</span><span class="k2">]</span><span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k2">{</span><span class="n">15</span>,<span class="n">370</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">15</span>,<span class="n">410</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">15</span>,<span class="n">460</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">15</span>,<span class="n">500</span><span class="k2">}</span>,
<span class="number">  158</span>                            <span class="k2">{</span><span class="n">280</span>,<span class="n">370</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">280</span>,<span class="n">410</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">280</span>,<span class="n">460</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">280</span>,<span class="n">500</span><span class="k2">}</span>,
<span class="number">  159</span>                            <span class="k2">{</span><span class="n">545</span>,<span class="n">370</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">545</span>,<span class="n">410</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">545</span>,<span class="n">460</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">545</span>,<span class="n">500</span><span class="k2">}</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  160</span>
<span class="number">  161</span>    <span class="k1">int</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span><span class="n">12</span><span class="k2">]</span><span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span>        <span class="k2">{</span><span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>,
<span class="number">  162</span>                            <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>,
<span class="number">  163</span>                            <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">170</span>,<span class="n">205</span>,<span class="n">0</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">}</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  164</span>
<span class="number">  165</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  166</span>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">12</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  167</span>    <span class="k2">{</span>
<span class="number">  168</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.x1 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  169</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.x2 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">+</span> <span class="n">30</span><span class="k2">;</span>
<span class="number">  170</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.y1 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  171</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.y2 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">+</span> <span class="n">30</span><span class="k2">;</span>
<span class="number">  172</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  173</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  174</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  175</span>    <span class="k2">}</span>
<span class="number">  176</span>    buts<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Elevate Gun"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  177</span>    buts<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Depress Gun"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  178</span>    buts<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Increase Velocity"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  179</span>    buts<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Decrease Velocity"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  180</span>    buts<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Increase Mass"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  181</span>    buts<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Decrease Mass"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  182</span>    buts<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Increase Bore"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  183</span>    buts<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Decrease Bore"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  184</span>    buts<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Raise Turret"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  185</span>    buts<span class="k2">[</span><span class="n">9</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Lower Turret"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  186</span>    buts<span class="k2">[</span><span class="n">10</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Toggle Units"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  187</span>    buts<span class="k2">[</span><span class="n">11</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"FIRE!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  188</span><span class="k2">}</span>
<span class="number">  189</span>
<span class="number">  190</span><span class="c">//****************************************************</span>
<span class="number">  191</span>
<span class="number">  192</span><span class="k1">void</span> init_phase_2_buttons<span class="k2">(</span>button_position <span class="k3">*</span>buts<span class="k2">)</span>
<span class="number">  193</span><span class="c">// Be careful here. the number of buttons on phase 0 is currently 3</span>
<span class="number">  194</span><span class="c">// This one might be a case for a dynamic array or a vector, in future.</span>
<span class="number">  195</span><span class="k2">{</span>
<span class="number">  196</span>    <span class="k1">float</span> posit_xy<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k2">{</span><span class="n">45</span>,<span class="n">500</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">45</span>,<span class="n">540</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">460</span>,<span class="n">540</span><span class="k2">}</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  197</span>
<span class="number">  198</span>    <span class="k1">int</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span>        <span class="k2">{</span><span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">}</span>, <span class="k2">{</span><span class="n">170</span>,<span class="n">205</span>,<span class="n">0</span><span class="k2">}</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  199</span>
<span class="number">  200</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  201</span>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">3</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  202</span>    <span class="k2">{</span>
<span class="number">  203</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.x1 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  204</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.x2 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">+</span> <span class="n">30</span><span class="k2">;</span>
<span class="number">  205</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.y1 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  206</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.y2 <span class="k3">=</span> posit_xy<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">+</span> <span class="n">30</span><span class="k2">;</span>
<span class="number">  207</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  208</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  209</span>        buts<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  210</span>    <span class="k2">}</span>
<span class="number">  211</span>    buts<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Next Segment"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  212</span>    buts<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"Previous Segment"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  213</span>    buts<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.label.assign<span class="k2">(</span><span class="s">"End Analysis (Restart)"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  214</span>
<span class="number">  215</span><span class="k2">}</span>
<span class="number">  216</span>
<span class="number">  217</span><span class="c">//****************************************************</span>
<span class="number">  218</span>
<span class="number">  219</span><span class="k1">int</span> mouse_handler<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, button_position <span class="k3">*</span>buts, <span class="k1">int</span> length<span class="k2">)</span>
<span class="number">  220</span><span class="k2">{</span>
<span class="number">  221</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  222</span>    <span class="k1">bool</span> pressed <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  223</span>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> length<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  224</span>    <span class="k2">{</span>
<span class="number">  225</span>        <span class="k1">if</span><span class="k2">(</span>x <span class="k3">&gt;</span> buts<span class="k2">[</span>i<span class="k2">]</span>.x1 <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&lt;</span> buts<span class="k2">[</span>i<span class="k2">]</span>.x2 <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&gt;</span> buts<span class="k2">[</span>i<span class="k2">]</span>.y1 <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&lt;</span> buts<span class="k2">[</span>i<span class="k2">]</span>.y2<span class="k2">)</span>
<span class="number">  226</span>        <span class="k2">{</span>
<span class="number">  227</span>            pressed <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  228</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  229</span>        <span class="k2">}</span>
<span class="number">  230</span>    <span class="k2">}</span>
<span class="number">  231</span>
<span class="number">  232</span>    <span class="k1">if</span><span class="k2">(</span>pressed <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number">  233</span>        <span class="k1">return</span> i<span class="k2">;</span>
<span class="number">  234</span>    <span class="k1">else</span>
<span class="number">  235</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  236</span><span class="k2">}</span>
<span class="number">  237</span><span class="c">//****************************************************</span>
<span class="number">  238</span>
<span class="number">  239</span>
<span class="number">  240</span><span class="k1">void</span> phase_0_action_handler<span class="k2">(</span><span class="k1">int</span> id, <span class="k1">bool</span> go, <span class="k1">int</span> <span class="k3">&amp;</span>faze, <span class="k1">bool</span> <span class="k3">&amp;</span>moused, <span class="k1">bool</span> <span class="k3">&amp;</span>imp_bool<span class="c">/*, double &amp;gun_ang*/</span><span class="c">/*, double &amp; muz_alt*/</span><span class="k2">)</span>
<span class="number">  241</span><span class="k2">{</span>
<span class="number">  242</span>    <span class="k1">switch</span><span class="k2">(</span>id<span class="k2">)</span>
<span class="number">  243</span>    <span class="k2">{</span>
<span class="number">  244</span>        <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number">  245</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  246</span>            <span class="k2">{</span>
<span class="number">  247</span>
<span class="number">  248</span>                gun_phys.shell_FP_angle <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">001745</span><span class="k2">;</span>
<span class="number">  249</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">&gt;</span> gun_phys.elevation_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  250</span>                    gun_phys.shell_FP_angle <span class="k3">=</span> gun_phys.elevation_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  251</span>
<span class="number">  252</span>                gun_phys.gun_angle <span class="k3">=</span> gun_phys.shell_FP_angle<span class="k2">;</span>
<span class="number">  253</span>                gun_phys.shell_FP_degrees <span class="k3">=</span> <span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">/</span> M_PI<span class="k2">)</span> <span class="k3">*</span> <span class="n">180</span><span class="k2">;</span>
<span class="number">  254</span>                gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  255</span>
<span class="number">  256</span>
<span class="number">  257</span>                <span class="c">//gun_ang = gun_phys.shell_FP_angle;</span>
<span class="number">  258</span>
<span class="number">  259</span>                <span class="c">//gun_phys.shell_y_pos = gun_phys.init_muzzle_position();</span>
<span class="number">  260</span>                <span class="c">//muz_alt = gun_phys.shell_y_pos;</span>
<span class="number">  261</span>                <span class="c">// mouse_down = false; a way to stop the repeat function of mouse press</span>
<span class="number">  262</span>                <span class="c">//button_id = -1;</span>
<span class="number">  263</span>            <span class="k2">}</span>
<span class="number">  264</span>
<span class="number">  265</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  266</span>
<span class="number">  267</span>        <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number">  268</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  269</span>            <span class="k2">{</span>
<span class="number">  270</span>                gun_phys.shell_FP_angle <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">001745</span><span class="k2">;</span>
<span class="number">  271</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">&lt;</span> gun_phys.elevation_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  272</span>                    gun_phys.shell_FP_angle <span class="k3">=</span> gun_phys.elevation_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  273</span>
<span class="number">  274</span>                gun_phys.gun_angle <span class="k3">=</span> gun_phys.shell_FP_angle<span class="k2">;</span>
<span class="number">  275</span>                gun_phys.shell_FP_degrees <span class="k3">=</span> <span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">/</span> M_PI<span class="k2">)</span> <span class="k3">*</span> <span class="n">180</span><span class="k2">;</span>
<span class="number">  276</span>                gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  277</span>                <span class="c">//gun_ang = gun_phys.shell_FP_angle;</span>
<span class="number">  278</span>
<span class="number">  279</span>                <span class="c">//gun_phys.shell_y_pos = gun_phys.init_muzzle_position();</span>
<span class="number">  280</span>                <span class="c">//muz_alt = gun_phys.shell_y_pos;</span>
<span class="number">  281</span>            <span class="k2">}</span>
<span class="number">  282</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  283</span>
<span class="number">  284</span>        <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number">  285</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  286</span>            <span class="k2">{</span>
<span class="number">  287</span>                gun_phys.shell_velocity <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span>
<span class="number">  288</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_velocity <span class="k3">&gt;</span> gun_phys.velocity_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  289</span>                    gun_phys.shell_velocity <span class="k3">=</span> gun_phys.velocity_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  290</span>
<span class="number">  291</span>                gun_phys.muzzle_velocity <span class="k3">=</span> gun_phys.shell_velocity<span class="k2">;</span>
<span class="number">  292</span>                gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  293</span>            <span class="k2">}</span>
<span class="number">  294</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  295</span>
<span class="number">  296</span>        <span class="k1">case</span> <span class="n">3</span><span class="k2">:</span>
<span class="number">  297</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  298</span>            <span class="k2">{</span>
<span class="number">  299</span>                gun_phys.shell_velocity <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span>
<span class="number">  300</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_velocity <span class="k3">&lt;</span> gun_phys.velocity_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  301</span>                    gun_phys.shell_velocity <span class="k3">=</span> gun_phys.velocity_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  302</span>
<span class="number">  303</span>                gun_phys.muzzle_velocity <span class="k3">=</span> gun_phys.shell_velocity<span class="k2">;</span>
<span class="number">  304</span>                gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  305</span>            <span class="k2">}</span>
<span class="number">  306</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  307</span>
<span class="number">  308</span>        <span class="k1">case</span> <span class="n">4</span><span class="k2">:</span>
<span class="number">  309</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  310</span>            <span class="k2">{</span>
<span class="number">  311</span>                gun_phys.shell_mass <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  312</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_mass <span class="k3">&gt;</span> gun_phys.mass_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  313</span>                    gun_phys.shell_mass <span class="k3">=</span> gun_phys.mass_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  314</span>            <span class="k2">}</span>
<span class="number">  315</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  316</span>
<span class="number">  317</span>        <span class="k1">case</span> <span class="n">5</span><span class="k2">:</span>
<span class="number">  318</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  319</span>            <span class="k2">{</span>
<span class="number">  320</span>                gun_phys.shell_mass <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  321</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_mass <span class="k3">&lt;</span> gun_phys.mass_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  322</span>                    gun_phys.shell_mass <span class="k3">=</span> gun_phys.mass_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  323</span>            <span class="k2">}</span>
<span class="number">  324</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  325</span>
<span class="number">  326</span>        <span class="k1">case</span> <span class="n">6</span><span class="k2">:</span> <span class="c">// increase the shell diameter</span>
<span class="number">  327</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  328</span>            <span class="k2">{</span>
<span class="number">  329</span>                gun_phys.shell_diameter <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  330</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_diameter <span class="k3">&gt;</span> gun_phys.bore_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  331</span>                    gun_phys.shell_diameter <span class="k3">=</span> gun_phys.bore_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  332</span>            <span class="k2">}</span>
<span class="number">  333</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  334</span>
<span class="number">  335</span>        <span class="k1">case</span> <span class="n">7</span><span class="k2">:</span> <span class="c">// decrease shell diameter</span>
<span class="number">  336</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  337</span>            <span class="k2">{</span>
<span class="number">  338</span>                gun_phys.shell_diameter <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  339</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_diameter <span class="k3">&lt;</span> gun_phys.bore_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  340</span>                    gun_phys.shell_diameter <span class="k3">=</span> gun_phys.bore_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  341</span>            <span class="k2">}</span>
<span class="number">  342</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  343</span>
<span class="number">  344</span>        <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span> <span class="c">// Raise the turret</span>
<span class="number">  345</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  346</span>            <span class="k2">{</span>
<span class="number">  347</span>                gun_phys.gun_deck_altitude <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  348</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">&gt;</span> gun_phys.deck_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  349</span>                    gun_phys.gun_deck_altitude <span class="k3">=</span> gun_phys.deck_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  350</span>
<span class="number">  351</span>                gun_phys.shell_y_pos <span class="k3">=</span> gun_phys.gun_deck_altitude<span class="k2">;</span>
<span class="number">  352</span>            <span class="k2">}</span>
<span class="number">  353</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  354</span>
<span class="number">  355</span>        <span class="k1">case</span> <span class="n">9</span><span class="k2">:</span> <span class="c">// Lower the turret</span>
<span class="number">  356</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  357</span>            <span class="k2">{</span>
<span class="number">  358</span>                gun_phys.gun_deck_altitude <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  359</span>                <span class="k1">if</span><span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">&lt;</span> gun_phys.deck_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  360</span>                    gun_phys.gun_deck_altitude <span class="k3">=</span> gun_phys.deck_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  361</span>
<span class="number">  362</span>                gun_phys.shell_y_pos <span class="k3">=</span> gun_phys.gun_deck_altitude<span class="k2">;</span>
<span class="number">  363</span>            <span class="k2">}</span>
<span class="number">  364</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  365</span>
<span class="number">  366</span>        <span class="k1">case</span> <span class="n">10</span><span class="k2">:</span> <span class="c">// Change between imperial and SI units</span>
<span class="number">  367</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  368</span>            <span class="k2">{</span>
<span class="number">  369</span>                <span class="k1">if</span><span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number">  370</span>                    imp_bool <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  371</span>                <span class="k1">else</span>
<span class="number">  372</span>                    imp_bool <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  373</span>
<span class="number">  374</span>                moused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span> <span class="c">// a way to stop the repeat function of mouse press</span>
<span class="number">  375</span>
<span class="number">  376</span>            <span class="k2">}</span>
<span class="number">  377</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  378</span>
<span class="number">  379</span>        <span class="k1">case</span> <span class="n">11</span><span class="k2">:</span> <span class="c">// Fire the gun</span>
<span class="number">  380</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  381</span>            <span class="k2">{</span>
<span class="number">  382</span>                <span class="c">//gun_phys.shell_y_pos = gun_phys.init_muzzle_position();</span>
<span class="number">  383</span>                <span class="c">//muz_alt = gun_phys.shell_y_pos;</span>
<span class="number">  384</span>
<span class="number">  385</span>                faze <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  386</span>                moused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  387</span>            <span class="k2">}</span>
<span class="number">  388</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  389</span>
<span class="number">  390</span>        default:
<span class="number">  391</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  392</span>    <span class="k2">}</span>
<span class="number">  393</span><span class="k2">}</span>
<span class="number">  394</span>
<span class="number">  395</span><span class="c">// ***************************************************</span>
<span class="number">  396</span>
<span class="number">  397</span><span class="k1">void</span> phase_2_action_handler<span class="k2">(</span><span class="k1">int</span> id, <span class="k1">bool</span> go, <span class="k1">int</span> <span class="k3">&amp;</span>faze, <span class="k1">bool</span> <span class="k3">&amp;</span>moused, vector<span class="k3">&lt;</span>record_position&gt; <span class="k3">&amp;</span>posit, <span class="k1">size_t</span> v_sz, <span class="k1">size_t</span> <span class="k3">&amp;</span>sel_seg<span class="c">/*, double gun_ang, double muz_vel*/</span><span class="c">/*, double muz_alt*/</span>, <span class="k1">int</span> <span class="k3">&amp;</span>zf_i<span class="k2">)</span>
<span class="number">  398</span><span class="k2">{</span>
<span class="number">  399</span>    <span class="k1">switch</span><span class="k2">(</span>id<span class="k2">)</span>
<span class="number">  400</span>    <span class="k2">{</span>
<span class="number">  401</span>        <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number">  402</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  403</span>            <span class="k2">{</span>
<span class="number">  404</span>                <span class="k1">if</span><span class="k2">(</span>sel_seg <span class="k3">&lt;</span> <span class="k2">(</span>v_sz <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  405</span>                <span class="k2">{</span>
<span class="number">  406</span>                    sel_seg<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  407</span>                <span class="k2">}</span>
<span class="number">  408</span>                moused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  409</span>            <span class="k2">}</span>
<span class="number">  410</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  411</span>        <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number">  412</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  413</span>            <span class="k2">{</span>
<span class="number">  414</span>                <span class="k1">if</span><span class="k2">(</span>sel_seg <span class="k3">&gt;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  415</span>                <span class="k2">{</span>
<span class="number">  416</span>                    sel_seg--<span class="k2">;</span>
<span class="number">  417</span>                <span class="k2">}</span>
<span class="number">  418</span>                moused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  419</span>            <span class="k2">}</span>
<span class="number">  420</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  421</span>        <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number">  422</span>            <span class="k1">if</span><span class="k2">(</span>go <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="c">// Only if the timer geow is fed through...</span>
<span class="number">  423</span>            <span class="k2">{</span>
<span class="number">  424</span>                posit.resize<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  425</span>                posit.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  426</span>                reset_gun_params<span class="k2">(</span><span class="c">/*gun_ang,*/</span> <span class="c">/*muz_vel*/</span><span class="c">/*, muz_alt,*/</span> zf_i<span class="k2">)</span><span class="k2">;</span>
<span class="number">  427</span>                sel_seg <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  428</span>                faze <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  429</span>                <span class="c">// RESET THINGS NOW...</span>
<span class="number">  430</span>                moused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  431</span>            <span class="k2">}</span>
<span class="number">  432</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  433</span>
<span class="number">  434</span>
<span class="number">  435</span>        default:
<span class="number">  436</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  437</span>
<span class="number">  438</span>    <span class="k2">}</span>
<span class="number">  439</span><span class="k2">}</span>
<span class="number">  440</span><span class="c">// ***************************************************</span>
<span class="number">  441</span>
<span class="number">  442</span><span class="k1">void</span> draw_phase_0_screen<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>buff, <span class="k1">int</span> buffsize, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>F_font, button_position <span class="k3">*</span>buts_p0, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp, <span class="k1">bool</span> imp_bool<span class="k2">)</span>
<span class="number">  443</span><span class="k2">{</span>
<span class="number">  444</span>
<span class="number">  445</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">300</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  446</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  447</span>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">12</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  448</span>    <span class="k2">{</span>
<span class="number">  449</span>        <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span>buts_p0<span class="k2">[</span>i<span class="k2">]</span>.x1, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.y1, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.x2, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.y2,
<span class="number">  450</span>                          <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span>buts_p0<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,buts_p0<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,buts_p0<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  451</span>        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">)</span>, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.x2 <span class="k3">+</span> <span class="n">5</span>, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.y1 <span class="k3">+</span> <span class="n">5</span>, ALLEGRO_ALIGN_LEFT, buts_p0<span class="k2">[</span>i<span class="k2">]</span>.label.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  452</span>    <span class="k2">}</span>
<span class="number">  453</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">300</span>,<span class="n">800</span>,<span class="n">300</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  454</span>
<span class="number">  455</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">5</span>,<span class="n">5</span>,<span class="n">398</span>,<span class="n">295</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">220</span>,<span class="n">175</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  456</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">403</span>,<span class="n">5</span>,<span class="n">795</span>,<span class="n">295</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">220</span>,<span class="n">175</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  457</span>
<span class="number">  458</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"GUN PARAMETERS %s"</span>,
<span class="number">  459</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(Imperial Units)"</span> <span class="k2">:</span> <span class="s">"(SI Units)"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  460</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">10</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  461</span>
<span class="number">  462</span>    <span class="c">//-------------------------------</span>
<span class="number">  463</span>    <span class="c">// GUN ELEVATION</span>
<span class="number">  464</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Gun Elevation (deg):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  465</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  466</span>
<span class="number">  467</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>, gun_phys.shell_FP_degrees <span class="k2">)</span><span class="k2">;</span>
<span class="number">  468</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  469</span>
<span class="number">  470</span>    <span class="c">//-------------------------------</span>
<span class="number">  471</span>    <span class="c">// MUZZLE VELOCITY</span>
<span class="number">  472</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Muzzle Velocity %s"</span>,
<span class="number">  473</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(ft/s):"</span> <span class="k2">:</span> <span class="s">"(m/s):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  474</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  475</span>
<span class="number">  476</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>,
<span class="number">  477</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_velocity <span class="k3">*</span> <span class="n">3</span>.<span class="n">281</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_velocity<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  478</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  479</span>
<span class="number">  480</span>    <span class="c">//-------------------------------</span>
<span class="number">  481</span>    <span class="c">// SHELL MASS</span>
<span class="number">  482</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Shell Mass %s"</span>,
<span class="number">  483</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(lb):"</span> <span class="k2">:</span> <span class="s">"(kg):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  484</span>
<span class="number">  485</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  486</span>
<span class="number">  487</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>,
<span class="number">  488</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_mass <span class="k3">*</span> <span class="n">2</span>.<span class="n">2046</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_mass<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  489</span>
<span class="number">  490</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  491</span>
<span class="number">  492</span>    <span class="c">//-------------------------------</span>
<span class="number">  493</span>    <span class="c">// GUN BORE</span>
<span class="number">  494</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Gun Bore %s"</span>,
<span class="number">  495</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(in):"</span> <span class="k2">:</span> <span class="s">"(cm):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  496</span>
<span class="number">  497</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  498</span>
<span class="number">  499</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>,
<span class="number">  500</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_diameter <span class="k3">*</span> <span class="n">0</span>.<span class="n">3937</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_diameter<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  501</span>
<span class="number">  502</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  503</span>
<span class="number">  504</span>    <span class="c">//-------------------------------</span>
<span class="number">  505</span>    <span class="c">// GUN BORE</span>
<span class="number">  506</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Turret Height %s"</span>,
<span class="number">  507</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(ft):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  508</span>
<span class="number">  509</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">107</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  510</span>
<span class="number">  511</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>,
<span class="number">  512</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">3</span>.<span class="n">281</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.gun_deck_altitude<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  513</span>
<span class="number">  514</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">107</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  515</span>
<span class="number">  516</span>    <span class="c">//-------------------------------</span>
<span class="number">  517</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"ATMOSPHERIC PARAMETERS"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  518</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">143</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  519</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"currently not editable"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  520</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">161</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  521</span>
<span class="number">  522</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"S/L Temperature (C):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  523</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">186</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  524</span>
<span class="number">  525</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>, gun_phys.temp_at_SL <span class="k2">)</span><span class="k2">;</span>
<span class="number">  526</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">186</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  527</span>
<span class="number">  528</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"S/L Air Density (kg/m3):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  529</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">409</span>, <span class="n">204</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  530</span>
<span class="number">  531</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.3f"</span>, gun_phys.rho_at_SL <span class="k2">)</span><span class="k2">;</span>
<span class="number">  532</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">204</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  533</span>
<span class="number">  534</span>    <span class="c">//Draw the turret</span>
<span class="number">  535</span>    <span class="k1">float</span> barrel_tip_x <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>gun_phys.shell_FP_angle<span class="k2">)</span> <span class="k3">*</span> <span class="n">80</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  536</span>    <span class="k1">float</span> barrel_tip_y <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>gun_phys.shell_FP_angle<span class="k2">)</span> <span class="k3">*</span> <span class="n">80</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  537</span>    <span class="k1">float</span> x_offset <span class="k3">=</span> <span class="n">210</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  538</span>    <span class="k1">float</span> y_offset <span class="k3">=</span> <span class="n">255</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  539</span>
<span class="number">  540</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>x_offset,
<span class="number">  541</span>                 y_offset <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  542</span>                 <span class="k2">(</span>x_offset <span class="k3">+</span> barrel_tip_x<span class="k2">)</span>,
<span class="number">  543</span>                 <span class="k2">(</span>y_offset <span class="k3">-</span> barrel_tip_y<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  544</span>                 <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  545</span>
<span class="number">  546</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">145</span>,
<span class="number">  547</span>                             <span class="n">235</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  548</span>                             <span class="n">230</span>,
<span class="number">  549</span>                             <span class="n">270</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  550</span>                             <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  551</span>
<span class="number">  552</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">145</span>,
<span class="number">  553</span>                      <span class="n">235</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  554</span>                      <span class="n">230</span>,
<span class="number">  555</span>                      <span class="n">270</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  556</span>                      <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  557</span>
<span class="number">  558</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">5</span>,<span class="n">270</span>,<span class="n">398</span>,<span class="n">270</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  559</span>
<span class="number">  560</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">155</span>,
<span class="number">  561</span>                      <span class="n">270</span> <span class="k3">-</span> <span class="k2">(</span>gun_phys.gun_deck_altitude <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span>,
<span class="number">  562</span>                      <span class="n">220</span>,
<span class="number">  563</span>                      <span class="n">270</span>,
<span class="number">  564</span>                      <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">150</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  565</span>
<span class="number">  566</span>
<span class="number">  567</span><span class="k2">}</span>
<span class="number">  568</span><span class="c">//****************************************************</span>
<span class="number">  569</span>
<span class="number">  570</span><span class="k1">void</span> draw_phase_1_screen<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>buff, <span class="k1">int</span> buffsize, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>F_font, vector<span class="k3">&lt;</span>record_position&gt; <span class="k3">*</span>posit, <span class="k1">size_t</span> v_sz, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp, <span class="k1">bool</span> imp_bool, <span class="k1">double</span> zm_f, <span class="k1">int</span> <span class="k3">&amp;</span>zf_i, <span class="k1">bool</span> trace<span class="k2">)</span>
<span class="number">  571</span><span class="k2">{</span>
<span class="number">  572</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">460</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  573</span>    <span class="c">//TITLE</span>
<span class="number">  574</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"SHELL PROGRESS (Recording at 1 second interval)"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  575</span>
<span class="number">  576</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">400</span>, <span class="n">12</span>, ALLEGRO_ALIGN_CENTRE, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  577</span>
<span class="number">  578</span>    <span class="c">// DISTANCE</span>
<span class="number">  579</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Distance %s"</span>,
<span class="number">  580</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(yd):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  581</span>
<span class="number">  582</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">30</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  583</span>
<span class="number">  584</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  585</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_x_pos <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_x_pos<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  586</span>
<span class="number">  587</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">275</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  588</span>
<span class="number">  589</span>    <span class="c">// ALTITUDE</span>
<span class="number">  590</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Altitude %s"</span>,
<span class="number">  591</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(yd):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  592</span>
<span class="number">  593</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">30</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  594</span>
<span class="number">  595</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  596</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_y_pos <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_y_pos<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  597</span>
<span class="number">  598</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">275</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  599</span>
<span class="number">  600</span>    <span class="c">// SHELL ANGLE</span>
<span class="number">  601</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Path Angle (deg):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  602</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">30</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  603</span>
<span class="number">  604</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>, gun_phys.shell_FP_degrees <span class="k2">)</span><span class="k2">;</span>
<span class="number">  605</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">275</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  606</span>
<span class="number">  607</span>    <span class="c">// TIME</span>
<span class="number">  608</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Flight Time (sec):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  609</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">30</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  610</span>
<span class="number">  611</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>, <span class="k2">(</span><span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>gun_phys.flight_time_100_s <span class="k3">/</span> <span class="n">100</span>.<span class="n">0</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  612</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">275</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  613</span>
<span class="number">  614</span>    <span class="c">// VELOCITY</span>
<span class="number">  615</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Velocity %s"</span>,
<span class="number">  616</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(ft/s):"</span> <span class="k2">:</span> <span class="s">"(m/s):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  617</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">430</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  618</span>
<span class="number">  619</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  620</span>            imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>gun_phys.shell_velocity <span class="k3">*</span> <span class="n">3</span>.<span class="n">281</span><span class="k2">)</span> <span class="k2">:</span> gun_phys.shell_velocity <span class="k2">)</span><span class="k2">;</span>
<span class="number">  621</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">35</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  622</span>
<span class="number">  623</span>    <span class="c">// MACH</span>
<span class="number">  624</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Mach:"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  625</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">430</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  626</span>
<span class="number">  627</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.2f"</span>, gun_phys.shell_Mach <span class="k2">)</span><span class="k2">;</span>
<span class="number">  628</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">53</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  629</span>
<span class="number">  630</span>    <span class="c">// Rho</span>
<span class="number">  631</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Air Density (kg/m3):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  632</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">430</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  633</span>
<span class="number">  634</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.3f"</span>, gun_phys.rho_at_alt <span class="k2">)</span><span class="k2">;</span>
<span class="number">  635</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">71</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  636</span>
<span class="number">  637</span>    <span class="c">// temp_at_SL - (shell_y_pos / temp_lapse)</span>
<span class="number">  638</span>
<span class="number">  639</span>    <span class="c">// TEMP</span>
<span class="number">  640</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Air Temp (C):"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  641</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">430</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  642</span>
<span class="number">  643</span>    <span class="c">//temporary measure;</span>
<span class="number">  644</span>    <span class="k1">double</span> air_temp <span class="k3">=</span> gun_phys.temp_at_SL <span class="k3">-</span> <span class="k2">(</span>gun_phys.shell_y_pos <span class="k3">/</span> gun_phys.temp_lapse<span class="k2">)</span><span class="k2">;</span>
<span class="number">  645</span>    <span class="k1">if</span><span class="k2">(</span>air_temp <span class="k3">&lt;</span> <span class="k3">-</span><span class="n">56</span>.<span class="n">5</span><span class="k2">)</span>
<span class="number">  646</span>        air_temp <span class="k3">=</span> <span class="k3">-</span><span class="n">56</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  647</span>
<span class="number">  648</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.1f"</span>, air_temp <span class="k2">)</span><span class="k2">;</span>
<span class="number">  649</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">685</span>, <span class="n">89</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  650</span>
<span class="number">  651</span>    <span class="c">// DRAW THE SHELL</span>
<span class="number">  652</span>    <span class="k1">float</span> screen_X_pos <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  653</span>    <span class="k1">float</span> screen_Y_pos <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  654</span>    screen_X_pos <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span><span class="n">2</span> <span class="k3">+</span> <span class="k2">(</span>gun_phys.shell_x_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  655</span>    screen_Y_pos <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">-</span> <span class="k2">(</span>gun_phys.shell_y_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  656</span>
<span class="number">  657</span>    <span class="k1">if</span><span class="k2">(</span>screen_X_pos <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_X_pos <span class="k3">&lt;</span> <span class="n">800</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos <span class="k3">&lt;</span> <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos <span class="k3">&gt;</span> SCREEN_1_Y_UPPER_LIMIT<span class="k2">)</span>
<span class="number">  658</span>        <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span>screen_X_pos, screen_Y_pos, <span class="n">2</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">250</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  659</span>
<span class="number">  660</span>
<span class="number">  661</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_UPPER_LIMIT <span class="k3">-</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>, <span class="n">800</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_UPPER_LIMIT <span class="k3">-</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">200</span>,<span class="n">200</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  662</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, SCREEN_1_Y_LOWER_LIMIT, <span class="n">800</span>.<span class="n">0</span>, SCREEN_1_Y_LOWER_LIMIT, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">100</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  663</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">30</span><span class="k2">)</span>, <span class="n">800</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">30</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">200</span>,<span class="n">200</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  664</span>
<span class="number">  665</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Display Width Scale: %0.1f %s"</span>,
<span class="number">  666</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span><span class="k2">(</span>zm_f <span class="k3">*</span> <span class="n">800</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">1000</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span> <span class="k2">:</span> <span class="k2">(</span>zm_f <span class="k3">*</span> <span class="n">800</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">1000</span>.<span class="n">0</span><span class="k2">)</span>,
<span class="number">  667</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"kyd"</span> <span class="k2">:</span> <span class="s">"km"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  668</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">400</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">5</span>.<span class="n">0</span><span class="k2">)</span>, ALLEGRO_ALIGN_CENTRE, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  669</span>
<span class="number">  670</span>    <span class="c">// DRAW THE TRACING OF SHELL PATH, IF ENABLED</span>
<span class="number">  671</span>
<span class="number">  672</span>
<span class="number">  673</span>    <span class="k1">if</span><span class="k2">(</span>trace <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> v_sz <span class="k3">&gt;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  674</span>    <span class="k2">{</span>
<span class="number">  675</span>        <span class="k1">size_t</span> s<span class="k2">;</span>
<span class="number">  676</span>        <span class="k1">float</span> screen_X_pos_0 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  677</span>        <span class="k1">float</span> screen_Y_pos_0 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  678</span>        <span class="k1">float</span> screen_X_pos_1 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  679</span>        <span class="k1">float</span> screen_Y_pos_1 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  680</span>
<span class="number">  681</span>        <span class="k1">for</span><span class="k2">(</span>s <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> s <span class="k3">&lt;</span> v_sz<span class="k2">;</span> s<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  682</span>        <span class="k2">{</span>
<span class="number">  683</span>            <span class="k1">if</span><span class="k2">(</span>s <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  684</span>            <span class="k2">{</span>
<span class="number">  685</span>                screen_X_pos_0 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span><span class="n">2</span> <span class="k3">+</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s-1<span class="k2">)</span>.x_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  686</span>                screen_Y_pos_0 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">-</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s-1<span class="k2">)</span>.y_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  687</span>                screen_X_pos_1 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span><span class="n">2</span> <span class="k3">+</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s<span class="k2">)</span>.x_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  688</span>                screen_Y_pos_1 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">-</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s<span class="k2">)</span>.y_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  689</span>                <span class="c">// Thanks to Salem on cboard forums.</span>
<span class="number">  690</span>
<span class="number">  691</span>                <span class="k1">if</span><span class="k2">(</span>screen_X_pos_1 <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_X_pos_1 <span class="k3">&lt;</span> <span class="n">800</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos_1 <span class="k3">&lt;</span> <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos_1 <span class="k3">&gt;</span> SCREEN_1_Y_UPPER_LIMIT<span class="k2">)</span>
<span class="number">  692</span>                    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>screen_X_pos_0, screen_Y_pos_0, screen_X_pos_1, screen_Y_pos_1, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">80</span>,<span class="n">120</span>,<span class="n">120</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  693</span>            <span class="k2">}</span>
<span class="number">  694</span>        <span class="k2">}</span>
<span class="number">  695</span>    <span class="k2">}</span>
<span class="number">  696</span>
<span class="number">  697</span>    <span class="c">// RESET the Zoom_Factor if the shell is going off the screen</span>
<span class="number">  698</span>    <span class="k1">if</span><span class="k2">(</span>screen_X_pos <span class="k3">&gt;</span> <span class="n">800</span> <span class="k3">|</span><span class="k3">|</span> screen_Y_pos <span class="k3">&lt;</span> SCREEN_1_Y_UPPER_LIMIT<span class="k2">)</span>
<span class="number">  699</span>        <span class="k1">if</span><span class="k2">(</span>zf_i <span class="k3">&lt;</span> <span class="k2">(</span>ZF_SIZE <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  700</span>            zf_i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  701</span><span class="k2">}</span>
<span class="number">  702</span><span class="c">//****************************************************</span>
<span class="number">  703</span>
<span class="number">  704</span><span class="k1">void</span> draw_phase_2_screen<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>buff, <span class="k1">int</span> buffsize, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>F_font, vector<span class="k3">&lt;</span>record_position&gt; <span class="k3">*</span>posit, <span class="k1">size_t</span> v_sz, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp, button_position <span class="k3">*</span>buts_p2, <span class="k1">bool</span> imp_bool, <span class="k1">double</span> zm_f, <span class="k1">size_t</span> sel_seg<span class="k2">)</span>
<span class="number">  705</span><span class="k2">{</span>
<span class="number">  706</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">460</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  707</span>    <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  708</span>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">3</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  709</span>    <span class="k2">{</span>
<span class="number">  710</span>        <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span>buts_p2<span class="k2">[</span>i<span class="k2">]</span>.x1, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.y1, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.x2, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.y2,
<span class="number">  711</span>                          <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span>buts_p2<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,buts_p2<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,buts_p2<span class="k2">[</span>i<span class="k2">]</span>.rgb<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  712</span>        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">100</span><span class="k2">)</span>, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.x2 <span class="k3">+</span> <span class="n">5</span>, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.y1 <span class="k3">+</span> <span class="n">5</span>, ALLEGRO_ALIGN_LEFT, buts_p2<span class="k2">[</span>i<span class="k2">]</span>.label.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  713</span>    <span class="k2">}</span>
<span class="number">  714</span>
<span class="number">  715</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">5</span>.<span class="n">0</span>, <span class="n">5</span>.<span class="n">0</span>, <span class="n">795</span>.<span class="n">0</span>, <span class="n">120</span>.<span class="n">0</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">220</span>,<span class="n">175</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  716</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_UPPER_LIMIT <span class="k3">-</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>, <span class="n">800</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_UPPER_LIMIT <span class="k3">-</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">200</span>,<span class="n">200</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  717</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, SCREEN_1_Y_LOWER_LIMIT, <span class="n">800</span>.<span class="n">0</span>, SCREEN_1_Y_LOWER_LIMIT, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">100</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  718</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">30</span><span class="k2">)</span>, <span class="n">800</span>.<span class="n">0</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">30</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">200</span>,<span class="n">200</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  719</span>
<span class="number">  720</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Analysing Segment:"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  721</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">15</span>, <span class="n">10</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  722</span>
<span class="number">  723</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%i"</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>sel_seg <span class="k2">)</span><span class="k2">;</span>
<span class="number">  724</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">350</span>, <span class="n">10</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  725</span>
<span class="number">  726</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Distance horiz to point %s"</span>,
<span class="number">  727</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(yd):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  728</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">15</span>, <span class="n">28</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  729</span>
<span class="number">  730</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  731</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.x_pos <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span><span class="k2">)</span> <span class="k2">:</span> posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.x_pos<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  732</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">350</span>, <span class="n">28</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  733</span>
<span class="number">  734</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Segment horiz distance %s"</span>,
<span class="number">  735</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(yd):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span><span class="k2">;</span>
<span class="number">  736</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">15</span>, <span class="n">46</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  737</span>
<span class="number">  738</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  739</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.x_pos <span class="k3">-</span> posit-&gt;at<span class="k2">(</span>sel_seg <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span>.x_pos<span class="k2">)</span> <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span> <span class="k2">:</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.x_pos <span class="k3">-</span> posit-&gt;at<span class="k2">(</span>sel_seg <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span>.x_pos<span class="k2">)</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  740</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">350</span>, <span class="n">46</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  741</span>
<span class="number">  742</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Altitude at point %s"</span>,
<span class="number">  743</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(yd):"</span> <span class="k2">:</span> <span class="s">"(m):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  744</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">15</span>, <span class="n">64</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  745</span>
<span class="number">  746</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  747</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.y_pos <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span><span class="k2">)</span> <span class="k2">:</span> posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.y_pos<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  748</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">350</span>, <span class="n">64</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  749</span>
<span class="number">  750</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Avg Shell Velocity %s"</span>,
<span class="number">  751</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"(ft/s):"</span> <span class="k2">:</span> <span class="s">"(m/s):"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  752</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">15</span>, <span class="n">82</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  753</span>
<span class="number">  754</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"%0.0f"</span>,
<span class="number">  755</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span><span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.velocity <span class="k3">+</span> posit-&gt;at<span class="k2">(</span>sel_seg <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span>.velocity<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">3</span>.<span class="n">281</span> <span class="k2">:</span>
<span class="number">  756</span>             <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>sel_seg<span class="k2">)</span>.velocity <span class="k3">+</span> posit-&gt;at<span class="k2">(</span>sel_seg <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span>.velocity<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  757</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">350</span>, <span class="n">82</span>, ALLEGRO_ALIGN_LEFT, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  758</span>
<span class="number">  759</span>    <span class="c">//************************************************</span>
<span class="number">  760</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"Display Width Scale: %0.1f %s"</span>,
<span class="number">  761</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="k2">(</span><span class="k2">(</span>zm_f <span class="k3">*</span> <span class="n">800</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">1000</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">1</span>.<span class="n">093</span> <span class="k2">:</span> <span class="k2">(</span>zm_f <span class="k3">*</span> <span class="n">800</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">1000</span>.<span class="n">0</span><span class="k2">)</span>,
<span class="number">  762</span>            <span class="k2">(</span>imp_bool <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> ? <span class="s">"kyd"</span> <span class="k2">:</span> <span class="s">"km"</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  763</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">400</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">5</span>.<span class="n">0</span><span class="k2">)</span>, ALLEGRO_ALIGN_CENTRE, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  764</span>
<span class="number">  765</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>buff, buffsize, <span class="s">"ANANLYSE SEGMENTS (1 second intervals)"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  766</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>F_font, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">220</span>,<span class="n">240</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">400</span>, <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">37</span>.<span class="n">0</span><span class="k2">)</span>, ALLEGRO_ALIGN_CENTRE, buff<span class="k2">)</span><span class="k2">;</span>
<span class="number">  767</span>
<span class="number">  768</span>    <span class="c">/*</span>
<span class="number">  769</span><span class="c">    struct record_position</span>
<span class="number">  770</span><span class="c">{</span>
<span class="number">  771</span><span class="c">    double x_pos;</span>
<span class="number">  772</span><span class="c">    double y_pos;</span>
<span class="number">  773</span><span class="c">    double velocity;</span>
<span class="number">  774</span><span class="c">    double angle;</span>
<span class="number">  775</span><span class="c">    double flight_time;</span>
<span class="number">  776</span><span class="c">    double mach_no;</span>
<span class="number">  777</span><span class="c">    double rho;</span>
<span class="number">  778</span><span class="c">    double Cd;</span>
<span class="number">  779</span><span class="c">};</span>
<span class="number">  780</span><span class="c">*/</span>
<span class="number">  781</span>    <span class="k1">size_t</span> s<span class="k2">;</span>
<span class="number">  782</span>    <span class="k1">float</span> screen_X_pos_0 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  783</span>    <span class="k1">float</span> screen_Y_pos_0 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  784</span>    <span class="k1">float</span> screen_X_pos_1 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  785</span>    <span class="k1">float</span> screen_Y_pos_1 <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  786</span>
<span class="number">  787</span>    <span class="k1">for</span><span class="k2">(</span>s <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> s <span class="k3">&lt;</span> v_sz<span class="k2">;</span> s<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  788</span>    <span class="k2">{</span>
<span class="number">  789</span>        <span class="k1">if</span><span class="k2">(</span>s <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  790</span>        <span class="k2">{</span>
<span class="number">  791</span>            screen_X_pos_0 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span><span class="n">2</span> <span class="k3">+</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s-1<span class="k2">)</span>.x_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  792</span>            screen_Y_pos_0 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">-</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s-1<span class="k2">)</span>.y_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  793</span>            screen_X_pos_1 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span><span class="n">2</span> <span class="k3">+</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s<span class="k2">)</span>.x_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  794</span>            screen_Y_pos_1 <span class="k3">=</span> <span class="k1">float</span><span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">-</span> <span class="k2">(</span>posit-&gt;at<span class="k2">(</span>s<span class="k2">)</span>.y_pos <span class="k3">/</span> zm_f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  795</span>                <span class="c">// Thanks to Salem on cboard forums.</span>
<span class="number">  796</span>
<span class="number">  797</span>            <span class="k1">if</span><span class="k2">(</span>screen_X_pos_1 <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_X_pos_1 <span class="k3">&lt;</span> <span class="n">800</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos_1 <span class="k3">&lt;</span> <span class="k2">(</span>SCREEN_1_Y_LOWER_LIMIT <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> screen_Y_pos_1 <span class="k3">&gt;</span> SCREEN_1_Y_UPPER_LIMIT<span class="k2">)</span>
<span class="number">  798</span>            <span class="k2">{</span>
<span class="number">  799</span>                <span class="k1">if</span><span class="k2">(</span>s <span class="k3">=</span><span class="k3">=</span> sel_seg<span class="k2">)</span>
<span class="number">  800</span>                <span class="k2">{</span>
<span class="number">  801</span>                    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>screen_X_pos_0, screen_Y_pos_0, screen_X_pos_1, screen_Y_pos_1, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  802</span>                <span class="k2">}</span>
<span class="number">  803</span>                <span class="k1">else</span>
<span class="number">  804</span>                <span class="k2">{</span>
<span class="number">  805</span>                    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>screen_X_pos_0, screen_Y_pos_0, screen_X_pos_1, screen_Y_pos_1, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">80</span>,<span class="n">120</span>,<span class="n">120</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  806</span>                <span class="k2">}</span>
<span class="number">  807</span>            <span class="k2">}</span>
<span class="number">  808</span>        <span class="k2">}</span>
<span class="number">  809</span>    <span class="k2">}</span>
<span class="number">  810</span>
<span class="number">  811</span>
<span class="number">  812</span><span class="k2">}</span>
<span class="number">  813</span>
<span class="number">  814</span>
<span class="number">  815</span><span class="c">//****************************************************</span>
<span class="number">  816</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  817</span><span class="k2">{</span>
<span class="number">  818</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  819</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  820</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>FPS_timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  821</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>BPS_timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  822</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  823</span>
<span class="number">  824</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp_1<span class="k2">;</span>
<span class="number">  825</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp_2<span class="k2">;</span>
<span class="number">  826</span>
<span class="number">  827</span>
<span class="number">  828</span>    <span class="k1">bool</span> mouse_down <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  829</span>    <span class="k1">int</span> mx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  830</span>    <span class="k1">int</span> my <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  831</span>    <span class="k1">size_t</span> selected_segment <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  832</span>
<span class="number">  833</span>    <span class="k1">const</span> <span class="k1">float</span> BPS <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  834</span>    <span class="k1">const</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  835</span>    <span class="k1">bool</span> geow <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span> <span class="c">// Special variable to feed the timer to mouse press repeat functions</span>
<span class="number">  836</span>
<span class="number">  837</span>    <span class="k1">bool</span> imperial <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  838</span>    <span class="c">//double gun_angle;</span>
<span class="number">  839</span>    <span class="c">//double muzzle_vel;</span>
<span class="number">  840</span>    <span class="c">//double muzzle_alt;</span>
<span class="number">  841</span>
<span class="number">  842</span>    <span class="k1">double</span> zoom_factor<span class="k2">[</span>ZF_SIZE<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">6</span>.<span class="n">25</span>, <span class="n">12</span>.<span class="n">5</span>, <span class="n">25</span>.<span class="n">0</span>, <span class="n">37</span>.<span class="n">5</span>, <span class="n">50</span>.<span class="n">0</span>, <span class="n">62</span>.<span class="n">5</span>, <span class="n">75</span>.<span class="n">0</span>, <span class="n">88</span>.<span class="n">125</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  843</span>    <span class="c">// BE CAREFUL HERE...</span>
<span class="number">  844</span>    <span class="c">// The elements MUST always be the same number of as the ZF_SIZE global.</span>
<span class="number">  845</span>    <span class="k1">int</span> zf_index <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  846</span>    <span class="c">// double zoom_factor = 25.0; // vestigial</span>
<span class="number">  847</span>    <span class="k1">double</span> trace_on <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  848</span>
<span class="number">  849</span>    <span class="k1">char</span> buffer<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  850</span>    <span class="k1">bool</span> loop <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  851</span>    <span class="k1">int</span> phase <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  852</span>    <span class="k1">int</span> button_id <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="c">// No button pressed...</span>
<span class="number">  853</span>    <span class="c">// The phase variable is used this way;</span>
<span class="number">  854</span>    <span class="c">// phase = 0 is the gun configuration screen</span>
<span class="number">  855</span>    <span class="c">// phase = 1 is the gun fired and shell in the air screen</span>
<span class="number">  856</span>    <span class="c">// phase = 2 will be the after shot screen to analyze the trajectory (TO DO)</span>
<span class="number">  857</span>    <span class="c">// phase = 3 will be a shell drag coefficient editing screen (TO DO)</span>
<span class="number">  858</span>    <span class="c">// phase = 4 will be the atmospheric parameter editing screen (TO DO)</span>
<span class="number">  859</span>    <span class="c">// Exiting phase 2 or aborting phase 1 will return to phase 0.</span>
<span class="number">  860</span>    <span class="c">// The gun parameters will be maintained, but the recorded</span>
<span class="number">  861</span>    <span class="c">// trajectory of phase 1 will be dumped and the record</span>
<span class="number">  862</span>    <span class="c">// vector cleared and resized back to 0</span>
<span class="number">  863</span>
<span class="number">  864</span>    vector<span class="k3">&lt;</span>record_position&gt; positions<span class="k2">;</span>
<span class="number">  865</span>    <span class="c">//record_position temp_position = {0}; // vestigial</span>
<span class="number">  866</span>    button_position phase_0_buttons<span class="k2">[</span><span class="n">12</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// Phase 0 button array</span>
<span class="number">  867</span>    init_phase_0_buttons<span class="k2">(</span>phase_0_buttons<span class="k2">)</span><span class="k2">;</span> <span class="c">// Phase 0 button SET ARRAY function</span>
<span class="number">  868</span>    button_position phase_2_buttons<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  869</span>    init_phase_2_buttons<span class="k2">(</span>phase_2_buttons<span class="k2">)</span><span class="k2">;</span>
<span class="number">  870</span>
<span class="number">  871</span>    al5_setup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  872</span>    al5_initialize<span class="k2">(</span><span class="k3">&amp;</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="k3">&amp;</span>display, <span class="k3">&amp;</span>event_queue, <span class="k3">&amp;</span>FPS_timer, <span class="k3">&amp;</span>BPS_timer, FPS, BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  873</span>    <span class="c">// Thanks to Matthew Leverton at allegro.cc forums.</span>
<span class="number">  874</span>
<span class="number">  875</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>bmp_1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"PE.jpg"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// Just for a laugh!</span>
<span class="number">  876</span>    <span class="k2">{</span>
<span class="number">  877</span>        bmp_1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>, <span class="n">300</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  878</span>        <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bmp_1<span class="k2">)</span><span class="k2">;</span>
<span class="number">  879</span>        <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">35</span>,<span class="n">35</span>,<span class="n">35</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  880</span>    <span class="k2">}</span>
<span class="number">  881</span>    bmp_2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>, <span class="n">140</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  882</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bmp_2<span class="k2">)</span><span class="k2">;</span>
<span class="number">  883</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">35</span>,<span class="n">35</span>,<span class="n">35</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  884</span>
<span class="number">  885</span>    <span class="c">// Make sure the correct backbuffer is selected for all future drawing operations.</span>
<span class="number">  886</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  887</span>
<span class="number">  888</span>
<span class="number">  889</span>    <span class="c">//Set some gun parameters...</span>
<span class="number">  890</span>    gun_phys.shell_FP_angle <span class="k3">=</span> <span class="k2">(</span><span class="n">5</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">*</span> M_PI<span class="k2">;</span>
<span class="number">  891</span>    gun_phys.gun_angle <span class="k3">=</span> gun_phys.shell_FP_angle<span class="k2">;</span>
<span class="number">  892</span>    <span class="c">//gun_angle = gun_phys.shell_FP_angle;</span>
<span class="number">  893</span>    gun_phys.shell_FP_degrees <span class="k3">=</span> <span class="k2">(</span>gun_phys.shell_FP_angle <span class="k3">/</span> M_PI<span class="k2">)</span> <span class="k3">*</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  894</span>    gun_phys.gun_deck_altitude <span class="k3">=</span> <span class="n">9</span>.<span class="n">8</span><span class="k2">;</span>
<span class="number">  895</span>    gun_phys.length_of_barrel <span class="k3">=</span> <span class="n">12</span>.<span class="n">15</span><span class="k2">;</span>
<span class="number">  896</span>    gun_phys.shell_diameter <span class="k3">=</span> <span class="n">35</span>.<span class="n">6</span><span class="k2">;</span>
<span class="number">  897</span>    gun_phys.shell_frontal_area <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span><span class="k2">(</span>gun_phys.shell_diameter <span class="k3">/</span> <span class="n">2</span> <span class="k3">/</span> <span class="n">100</span><span class="k2">)</span>, <span class="n">2</span><span class="k2">)</span> <span class="k3">*</span> M_PI<span class="k2">;</span>
<span class="number">  898</span>    gun_phys.shell_mass <span class="k3">=</span> <span class="n">720</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  899</span>    gun_phys.shell_velocity <span class="k3">=</span> <span class="n">757</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  900</span>    gun_phys.muzzle_velocity <span class="k3">=</span> gun_phys.shell_velocity<span class="k2">;</span>
<span class="number">  901</span>    <span class="c">//muzzle_vel = gun_phys.shell_velocity;</span>
<span class="number">  902</span>    <span class="c">//gun_phys.shell_y_pos = gun_phys.init_muzzle_position();</span>
<span class="number">  903</span>    <span class="c">//muzzle_alt = gun_phys.shell_y_pos;</span>
<span class="number">  904</span>    gun_phys.shell_y_pos <span class="k3">=</span> gun_phys.gun_deck_altitude<span class="k2">;</span>
<span class="number">  905</span>    gun_phys.shell_x_pos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  906</span>    gun_phys.flight_time_100_s <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  907</span>
<span class="number">  908</span>    gun_phys.init_muzzle_velocity_components<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  909</span>
<span class="number">  910</span>    gun_phys.elevation_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">174533</span><span class="k2">;</span>
<span class="number">  911</span>    gun_phys.elevation_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span>.<span class="n">907571</span><span class="k2">;</span>
<span class="number">  912</span>    gun_phys.bore_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">7</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  913</span>    gun_phys.bore_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">61</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  914</span>    gun_phys.velocity_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">400</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  915</span>    gun_phys.velocity_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">1500</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  916</span>    gun_phys.mass_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">5</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  917</span>    gun_phys.mass_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">1550</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  918</span>    gun_phys.deck_limits<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">3</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  919</span>    gun_phys.deck_limits<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">30</span>.<span class="n">5</span><span class="k2">;</span> <span class="c">// A shore battery, perhaps...</span>
<span class="number">  920</span>    <span class="c">// Eventually, these parameters could be set from selection of a specific gun type at the beginning</span>
<span class="number">  921</span>    <span class="c">// of the program, the data being read from a file containing the specifics for that particular gun.</span>
<span class="number">  922</span>    <span class="c">// At the moment the data corresponds to the Hipper Class German heavy cruiser. (except for the limits)</span>
<span class="number">  923</span>    <span class="c">//</span>
<span class="number">  924</span>
<span class="number">  925</span>    <span class="c">// Load txt tables...</span>
<span class="number">  926</span>    <span class="k1">if</span><span class="k2">(</span><span class="k1">false</span> <span class="k3">=</span><span class="k3">=</span> set_rho_values<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  927</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  928</span>    <span class="k1">if</span><span class="k2">(</span><span class="k1">false</span> <span class="k3">=</span><span class="k3">=</span> set_Mach_Cd_values<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  929</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  930</span>
<span class="number">  931</span>    al5_register<span class="k2">(</span><span class="k3">&amp;</span>event_queue, <span class="k3">&amp;</span>display, <span class="k3">&amp;</span>FPS_timer, <span class="k3">&amp;</span>BPS_timer<span class="k2">)</span><span class="k2">;</span> <span class="c">// Get Allegro up and running.</span>
<span class="number">  932</span>
<span class="number">  933</span>    <span class="c">//shell_position_recording(&amp;positions, (double) BPS); // put the first position in the alalysis vector</span>
<span class="number">  934</span>
<span class="number">  935</span>    <span class="k1">while</span> <span class="k2">(</span>loop<span class="k2">)</span> <span class="c">// while MAIN GAME LOOP *** STARTS HERE</span>
<span class="number">  936</span>    <span class="k2">{</span>
<span class="number">  937</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number">  938</span>        <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  939</span>
<span class="number">  940</span>        <span class="k1">switch</span><span class="k2">(</span>ev.type<span class="k2">)</span> <span class="c">// switch EV.TYPE *** STARTS HERE</span>
<span class="number">  941</span>        <span class="k2">{</span>
<span class="number">  942</span>            <span class="k1">case</span> ALLEGRO_EVENT_TIMER: <span class="c">// Catch a Timer event</span>
<span class="number">  943</span>                <span class="k1">if</span><span class="k2">(</span>ev.timer.source <span class="k3">=</span><span class="k3">=</span> BPS_timer<span class="k2">)</span> <span class="c">// If it is the logic timer...</span>
<span class="number">  944</span>                <span class="k2">{</span>
<span class="number">  945</span>                    <span class="k1">switch</span><span class="k2">(</span>phase<span class="k2">)</span> <span class="c">// switch PHASE for ALLEGRO_EVENT_TIMER BPS *** STARTS HERE</span>
<span class="number">  946</span>                    <span class="k2">{</span>
<span class="number">  947</span>                        <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number">  948</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  949</span>                            <span class="c">// case 0 *** ENDS:</span>
<span class="number">  950</span>                            <span class="c">// Unlikely there will ever be anything here, no calculations on this screen</span>
<span class="number">  951</span>
<span class="number">  952</span>                        <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number">  953</span>                            <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_x_pos <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  954</span>                            <span class="k2">{</span>
<span class="number">  955</span>                                shell_position_recording<span class="k2">(</span><span class="k3">&amp;</span>positions, <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  956</span>                            <span class="k2">}</span>
<span class="number">  957</span>
<span class="number">  958</span>                            <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_y_pos <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  959</span>                            <span class="k2">{</span>
<span class="number">  960</span>                                update_shell_trajectory<span class="k2">(</span><span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  961</span>                                <span class="k1">if</span><span class="k2">(</span>gun_phys.flight_time_100_s % <span class="n">100</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="c">// every second do a record action</span>
<span class="number">  962</span>                                <span class="k2">{</span>
<span class="number">  963</span>                                    shell_position_recording<span class="k2">(</span><span class="k3">&amp;</span>positions, <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  964</span>                                <span class="k2">}</span>
<span class="number">  965</span>                            <span class="k2">}</span>
<span class="number">  966</span>                            <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>gun_phys.shell_y_pos <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  967</span>                            <span class="k2">{</span>
<span class="number">  968</span>                                gun_phys.end_clip<span class="k2">(</span><span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  969</span>                                shell_position_recording<span class="k2">(</span><span class="k3">&amp;</span>positions, <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>BPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  970</span>                                phase <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  971</span>                            <span class="k2">}</span>
<span class="number">  972</span>
<span class="number">  973</span>
<span class="number">  974</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  975</span>                            <span class="c">// case 1 *** ENDS</span>
<span class="number">  976</span>
<span class="number">  977</span>                        default:
<span class="number">  978</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  979</span>                            <span class="c">// case 1 *** ENDS:</span>
<span class="number">  980</span>                    <span class="k2">}</span> <span class="c">// switch PHASE for ALLEGRO_EVENT_TIMER BPS *** ENDS</span>
<span class="number">  981</span>
<span class="number">  982</span>                <span class="k2">}</span>
<span class="number">  983</span>                <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.timer.source <span class="k3">=</span><span class="k3">=</span> FPS_timer<span class="k2">)</span> <span class="c">// For screen updates</span>
<span class="number">  984</span>                <span class="k2">{</span>
<span class="number">  985</span>                    geow <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// Feed out the 1/60 Timer.</span>
<span class="number">  986</span>                    <span class="k1">switch</span><span class="k2">(</span>phase<span class="k2">)</span> <span class="c">// switch PHASE for ALLEGRO_EVENT_TIMER FPS *** STARTS HERE</span>
<span class="number">  987</span>                    <span class="k2">{</span>
<span class="number">  988</span>                        <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number">  989</span>                            <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  990</span>                            draw_phase_0_screen<span class="k2">(</span>buffer, <span class="n">100</span>, <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, phase_0_buttons, bmp_1, imperial<span class="k2">)</span><span class="k2">;</span>
<span class="number">  991</span>                            <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  992</span>
<span class="number">  993</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  994</span>                            <span class="c">// case 0 *** ENDS</span>
<span class="number">  995</span>
<span class="number">  996</span>                        <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number">  997</span>                            <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  998</span>
<span class="number">  999</span>                            draw_phase_1_screen<span class="k2">(</span>buffer, <span class="n">100</span>, <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="k3">&amp;</span>positions, positions.size<span class="k2">(</span><span class="k2">)</span>, bmp_2, imperial, zoom_factor<span class="k2">[</span>zf_index<span class="k2">]</span>, zf_index, trace_on<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1000</span>
<span class="number"> 1001</span>                            <span class="c">/*al5_shell_progress_text_output(buffer,</span>
<span class="number"> 1002</span><span class="c">                                                        gun_phys.shell_x_pos,</span>
<span class="number"> 1003</span><span class="c">                                                        gun_phys.shell_y_pos,</span>
<span class="number"> 1004</span><span class="c">                                                        gun_phys.shell_FP_degrees,</span>
<span class="number"> 1005</span><span class="c">                                                        gun_phys.flight_time_100_s,</span>
<span class="number"> 1006</span><span class="c">                                                        &amp;font);</span>
<span class="number"> 1007</span><span class="c">                                                        // vestigial</span>
<span class="number"> 1008</span><span class="c">                                                        */</span>
<span class="number"> 1009</span>                            <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1010</span>
<span class="number"> 1011</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1012</span>                            <span class="c">// case 1 *** ENDS</span>
<span class="number"> 1013</span>
<span class="number"> 1014</span>                        <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span> <span class="c">// PHASE 2 Shell Flight Analysis</span>
<span class="number"> 1015</span>                            <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1016</span>                            draw_phase_2_screen<span class="k2">(</span>buffer, <span class="n">100</span>, <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="k3">&amp;</span>positions, positions.size<span class="k2">(</span><span class="k2">)</span>, bmp_2, phase_2_buttons, imperial, zoom_factor<span class="k2">[</span>zf_index<span class="k2">]</span>, selected_segment<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1017</span>                            <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1018</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1019</span>
<span class="number"> 1020</span>                        default:
<span class="number"> 1021</span>                            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1022</span>                    <span class="k2">}</span> <span class="c">// switch PHASE for ALLEGRO_EVENT_TIMER FPS *** ENDS</span>
<span class="number"> 1023</span>                <span class="k2">}</span>
<span class="number"> 1024</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1025</span>                <span class="c">// case ALLEGRO_EVENT_TIMER *** ENDS</span>
<span class="number"> 1026</span>
<span class="number"> 1027</span>            <span class="k1">case</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN:
<span class="number"> 1028</span>                <span class="k1">switch</span><span class="k2">(</span>phase<span class="k2">)</span>
<span class="number"> 1029</span>                <span class="k2">{</span>
<span class="number"> 1030</span>                    <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number"> 1031</span>                    mouse_down <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 1032</span>                    mx <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>ev.mouse.x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1033</span>                    my <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>ev.mouse.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1034</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1035</span>                    <span class="c">// case PHASE 0 for MB_DOWN *** ENDS</span>
<span class="number"> 1036</span>                    <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number"> 1037</span>                    mouse_down <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 1038</span>                    mx <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>ev.mouse.x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1039</span>                    my <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>ev.mouse.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1040</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1041</span>                <span class="k2">}</span>
<span class="number"> 1042</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1043</span>                <span class="c">// case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN *** ENDS</span>
<span class="number"> 1044</span>
<span class="number"> 1045</span>            <span class="k1">case</span> ALLEGRO_EVENT_MOUSE_BUTTON_UP:
<span class="number"> 1046</span>                mouse_down <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 1047</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1048</span>                <span class="c">// case ALLEGRO_EVENT_MOUSE_BUTTON_UP *** ENDS</span>
<span class="number"> 1049</span>
<span class="number"> 1050</span>            <span class="c">//case ALLEGRO_EVENT_MOUSE_AXES:</span>
<span class="number"> 1051</span>
<span class="number"> 1052</span>            <span class="c">//    break;</span>
<span class="number"> 1053</span>
<span class="number"> 1054</span>            <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 1055</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 1056</span>          loop <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 1057</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1058</span>            <span class="c">// case ALLEGRO_EVENT_DISPLAY_CLOSE *** ENDS</span>
<span class="number"> 1059</span>
<span class="number"> 1060</span>            default:
<span class="number"> 1061</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1062</span>        <span class="k2">}</span> <span class="c">// switch EV.TYPE *** ENDS</span>
<span class="number"> 1063</span>
<span class="number"> 1064</span>        <span class="c">//------------------------------</span>
<span class="number"> 1065</span>        <span class="c">// Other activites after EVENTS *** STARTS HERE</span>
<span class="number"> 1066</span>        <span class="k1">if</span><span class="k2">(</span>mouse_down <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number"> 1067</span>        <span class="k2">{</span>
<span class="number"> 1068</span>            <span class="k1">switch</span><span class="k2">(</span>phase<span class="k2">)</span>
<span class="number"> 1069</span>            <span class="k2">{</span>
<span class="number"> 1070</span>                <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span>
<span class="number"> 1071</span>                    button_id <span class="k3">=</span> mouse_handler<span class="k2">(</span>mx, my, phase_0_buttons, <span class="n">12</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// 12 Buttons, BE CAREFUL!</span>
<span class="number"> 1072</span>                    phase_0_action_handler<span class="k2">(</span>button_id, geow, phase, mouse_down, imperial<span class="c">/*, gun_angle*/</span><span class="c">/*, muzzle_alt*/</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1073</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1074</span>                <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number"> 1075</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1076</span>
<span class="number"> 1077</span>                <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number"> 1078</span>                    button_id <span class="k3">=</span> mouse_handler<span class="k2">(</span>mx, my, phase_2_buttons, <span class="n">3</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// 3 buttons phase 2 screen</span>
<span class="number"> 1079</span>                    phase_2_action_handler<span class="k2">(</span>button_id, geow, phase, mouse_down, positions, positions.size<span class="k2">(</span><span class="k2">)</span>, selected_segment<span class="c">/*, gun_angle, muzzle_vel*/</span><span class="c">/*, muzzle_alt*/</span>, zf_index<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1080</span>
<span class="number"> 1081</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1082</span>
<span class="number"> 1083</span>                default:
<span class="number"> 1084</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 1085</span>            <span class="k2">}</span>
<span class="number"> 1086</span>        <span class="k2">}</span>
<span class="number"> 1087</span>        <span class="k1">if</span><span class="k2">(</span>geow <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number"> 1088</span>            geow <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 1089</span>    <span class="k2">}</span> <span class="c">// while MAIN GAME LOOP *** ENDS</span>
<span class="number"> 1090</span>
<span class="number"> 1091</span>
<span class="number"> 1092</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bmp_1<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1093</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bmp_2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1094</span>    <span class="c">//al5_terminate(&amp;display, &amp;BPS_timer, &amp;FPS_timer, &amp;event_queue);</span>
<span class="number"> 1095</span>
<span class="number"> 1096</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1097</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>BPS_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1098</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>FPS_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1099</span>    <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 1100</span>
<span class="number"> 1101</span>
<span class="number"> 1102</span>   <span class="c">/* al_shutdown_image_addon();</span>
<span class="number"> 1103</span><span class="c">    al_shutdown_primitives_addon();</span>
<span class="number"> 1104</span><span class="c">    al_shutdown_ttf_addon();</span>
<span class="number"> 1105</span><span class="c">    al_shutdown_font_addon();</span>
<span class="number"> 1106</span><span class="c">  al_uninstall_mouse();</span>
<span class="number"> 1107</span><span class="c">  al_uninstall_system();*/</span>
<span class="number"> 1108</span>
<span class="number"> 1109</span>  <span class="c">/*</span>
<span class="number"> 1110</span><span class="c">  ALLEGRO_FONT *font = NULL;</span>
<span class="number"> 1111</span><span class="c">    ALLEGRO_EVENT_QUEUE *event_queue = NULL;</span>
<span class="number"> 1112</span><span class="c">    ALLEGRO_TIMER *FPS_timer = NULL;</span>
<span class="number"> 1113</span><span class="c">    ALLEGRO_TIMER *BPS_timer = NULL;</span>
<span class="number"> 1114</span><span class="c">    ALLEGRO_DISPLAY *display = NULL;</span>
<span class="number"> 1115</span><span class="c"></span>
<span class="number"> 1116</span><span class="c">    ALLEGRO_BITMAP *bmp_1;</span>
<span class="number"> 1117</span><span class="c">    ALLEGRO_BITMAP *bmp_2;</span>
<span class="number"> 1118</span><span class="c">  */</span>
<span class="number"> 1119</span>
<span class="number"> 1120</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 1121</span><span class="k2">}</span>
<span class="number"> 1122</span>
<span class="number"> 1123</span><span class="c">// The Console Prototype Pre-Alpha V-1.0</span>
<span class="number"> 1124</span><span class="c">/*int main()</span>
<span class="number"> 1125</span><span class="c">{</span>
<span class="number"> 1126</span><span class="c">    double BPS = 100;</span>
<span class="number"> 1127</span><span class="c">    int BPS_seconds = 0;</span>
<span class="number"> 1128</span><span class="c">    int seconds = 0;</span>
<span class="number"> 1129</span><span class="c">    cout &lt;&lt; "Set elevation angle: ";</span>
<span class="number"> 1130</span><span class="c">    cin &gt;&gt; gun_phys.shell_FP_degrees;</span>
<span class="number"> 1131</span><span class="c">    gun_phys.shell_FP_angle = (gun_phys.shell_FP_degrees / 180) * M_PI;</span>
<span class="number"> 1132</span><span class="c">    cout &lt;&lt; "In radians that is: " &lt;&lt; gun_phys.shell_FP_angle &lt;&lt; endl;</span>
<span class="number"> 1133</span><span class="c">    cout &lt;&lt; "Suggested data is for Prinz Eugen's 8 inch main guns." &lt;&lt; endl;</span>
<span class="number"> 1134</span><span class="c">    cout &lt;&lt; "Input muzzle velocity in m/s (eg: 925): ";</span>
<span class="number"> 1135</span><span class="c">    cin &gt;&gt; gun_phys.shell_velocity;</span>
<span class="number"> 1136</span><span class="c">    cout &lt;&lt; "Input shell mass in kg (eg: 122): ";</span>
<span class="number"> 1137</span><span class="c">    cin &gt;&gt; gun_phys.shell_mass;</span>
<span class="number"> 1138</span><span class="c">    cout &lt;&lt; "Input shell diameter in cm (eg: 20.3): ";</span>
<span class="number"> 1139</span><span class="c">    cin &gt;&gt; gun_phys.shell_diameter;</span>
<span class="number"> 1140</span><span class="c">    gun_phys.shell_frontal_area = pow((gun_phys.shell_diameter / 2 / 100), 2) * M_PI;</span>
<span class="number"> 1141</span><span class="c">    cout &lt;&lt; "Input height of gun turret in meters (eg: 9.75): ";</span>
<span class="number"> 1142</span><span class="c">    cin &gt;&gt; gun_phys.gun_deck_altitude;</span>
<span class="number"> 1143</span><span class="c">    cout &lt;&lt; endl;</span>
<span class="number"> 1144</span><span class="c"></span>
<span class="number"> 1145</span><span class="c"></span>
<span class="number"> 1146</span><span class="c">    if(false == set_rho_values())</span>
<span class="number"> 1147</span><span class="c">        return -1;</span>
<span class="number"> 1148</span><span class="c"></span>
<span class="number"> 1149</span><span class="c">    if(false == set_Mach_Cd_values())</span>
<span class="number"> 1150</span><span class="c">        return -1;</span>
<span class="number"> 1151</span><span class="c"></span>
<span class="number"> 1152</span><span class="c">    gun_phys.shell_y_pos = gun_phys.init_muzzle_position();</span>
<span class="number"> 1153</span><span class="c">    gun_phys.shell_x_pos = 0;</span>
<span class="number"> 1154</span><span class="c"></span>
<span class="number"> 1155</span><span class="c">    while(gun_phys.shell_y_pos &gt; 0)</span>
<span class="number"> 1156</span><span class="c">    {</span>
<span class="number"> 1157</span><span class="c">        gun_phys.rho_at_alt = gun_phys.Rho_Calculator();</span>
<span class="number"> 1158</span><span class="c">        //cout &lt;&lt; "Rho interpolation okay..." &lt;&lt; gun_phys.rho_at_alt &lt;&lt; endl;</span>
<span class="number"> 1159</span><span class="c">        gun_phys.shell_Mach = gun_phys.Mach_Calculator();</span>
<span class="number"> 1160</span><span class="c">        //cout &lt;&lt; "Mach calc okay... " &lt;&lt; gun_phys.shell_Mach &lt;&lt; endl;</span>
<span class="number"> 1161</span><span class="c">        gun_phys.Cd = gun_phys.Cd_Calculator();</span>
<span class="number"> 1162</span><span class="c">        //cout &lt;&lt; "Cd interpolation okay..." &lt;&lt; endl;</span>
<span class="number"> 1163</span><span class="c">        gun_phys.shell_velocity = gun_phys.New_Velocity_Calculator(BPS);</span>
<span class="number"> 1164</span><span class="c">        //cout &lt;&lt; "Velocity okay..." &lt;&lt; endl;</span>
<span class="number"> 1165</span><span class="c">        gun_phys.update_shell_position(BPS);</span>
<span class="number"> 1166</span><span class="c">        //cout &lt;&lt; "Shell position okay (X, Y)... " &lt;&lt; gun_phys.shell_x_pos &lt;&lt; ", " &lt;&lt; gun_phys.shell_y_pos &lt;&lt; endl;</span>
<span class="number"> 1167</span><span class="c">        gun_phys.shell_FP_degrees = (gun_phys.shell_FP_angle / M_PI) * 180;</span>
<span class="number"> 1168</span><span class="c"></span>
<span class="number"> 1169</span><span class="c"></span>
<span class="number"> 1170</span><span class="c">        BPS_seconds++;</span>
<span class="number"> 1171</span><span class="c">        if(BPS_seconds &gt;= BPS)</span>
<span class="number"> 1172</span><span class="c">        {</span>
<span class="number"> 1173</span><span class="c">            seconds++;</span>
<span class="number"> 1174</span><span class="c">            BPS_seconds = 0;</span>
<span class="number"> 1175</span><span class="c">        }</span>
<span class="number"> 1176</span><span class="c"></span>
<span class="number"> 1177</span><span class="c"></span>
<span class="number"> 1178</span><span class="c">        cout &lt;&lt; "Seconds of flight: " &lt;&lt; seconds &lt;&lt; "." &lt;&lt; BPS_seconds &lt;&lt; endl;</span>
<span class="number"> 1179</span><span class="c">        cout &lt;&lt; "Shell altitude: " &lt;&lt; gun_phys.shell_y_pos &lt;&lt; " m" &lt;&lt; endl;</span>
<span class="number"> 1180</span><span class="c">        cout &lt;&lt; "Shell range: " &lt;&lt; gun_phys.shell_x_pos &lt;&lt; " m" &lt;&lt; endl;</span>
<span class="number"> 1181</span><span class="c">        cout &lt;&lt; "Shell Mach: " &lt;&lt; gun_phys.shell_Mach &lt;&lt; endl;</span>
<span class="number"> 1182</span><span class="c">        cout &lt;&lt; "Shell true Velocity (m/s): " &lt;&lt; gun_phys.shell_velocity &lt;&lt; endl;</span>
<span class="number"> 1183</span><span class="c">        cout &lt;&lt; "Shell flight path angle: " &lt;&lt; gun_phys.shell_FP_degrees &lt;&lt; endl;</span>
<span class="number"> 1184</span><span class="c">        cout &lt;&lt; "Shell Cd: " &lt;&lt; gun_phys.Cd &lt;&lt; endl &lt;&lt; endl;</span>
<span class="number"> 1185</span><span class="c"></span>
<span class="number"> 1186</span><span class="c">        if(gun_phys.shell_y_pos &lt; 0)</span>
<span class="number"> 1187</span><span class="c">        {</span>
<span class="number"> 1188</span><span class="c">            gun_phys.end_clip();</span>
<span class="number"> 1189</span><span class="c">            cout &lt;&lt; "Corrected X position: " &lt;&lt; gun_phys.shell_x_pos &lt;&lt; endl &lt;&lt; endl;</span>
<span class="number"> 1190</span><span class="c">        }</span>
<span class="number"> 1191</span><span class="c"></span>
<span class="number"> 1192</span><span class="c">        usleep(useconds_t(1000000 / BPS));</span>
<span class="number"> 1193</span><span class="c">    }</span>
<span class="number"> 1194</span><span class="c"></span>
<span class="number"> 1195</span><span class="c">    return 0;</span>
<span class="number"> 1196</span><span class="c">}</span>
<span class="number"> 1197</span><span class="c"></span>
<span class="number"> 1198</span><span class="c">// Ah! Things were so easy then!</span>
<span class="number"> 1199</span><span class="c">*/</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Sun, 30 Oct 2011 11:30:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for your help and patience with this, someone972. That was it, indeed. </p><p>Turns out I was in such a hurry to get out of Windows and MSVC++ and back to Debian and CodeBlocks that I trusted my memory of more than a year ago and mixed up sprintf_s() with the WINAPI function DrawText(), which can use strlen(). But even then, the syntax was butt-backwards. My fault entirely for not treating the platform with it&#39;s due respect and review the msdn docs.</p><p>Yes, looking at it now I, too, am surprised that it compiled at all, but I assure you the code you got from that download was the very same code that did compile on MSVC++ 2008. If it hadn&#39;t, I would have been forced to recap and probably would not have posted this shamefully embarrassing thread at all... <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>Again, thank you very much!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (KeithS)</author>
		<pubDate>Mon, 31 Oct 2011 03:23:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve made that sort of mistake many times, as have many others, so you aren&#39;t alone in that <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />. I like finding bugs in code as well, since it helps me in my own code and is also just fun, so thanks for the post <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Mon, 31 Oct 2011 09:05:17 +0000</pubDate>
	</item>
</rss>
