docs/landscape_grid.html
author Darkvater
Sat, 02 Apr 2005 23:05:09 +0000
changeset 1632 10c391e108b7
parent 1487 4d76c7c82cfb
child 1993 09205cf59fb4
permissions -rw-r--r--
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
- Fix: 'L' no longer opens ingame terraform bar in scenario editor bar, but the land generator one
- Feature: [ 1095110 ] Create Lake and draggable Create Desert tools (initial implementation GoneWacko), also added sticky buttons to land generator and town generator
- CodeChange: moved around some of the draggable tools, demystifying them
- CodeChange: change CmdBuildCanal to allow for XANDY dragging not only X or Y (only scenario editor)
- CodeChange: add some more enums to sprites.
- TODO: merge most of the ingame and scenario editor land terraform code. This can only be done after OnClickButton function is changed so it also includes the backreference to the widget being clicked, postponed to after 0.4.0
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  <meta name="Description" content="Structure of OpenTTD (OTTD) landscape arrays #2">
  <title>OpenTTD Landscape Internals - #2</title>
  <style type="text/css">
    .freebits { background-color: rgb(30, 178, 54);}
    .abuse { background-color: rgb(255, 58, 31);}
  </style>
</head>
<body style="direction: ltr;">
<h3 style="font-weight: bold;">Landscape</h3>
<span style="font-weight: bold;"></span>Five arrays are used to encode the information of the contents of the tile.
This can be seen in the <a href="landscape.html">Landscape</a> document. This page tries to give an overview of used and free bits of
the array so you can quickly see what is used and what is not.
<ul>
  <li><span style="font-weight: bold;"><span class="freebits">O</span></span> - bit is free</li>
  <li><span style="font-weight: bold;">X</span> - bit is used</li>
  <li><span style="font-weight: bold;"><span class="abuse">&nbsp;&nbsp;&nbsp;</span></span> - bit of _map_* is abused for different purposes</li>
</ul>
<p>
<ul>
  <li><span style="font-weight: bold;">_map_owner[]</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.).</li>
  <li><span style="font-weight: bold;">_map2[]</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array.</li>
  <li><span style="font-weight: bold;">_map3[]</span> - 16 bits in size, which is split up into _map3lo[] and _map3hi[] is used for general storage.</li>
  <li><span style="font-weight: bold;">_map_type_and_height[]</span> - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits).</li>
  <li><span style="font-weight: bold;">_map5[]</span> - 8 bits in size, is used for general storage.</li>
</ul>

<table style="text-align: left;" border="1" cellpadding="2"
 cellspacing="2" width="100%">
  <tbody>
    <tr>
      <th style="white-space: nowrap; text-align: left;">class</th>
      <th style="white-space: nowrap; text-align: center;">_map_owner[L1] (8)</th>
      <th style="white-space: nowrap; text-align: center;">_map2[L2] (16)</th>
      <th style="white-space: nowrap; text-align: center;">_map3[lo&amp; hi,L3] (16)</th>
      <th style="white-space: nowrap; text-align: center;">_map_type_and_height[L4] (8)</th>
      <th style="white-space: nowrap; text-align: center;">_map5[L5] (8)</th>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(0) ground</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX <span class="freebits">OOOO OO</span>XX XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX X<span class="freebits">O</span>XX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(1) rail</td>
      <td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX XXXX</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX <span class="freebits">OOOO OOOO</span><br>
      </td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX XXX<span class="freebits">O OOOO</span><br>
      </td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX<br>
      </td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">depot/checkpoint</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="text-align: center;">XXXX X<span class="freebits">OOO</span> XXXX XXXX</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="white-space: nowrap; text-align: center;">XXX<span class="freebits">O OO</span>XX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(2) road</td>
      <td style="text-align: center;">XXXX XXXX</td>
      <td style="text-align: center;"><span class="abuse">XXXX XXXX XXXX XXXX</span></td>
      <td style="text-align: center;"><span class="freebits">OOOO OOOO</span> XXXX XXXX</td>
      <td style="text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">level crossing</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;"><span class="abuse">XXXX XXXX XXXX XXXX</span></td>
      <td style="text-align: center;">XXXX XXXX XXXX XXXX</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;"><span class="freebits">OO</span>XX XXXX</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">road depot</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="text-align: center;"><span class="freebits">OOOO OOOO OOOO OOO</span>X</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(3) town</td>
      <td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX XXXX</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX XXXX XXXX<br>
      </td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX XXXX XXXX<br>
      </td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XX<span class="freebits">O</span>X</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(4) trees</td>
      <td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX XXXX</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX XX<span class="freebits">OO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX <span class="freebits">OO</span>XX XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXX<span class="freebits">O OO</span>XX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(5) station</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX X<span class="freebits">OOO</span> XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(6) water</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(8) industry</td>
      <td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX X</span><span class="freebits">OO</span><span class="abuse">X</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">bubble/sugar/toffee</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">XXXX XXXX <span class="freebits">OOOO OOOO</span></td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">toy factory</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">XXXX XXXX XXXX XXXX</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">gold/copper/coal</li>
      </ul>
      </td>
      <td style="text-align: center;">XXXX XXXX</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">oil wells</li>
      </ul>
      </td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">power station</li>
      </ul>
      </td>
      <td style="text-align: center;">XXXX XX<span class="freebits">O</span>X</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
      <td style="text-align: center;">-inherit-</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(9) tunnel</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX <span class="freebits">OOOO OOOO OOO</span>X</td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td>
      <ul>
        <li style="white-space: nowrap; text-align: left;">bridge</li>
      </ul>
      </td>
      <td style="text-align: center;">XXXX XXXX</td>
      <td style="text-align: center;"><span class="abuse">XXXX XXXX</span> <span class="freebits">OOOO OOOO</span></td>
      <td style="text-align: center;">XXXX XXXX <span class="freebits">OOOO OOO</span>X</td>
      <td style="text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="text-align: center;">XXXX XXXX</td>
    </tr>
    <tr>
      <td style="white-space: nowrap; text-align: left;">(10) various (HQ)</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;"><span class="freebits">OOOO OOOO OOOO OOOO</span></td>
      <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
      <td style="white-space: nowrap; text-align: center;">XXXX XXXX</td>
    </tr>
  </tbody>
</table>

</body>
</html>