<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Isometric Tile engine</title>
		<link>http://www.allegro.cc/forums/view/608772</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 09 Nov 2011 17:37:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m gonna write an isometric tile engine, and I decided to make it a public project so anyone can help, learn from it , use it.<br />Good idea&#39;s are most welcome.</p><p>starting code:</p><p>HEADER
</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">/*</span>
<span class="number">   2</span><span class="c">Copyright (C) 2011  E.J.M. Martens</span>
<span class="number">   3</span><span class="c"></span>
<span class="number">   4</span><span class="c">This program is free software; you can redistribute it and/or</span>
<span class="number">   5</span><span class="c">modify it under the terms of the GNU General Public License</span>
<span class="number">   6</span><span class="c">as published by the Free Software Foundation; either version 2</span>
<span class="number">   7</span><span class="c">of the License, or (at your option) any later version.</span>
<span class="number">   8</span><span class="c"></span>
<span class="number">   9</span><span class="c">This program is distributed in the hope that it will be useful,</span>
<span class="number">  10</span><span class="c">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="number">  11</span><span class="c">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span class="number">  12</span><span class="c">GNU General Public License for more details.</span>
<span class="number">  13</span><span class="c"></span>
<span class="number">  14</span><span class="c">You should have received a copy of the GNU General Public License</span>
<span class="number">  15</span><span class="c">along with this program; if not, write to the Free Software</span>
<span class="number">  16</span><span class="c">Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.</span>
<span class="number">  17</span><span class="c"></span>
<span class="number">  18</span><span class="c"></span>
<span class="number">  19</span><span class="c"></span>
<span class="number">  20</span><span class="c">================================================================================</span>
<span class="number">  21</span><span class="c"></span>
<span class="number">  22</span><span class="c">This file defines a basic tile and tileengine for isometric drawing</span>
<span class="number">  23</span><span class="c"></span>
<span class="number">  24</span><span class="c"></span>
<span class="number">  25</span><span class="c"></span>
<span class="number">  26</span><span class="c">History:</span>
<span class="number">  27</span><span class="c"></span>
<span class="number">  28</span><span class="c">08-11-2011 First Setup</span>
<span class="number">  29</span><span class="c"></span>
<span class="number">  30</span><span class="c"></span>
<span class="number">  31</span><span class="c"></span>
<span class="number">  32</span><span class="c">*/</span>
<span class="number">  33</span>
<span class="number">  34</span>
<span class="number">  35</span><span class="p">#ifndef _ISOENGINE</span>
<span class="number">  36</span><span class="p">#define _ISOENGINE</span>
<span class="number">  37</span>
<span class="number">  38</span><span class="p">#include &lt;vector&gt;  </span>
<span class="number">  39</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  40</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  41</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  42</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="k1">class</span> BasicEngine<span class="k2">;</span>
<span class="number">  45</span>
<span class="number">  46</span><span class="k1">class</span> BasicTile
<span class="number">  47</span><span class="k2">{</span>
<span class="number">  48</span>   private:
<span class="number">  49</span>     <span class="c">// pointer to engine</span>
<span class="number">  50</span>     BasicEngine <span class="k3">*</span> m_pEngine<span class="k2">;</span>
<span class="number">  51</span>     
<span class="number">  52</span>     <span class="c">// Pointer to a bitmap for this tile</span>
<span class="number">  53</span>     <span class="c">// This can be a tilesheet or a single tile;</span>
<span class="number">  54</span>     <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> m_pBitmap<span class="k2">;</span>
<span class="number">  55</span>
<span class="number">  56</span>     <span class="c">// A drawing offset</span>
<span class="number">  57</span>     <span class="k1">int</span> m_nOffsetX<span class="k2">;</span>
<span class="number">  58</span>     <span class="k1">int</span> m_nOffsetY<span class="k2">;</span>
<span class="number">  59</span>    
<span class="number">  60</span>     <span class="c">// offset in a tilesheet -1 if bitmap is a single tile</span>
<span class="number">  61</span>     <span class="k1">int</span> m_nBitmapOffsetX<span class="k2">;</span>
<span class="number">  62</span>     <span class="k1">int</span> m_nBitmapOffsetY<span class="k2">;</span>
<span class="number">  63</span>
<span class="number">  64</span>     protected:
<span class="number">  65</span>     <span class="c">// draw the tile, this is used by Basic Engine</span>
<span class="number">  66</span>     <span class="c">// draws placeholders if no bitmap was set</span>
<span class="number">  67</span>     <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span><span class="k1">int</span> a_nMapX,<span class="k1">int</span> a_nMapY<span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>     public:
<span class="number">  70</span>     <span class="c">// set the bitmap for this tile  </span>
<span class="number">  71</span>     <span class="k1">void</span> SetBitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> a_pBitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>     <span class="k1">void</span> SetOffset<span class="k2">(</span><span class="k1">int</span> a_nOffsetX,<span class="k1">int</span> a_nOffsetY<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>    
<span class="number">  74</span>     <span class="c">// constructor</span>
<span class="number">  75</span>     BasicTile<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>
<span class="number">  77</span>     <span class="c">// destructor</span>
<span class="number">  78</span>     <span class="k1">virtual</span> ~BasicTile<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>     <span class="k1">friend</span> <span class="k1">class</span> BasicEngine<span class="k2">;</span>
<span class="number">  81</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  82</span>
<span class="number">  83</span>
<span class="number">  84</span><span class="k1">class</span> BasicEngine
<span class="number">  85</span><span class="k2">{</span>
<span class="number">  86</span>    private:
<span class="number">  87</span>    
<span class="number">  88</span>    <span class="c">// nested vector to hold the tiles</span>
<span class="number">  89</span>    std::vector<span class="k3">&lt;</span>std::vector<span class="k3">&lt;</span> BasicTile <span class="k3">*</span> <span class="k3">&gt;</span> <span class="k3">&gt;</span>m_lstCell<span class="k2">;</span>
<span class="number">  90</span>
<span class="number">  91</span>    <span class="c">// the width of every tile</span>
<span class="number">  92</span>    <span class="k1">int</span> m_nTilewidth<span class="k2">;</span>
<span class="number">  93</span>
<span class="number">  94</span>    <span class="c">// the height of every tile</span>
<span class="number">  95</span>    <span class="k1">int</span> m_nTileHeight<span class="k2">;</span>
<span class="number">  96</span>
<span class="number">  97</span>    <span class="c">// The Y distance between two rows of tiles (usually 1/4 tileheight)</span>
<span class="number">  98</span>    <span class="k1">int</span> m_nYStep<span class="k2">;</span>
<span class="number">  99</span>    
<span class="number"> 100</span>    <span class="c">// the screencenter </span>
<span class="number"> 101</span>    <span class="k1">int</span> SCREENCENTER_X<span class="k2">;</span>
<span class="number"> 102</span>    <span class="k1">int</span> SCREENCENTER_Y<span class="k2">;</span>
<span class="number"> 103</span>    
<span class="number"> 104</span>    protected:
<span class="number"> 105</span>
<span class="number"> 106</span>    public:
<span class="number"> 107</span>
<span class="number"> 108</span>    <span class="c">// Draw the tilemap looking at centerpoint a_nCamX, a_nCamY</span>
<span class="number"> 109</span>    <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span><span class="k1">int</span> a_nCamx,<span class="k1">int</span> a_nCamy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span>    <span class="c">// Generate a testmap</span>
<span class="number"> 112</span>    <span class="k1">virtual</span> <span class="k1">void</span> GenerateTest<span class="k2">(</span><span class="k1">int</span> a_nWidth, <span class="k1">int</span> a_nHeight, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> a_pBitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>    <span class="c">// constructor</span>
<span class="number"> 115</span>    BasicEngine<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>
<span class="number"> 117</span>   <span class="c">// destructor</span>
<span class="number"> 118</span>   <span class="k1">virtual</span> ~BasicEngine<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>   <span class="k1">friend</span> <span class="k1">class</span> BasicTile<span class="k2">;</span>
<span class="number"> 121</span>      
<span class="number"> 122</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 123</span>
<span class="number"> 124</span><span class="p">#endif</span>
</div></div><p>


CPP
</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="c">/*</span>
<span class="number">   3</span><span class="c">Copyright (C) 2011  E.J.M. Martens</span>
<span class="number">   4</span><span class="c"></span>
<span class="number">   5</span><span class="c">This program is free software; you can redistribute it and/or</span>
<span class="number">   6</span><span class="c">modify it under the terms of the GNU General Public License</span>
<span class="number">   7</span><span class="c">as published by the Free Software Foundation; either version 2</span>
<span class="number">   8</span><span class="c">of the License, or (at your option) any later version.</span>
<span class="number">   9</span><span class="c"></span>
<span class="number">  10</span><span class="c">This program is distributed in the hope that it will be useful,</span>
<span class="number">  11</span><span class="c">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="number">  12</span><span class="c">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span class="number">  13</span><span class="c">GNU General Public License for more details.</span>
<span class="number">  14</span><span class="c"></span>
<span class="number">  15</span><span class="c">You should have received a copy of the GNU General Public License</span>
<span class="number">  16</span><span class="c">along with this program; if not, write to the Free Software</span>
<span class="number">  17</span><span class="c">Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.</span>
<span class="number">  18</span><span class="c"></span>
<span class="number">  19</span><span class="c"></span>
<span class="number">  20</span><span class="c"></span>
<span class="number">  21</span><span class="c">================================================================================</span>
<span class="number">  22</span><span class="c"></span>
<span class="number">  23</span><span class="c">This file implements a basic tile and tileengine for isometric drawing</span>
<span class="number">  24</span><span class="c"></span>
<span class="number">  25</span><span class="c"></span>
<span class="number">  26</span><span class="c">History:</span>
<span class="number">  27</span><span class="c"></span>
<span class="number">  28</span><span class="c">08-11-2011 First Setup</span>
<span class="number">  29</span><span class="c"></span>
<span class="number">  30</span><span class="c"></span>
<span class="number">  31</span><span class="c"></span>
<span class="number">  32</span><span class="c">*/</span>
<span class="number">  33</span>
<span class="number">  34</span>
<span class="number">  35</span>
<span class="number">  36</span>
<span class="number">  37</span><span class="p">#include "stdafx.h"</span>
<span class="number">  38</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  39</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  40</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  41</span><span class="p">#include "IsoEngine.h"</span>
<span class="number">  42</span>
<span class="number">  43</span>
<span class="number">  44</span>
<span class="number">  45</span><span class="c">//--------------------------------------------------------------</span>
<span class="number">  46</span><span class="c">// Constructor  : BasicTile.BasicTile</span>
<span class="number">  47</span><span class="c">// Description  : Constructs a tile</span>
<span class="number">  48</span><span class="c">//-------------------------------------------------------------</span>
<span class="number">  49</span>BasicTile::BasicTile<span class="k2">(</span><span class="k2">)</span>
<span class="number">  50</span><span class="k2">{</span>
<span class="number">  51</span>  m_nOffsetX      <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span>
<span class="number">  52</span>  m_nOffsetY      <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span>
<span class="number">  53</span>  m_nBitmapOffsetX  <span class="k3">=</span>  <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  54</span>  m_nBitmapOffsetY  <span class="k3">=</span>  <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  55</span>  m_pBitmap      <span class="k3">=</span>  NULL<span class="k2">;</span>
<span class="number">  56</span><span class="k2">}</span>
<span class="number">  57</span>
<span class="number">  58</span>
<span class="number">  59</span><span class="c">//--------------------------------------------------------------</span>
<span class="number">  60</span><span class="c">// Destructor   : BasicTile.~BasicTile</span>
<span class="number">  61</span><span class="c">// Description  : Destroys a tile</span>
<span class="number">  62</span><span class="c">//-------------------------------------------------------------</span>
<span class="number">  63</span>BasicTile::~BasicTile<span class="k2">(</span><span class="k2">)</span>
<span class="number">  64</span><span class="k2">{</span>
<span class="number">  65</span>
<span class="number">  66</span>
<span class="number">  67</span><span class="k2">}</span>
<span class="number">  68</span>
<span class="number">  69</span><span class="c">//--------------------------------------------------------------</span>
<span class="number">  70</span><span class="c">// Function     : BasicTile.SetOffset</span>
<span class="number">  71</span><span class="c">// Description  : Set's the grabbing offset for a tile</span>
<span class="number">  72</span><span class="c">// Virtual      : No</span>
<span class="number">  73</span><span class="c">//-------------------------------------------------------------</span>
<span class="number">  74</span><span class="k1">void</span> BasicTile::SetOffset<span class="k2">(</span><span class="k1">int</span> a_nOffsetX,<span class="k1">int</span> a_nOffsetY<span class="k2">)</span>
<span class="number">  75</span><span class="k2">{</span>
<span class="number">  76</span>   m_nBitmapOffsetX <span class="k3">=</span> a_nOffsetX<span class="k2">;</span>
<span class="number">  77</span>   m_nBitmapOffsetY <span class="k3">=</span> a_nOffsetY<span class="k2">;</span>
<span class="number">  78</span><span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span>
<span class="number">  81</span><span class="c">//--------------------------------------------------------------</span>
<span class="number">  82</span><span class="c">// Function     : BasicTile.SetBitmap</span>
<span class="number">  83</span><span class="c">// Description  : Set's the bitmap for a tile</span>
<span class="number">  84</span><span class="c">// Virtual      : No</span>
<span class="number">  85</span><span class="c">//-------------------------------------------------------------</span>
<span class="number">  86</span><span class="k1">void</span> BasicTile::SetBitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> a_pBitmap<span class="k2">)</span>
<span class="number">  87</span><span class="k2">{</span>
<span class="number">  88</span>   m_pBitmap <span class="k3">=</span> a_pBitmap<span class="k2">;</span>
<span class="number">  89</span><span class="k2">}</span>
<span class="number">  90</span>
<span class="number">  91</span>
<span class="number">  92</span><span class="c">//--------------------------------------------------------------</span>
<span class="number">  93</span><span class="c">// Function     : BasicTile.Draw</span>
<span class="number">  94</span><span class="c">// Description  : Draws a tile at position a_nScreenX, a_nScreenY</span>
<span class="number">  95</span><span class="c">// Virtual      : Yes</span>
<span class="number">  96</span><span class="c">//-------------------------------------------------------------</span>
<span class="number">  97</span><span class="k1">void</span> BasicTile::Draw<span class="k2">(</span><span class="k1">int</span> a_nScreenX,<span class="k1">int</span> a_nScreenY<span class="k2">)</span>
<span class="number">  98</span><span class="k2">{</span>
<span class="number">  99</span>  a_nScreenX<span class="k3">+</span><span class="k3">=</span>m_nOffsetX<span class="k2">;</span>
<span class="number"> 100</span>  a_nScreenY<span class="k3">+</span><span class="k3">=</span>m_nOffsetY<span class="k2">;</span>
<span class="number"> 101</span>
<span class="number"> 102</span>  <span class="k1">if</span> <span class="k2">(</span>m_pBitmap <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 103</span>  <span class="k2">{</span>
<span class="number"> 104</span>    <span class="c">// No bitmap, draw a placeholder </span>
<span class="number"> 105</span>    
<span class="number"> 106</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> Fill <span class="k3">=</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">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> Border <span class="k3">=</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">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>    
<span class="number"> 109</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_triangle"><span class="a">al_draw_filled_triangle</span></a><span class="k2">(</span>a_nScreenX,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep, a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth, a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep,a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY,Fill<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_triangle"><span class="a">al_draw_filled_triangle</span></a><span class="k2">(</span>a_nScreenX,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep, a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth, a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep,a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,Fill<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>a_nScreenX,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep, a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY,Border, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY,a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep,Border, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep,a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,Border, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>    <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>a_nScreenX<span class="k3">+</span>m_pEngine-&gt;m_nTilewidth<span class="k3">/</span><span class="n">2</span>,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep<span class="k3">*</span><span class="n">2</span>,a_nScreenX,a_nScreenY<span class="k3">+</span>m_pEngine-&gt;m_nYStep,Border, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>
<span class="number"> 116</span>  <span class="k2">}</span>
<span class="number"> 117</span>  <span class="k1">else</span>
<span class="number"> 118</span>  <span class="k2">{</span>
<span class="number"> 119</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>m_nBitmapOffsetX <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>m_nBitmapOffsetY <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 120</span>    <span class="k2">{</span>
<span class="number"> 121</span>      <span class="c">// single tile</span>
<span class="number"> 122</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>m_pBitmap, a_nScreenX, a_nScreenY,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>    <span class="k2">}</span>
<span class="number"> 124</span>    <span class="k1">else</span>
<span class="number"> 125</span>    <span class="k2">{</span>
<span class="number"> 126</span>      <span class="c">// tilesheet</span>
<span class="number"> 127</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>m_pBitmap,m_nBitmapOffsetX, m_nBitmapOffsetY, m_pEngine-&gt;m_nTilewidth, m_pEngine-&gt;m_nTileHeight, a_nScreenX, a_nScreenY,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>    <span class="k2">}</span>
<span class="number"> 129</span>
<span class="number"> 130</span>  <span class="k2">}</span>
<span class="number"> 131</span><span class="k2">}</span>
<span class="number"> 132</span>
<span class="number"> 133</span>
<span class="number"> 134</span>
<span class="number"> 135</span>
<span class="number"> 136</span>
<span class="number"> 137</span><span class="c">//--------------------------------------------------------------</span>
<span class="number"> 138</span><span class="c">// Constructor  : BasicEngine::BasicEngine</span>
<span class="number"> 139</span><span class="c">// Description  : Constructs a tileengine</span>
<span class="number"> 140</span><span class="c">//-------------------------------------------------------------</span>
<span class="number"> 141</span>BasicEngine::BasicEngine<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 142</span><span class="k2">{</span>
<span class="number"> 143</span>  m_nTilewidth<span class="k3">=</span><span class="n">64</span><span class="k2">;</span>
<span class="number"> 144</span>  m_nTileHeight<span class="k3">=</span><span class="n">64</span><span class="k2">;</span>
<span class="number"> 145</span>  m_nYStep <span class="k3">=</span> m_nTileHeight<span class="k3">/</span><span class="n">4</span><span class="k2">;</span>
<span class="number"> 146</span>  SCREENCENTER_X <span class="k3">=</span> <span class="n">800</span><span class="k2">;</span>
<span class="number"> 147</span>  SCREENCENTER_Y <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span>
<span class="number"> 148</span><span class="k2">}</span>
<span class="number"> 149</span>
<span class="number"> 150</span>
<span class="number"> 151</span><span class="c">//--------------------------------------------------------------</span>
<span class="number"> 152</span><span class="c">// Destructor   : BasicEngine::~BasicEngine</span>
<span class="number"> 153</span><span class="c">// Description  : frees all used memory</span>
<span class="number"> 154</span><span class="c">//-------------------------------------------------------------</span>
<span class="number"> 155</span>BasicEngine::~BasicEngine<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 156</span><span class="k2">{</span>
<span class="number"> 157</span>  std::vector<span class="k3">&lt;</span>std::vector<span class="k3">&lt;</span> BasicTile <span class="k3">*</span> <span class="k3">&gt;</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator p<span class="k3">=</span>m_lstCell.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>  <span class="k1">while</span> <span class="k2">(</span>p<span class="k3">!</span><span class="k3">=</span>m_lstCell.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 159</span>  <span class="k2">{</span>
<span class="number"> 160</span>    std::vector<span class="k3">&lt;</span> BasicTile <span class="k3">*</span> <span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator q <span class="k3">=</span> <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>    <span class="k1">while</span> <span class="k2">(</span>q<span class="k3">!</span><span class="k3">=</span><span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span>.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 162</span>    <span class="k2">{</span>
<span class="number"> 163</span>      BasicTile <span class="k3">*</span> hulp <span class="k3">=</span> <span class="k3">*</span>q<span class="k2">;</span>
<span class="number"> 164</span>      <span class="k2">(</span><span class="k3">*</span>p<span class="k2">)</span>.erase<span class="k2">(</span>q<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>      <span class="k1">delete</span> hulp<span class="k2">;</span>
<span class="number"> 166</span>    <span class="k2">}</span>
<span class="number"> 167</span>    m_lstCell.erase<span class="k2">(</span>p<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>  <span class="k2">}</span>
<span class="number"> 169</span><span class="k2">}</span>
<span class="number"> 170</span>
<span class="number"> 171</span>
<span class="number"> 172</span><span class="c">//--------------------------------------------------------------</span>
<span class="number"> 173</span><span class="c">// Function     : BasicEngine.Draw</span>
<span class="number"> 174</span><span class="c">// Description  : Draws a tilemap centered around a_nCamx,a_nCamy</span>
<span class="number"> 175</span><span class="c">// Virtual      : Yes</span>
<span class="number"> 176</span><span class="c">//-------------------------------------------------------------</span>
<span class="number"> 177</span><span class="k1">void</span> BasicEngine::Draw<span class="k2">(</span><span class="k1">int</span> a_nCamx,<span class="k1">int</span> a_nCamy<span class="k2">)</span>
<span class="number"> 178</span><span class="k2">{</span>
<span class="number"> 179</span>  <span class="k1">int</span> DrawX<span class="k2">;</span>
<span class="number"> 180</span>  <span class="k1">int</span> DrawY<span class="k2">;</span>
<span class="number"> 181</span>  <span class="k1">unsigned</span> <span class="k1">int</span> startx,endx,starty,endy<span class="k2">;</span>
<span class="number"> 182</span>
<span class="number"> 183</span>  
<span class="number"> 184</span>  <span class="c">//Calculate start and end for nested loops</span>
<span class="number"> 185</span>  startx<span class="k3">=</span><span class="k2">(</span>a_nCamx-SCREENCENTER_X<span class="k2">)</span><span class="k3">/</span>m_nTilewidth<span class="k2">;</span>
<span class="number"> 186</span>  <span class="k1">if</span> <span class="k2">(</span>startx&gt;m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> startx<span class="k3">=</span>m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>
<span class="number"> 188</span>  endx<span class="k3">=</span><span class="k2">(</span><span class="k2">(</span>a_nCamx<span class="k3">+</span>SCREENCENTER_X<span class="k2">)</span><span class="k3">/</span>m_nTilewidth<span class="k2">)</span><span class="k3">+</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 189</span>  <span class="k1">if</span> <span class="k2">(</span>endx&gt;m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> endx<span class="k3">=</span>m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>
<span class="number"> 191</span>  starty<span class="k3">=</span><span class="k2">(</span><span class="k2">(</span>a_nCamy-SCREENCENTER_Y<span class="k2">)</span><span class="k3">/</span>m_nYStep<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>  <span class="k1">if</span> <span class="k2">(</span>starty&gt;m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> starty<span class="k3">=</span>m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>
<span class="number"> 194</span>  endy<span class="k3">=</span><span class="k2">(</span><span class="k2">(</span>a_nCamy<span class="k3">+</span>SCREENCENTER_Y<span class="k2">)</span><span class="k3">/</span>m_nYStep<span class="k2">)</span><span class="k3">+</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 195</span>  <span class="k1">if</span> <span class="k2">(</span>endy&gt;m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> endy<span class="k3">=</span>m_lstCell.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>
<span class="number"> 197</span>  <span class="k1">int</span> sy<span class="k3">=</span><span class="k2">(</span>starty<span class="k3">*</span>m_nYStep<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>  <span class="k1">int</span> h_sx<span class="k3">=</span>startx<span class="k3">*</span>m_nTilewidth<span class="k2">;</span>
<span class="number"> 199</span>  <span class="k1">int</span> sx<span class="k2">;</span>
<span class="number"> 200</span>
<span class="number"> 201</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> y<span class="k3">=</span>starty<span class="k2">;</span>y<span class="k3">&lt;</span>endy<span class="k2">;</span>y<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>    sx<span class="k3">=</span>h_sx<span class="k2">;</span>
<span class="number"> 204</span>    <span class="k1">if</span> <span class="k2">(</span>y % <span class="n">2</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 205</span>    <span class="k2">{</span>
<span class="number"> 206</span>      sx<span class="k3">+</span><span class="k3">=</span>m_nTilewidth<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 207</span>    <span class="k2">}</span>
<span class="number"> 208</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> x<span class="k3">=</span>startx<span class="k2">;</span>x<span class="k3">&lt;</span>endx<span class="k2">;</span>x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 209</span>        <span class="k2">{</span>
<span class="number"> 210</span>      DrawX<span class="k3">=</span><span class="k1">int</span><span class="k2">(</span>SCREENCENTER_X<span class="k3">+</span><span class="k2">(</span>sx-a_nCamx<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>      DrawY<span class="k3">=</span><span class="k1">int</span><span class="k2">(</span>SCREENCENTER_Y<span class="k3">+</span><span class="k2">(</span>sy-a_nCamy<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>      sx<span class="k3">+</span><span class="k3">=</span><span class="n">64</span><span class="k2">;</span>
<span class="number"> 213</span>      m_lstCell<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>DrawX,DrawY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>        <span class="k2">}</span>
<span class="number"> 215</span>    sy<span class="k3">+</span><span class="k3">=</span>m_nYStep<span class="k2">;</span>
<span class="number"> 216</span>    <span class="k2">}</span>
<span class="number"> 217</span>
<span class="number"> 218</span><span class="k2">}</span>
<span class="number"> 219</span>
<span class="number"> 220</span>
<span class="number"> 221</span><span class="c">//-----------------------------------------------------------------------------</span>
<span class="number"> 222</span><span class="c">// Function     : BasicEngine.GenerateTest</span>
<span class="number"> 223</span><span class="c">// Description  : Generates a testmap with Width a_nWidth and height a_nHeight</span>
<span class="number"> 224</span><span class="c">// Virtual      : Yes</span>
<span class="number"> 225</span><span class="c">//-----------------------------------------------------------------------------</span>
<span class="number"> 226</span><span class="k1">void</span> BasicEngine::GenerateTest<span class="k2">(</span><span class="k1">int</span> a_nWidth, <span class="k1">int</span> a_nHeight, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> a_pBitmap<span class="k2">)</span>
<span class="number"> 227</span><span class="k2">{</span>
<span class="number"> 228</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y<span class="k3">&lt;</span>a_nHeight<span class="k2">;</span>y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 229</span>  <span class="k2">{</span>
<span class="number"> 230</span>    std::vector<span class="k3">&lt;</span>BasicTile <span class="k3">*</span> <span class="k3">&gt;</span> tempvector<span class="k2">;</span>
<span class="number"> 231</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>x<span class="k3">&lt;</span> a_nWidth<span class="k2">;</span>x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 232</span>    <span class="k2">{</span>
<span class="number"> 233</span>      BasicTile <span class="k3">*</span> pTile <span class="k3">=</span> <span class="k1">new</span> BasicTile<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 234</span>      <span class="k1">if</span> <span class="k2">(</span>a_pBitmap<span class="k3">!</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 235</span>      <span class="k2">{</span>
<span class="number"> 236</span>        pTile-&gt;SetBitmap<span class="k2">(</span>a_pBitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 237</span>        <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>x<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k3">|</span><span class="k3">|</span><span class="k2">(</span>y<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 238</span>        <span class="k2">{</span>
<span class="number"> 239</span>          pTile-&gt;SetOffset<span class="k2">(</span><span class="n">0</span>,<span class="n">320</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>
<span class="number"> 241</span>        <span class="k2">}</span>
<span class="number"> 242</span>        <span class="k1">else</span>
<span class="number"> 243</span>        <span class="k2">{</span>
<span class="number"> 244</span>          pTile-&gt;SetOffset<span class="k2">(</span><span class="n">0</span>,<span class="n">256</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 245</span>        <span class="k2">}</span>
<span class="number"> 246</span>      <span class="k2">}</span>
<span class="number"> 247</span>      pTile-&gt;m_pEngine <span class="k3">=</span> <span class="k1">this</span><span class="k2">;</span>
<span class="number"> 248</span>      tempvector.push_back<span class="k2">(</span>pTile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 249</span>    <span class="k2">}</span>
<span class="number"> 250</span>    m_lstCell.push_back<span class="k2">(</span>tempvector<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>  <span class="k2">}</span>
<span class="number"> 252</span>
<span class="number"> 253</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Tue, 08 Nov 2011 21:16:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It might be a good idea to abstract drawing and maybe the underlying API so the engine can be used with SDL, SFML, etc
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Tue, 08 Nov 2011 22:57:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The flat map (horizontal tiles) is a no-brainer, challenge is when you introduce vertical shapes and need to make them cover one another with the right priority.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Tue, 08 Nov 2011 23:13:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608772/936820#target">Audric</a> said:</div><div class="quote"><p> The flat map (horizontal tiles) is a no-brainer, challenge is when you introduce vertical shapes and need to make them cover one another with the right priority.</p></div></div><p>It seems to me that if you had a Z (depth) component, it wouldn&#39;t be effectively changed if you simply tilted the scene at 45 degrees and used the painters algorithm.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 08 Nov 2011 23:17:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Perhaps use some const correctness and initialisation lists.</p><p>You&#39;ll probably be wanting some kind of utility class to do conversions, e.g. pixel to tile, etc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 08 Nov 2011 23:27:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608772/936821#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>
It seems to me that if you had a Z (depth) component, it wouldn&#39;t be effectively <br />changed if you simply tilted the scene at 45 degrees and used the painters algorithm.
</p></div></div><p>

The painters algorithm has the advantage that even transparent shapes will (mostly) work. If you have no transparency you don&#39;t even need painters algorithm, draw them in any order and the z-buffer takes care of it all.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Tue, 08 Nov 2011 23:34:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Good luck with a painters/basic ordering algorithm getting this to show:</p><p><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/6/5/65aa1f553f3a60159a5f9f7e3c89dfa0.gif" alt="isomot.gif" width="160" height="120" /></p><p>Tried to include it, but the site still fails miserably with FF or IE to upload files for me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 08 Nov 2011 23:50:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608772/936826#target">Neil Walker</a> said:</div><div class="quote"><p> Good luck with a painters/basic ordering algorithm getting this to show:</p></div></div><p>Compare that bizarre case with the broken visibility determination in Tomb Raider 1, 2 and 3 (at least) and you&#39;ll realize it&#39;s not that big of a problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 09 Nov 2011 00:08:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, that specific image just doesn&#39;t makes sense, but it&#39;s true that painter algorithm is not perfect, but is usually good enough (look at games like Roller Coaster Tycoon 1/2, there are minor glitches but overall it looks good). Painters algorithm will render the map without glitches, the problem comes when you have objects that lie between 2 or more tiles (moving objects usually).</p><p>But if using Allegro 5, using Z depth is virtually free, so... that makes things simpler and the render doesn&#39;t have glitches (you just need to take care of translucent objects).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Wed, 09 Nov 2011 00:08:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Of course it makes sense, in a typical isometric game you have moving platform tiles or tiles that do not fit exactly onto the grid, e.g. the player.</p><p>In fact, it wasn&#39;t drawn, it was a screen capture from an isometric engine that accounted for this by using ordering and masks <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Wed, 09 Nov 2011 00:41:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It doesn&#39;t seem to make sense if you assume they&#39;re cubes, but if you were to assume the blue box was shorter than the red box, it&#39;d render like that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 09 Nov 2011 00:43:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>With a z-buffer the red/green/blue cubes will render correctly. Just if they were all half-transparent they wouldn&#39;t.</p><p>It doesn&#39;t even matter in which order you draw them - the z-buffer will store a depth value for each pixel. So if you draw red first and then green the obscured parts of green are skipped because they have more depth than the red in front. When now drawing blue it will overwrite red (because blue has less depth) but skip the pixels behind green as they again have more depth.</p><p>[edit:] This reminds me of a picture from an isometric engine I attempted a long time ago but which I gave up on back then after encountering this issue <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> <img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/d/5/d5480698051b9abd51387749baf213b1.png" alt="devils3cubes.png" width="54" height="64" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 09 Nov 2011 00:47:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Aah, now I see how that image makes sense, but then those cubes are not spaced in a grid. I was assuming that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Wed, 09 Nov 2011 01:51:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>We have stacked tiles....<br /><span class="remote-thumbnail"><span class="json">{"name":"605090","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/3\/b376d2ae2f35b1627fed21ef08a6f571.png","w":800,"h":619,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/3\/b376d2ae2f35b1627fed21ef08a6f571"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/b/3/b376d2ae2f35b1627fed21ef08a6f571-240.jpg" alt="605090" width="240" height="185" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Wed, 09 Nov 2011 14:25:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Will you be hosting the code anywhere?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Wed, 09 Nov 2011 16:46:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As I said, the project ( and code) will be public <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I hope it will evolve into something usefull
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Wed, 09 Nov 2011 17:37:05 +0000</pubDate>
	</item>
</rss>
