Skip to content
Permalink
Browse files

Fix #7307: Add WaterClass to MP_TREES, set when trees are on coast ti…

…les (#7309)

This allows allows NewGRF object/industry placement rules to treat trees on coast tiles the same as regular bare coast.
  • Loading branch information...
Eddi-z authored and PeterN committed Mar 2, 2019
1 parent 780593a commit b242a04c7d530e5d73c809c53ae857455231a4c6
Showing with 6 additions and 3 deletions.
  1. +1 −0 docs/landscape.html
  2. +1 −1 docs/landscape_grid.html
  3. +2 −0 src/tree_map.h
  4. +2 −2 src/water_map.h
@@ -759,6 +759,7 @@ <h3><a name="Landscape">Landscape</a></h3>
<td valign=top nowrap>&nbsp;</td>
<td>
<ul>
<li>m1 bits 6..5: water class (sea or land)</li>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
<li>m2 bits 8..6: ground
<table>
@@ -194,7 +194,7 @@ <h3 style="font-weight: bold;">Landscape</h3>
<td class="caption">trees</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">O</span>XX<span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
<td class="bits"><span class="option">~~</span>XX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
@@ -13,6 +13,7 @@
#define TREE_MAP_H

#include "tile_map.h"
#include "water_map.h"

/**
* List of tree types along all landscape types.
@@ -133,6 +134,7 @@ static inline void SetTreeGroundDensity(TileIndex t, TreeGround g, uint d)
assert(IsTileType(t, MP_TREES)); // XXX incomplete
SB(_m[t].m2, 4, 2, d);
SB(_m[t].m2, 6, 3, g);
SetWaterClass(t, g == TREE_GROUND_SHORE ? WATER_CLASS_SEA : WATER_CLASS_INVALID);
}

/**
@@ -94,7 +94,7 @@ static inline WaterTileType GetWaterTileType(TileIndex t)
*/
static inline bool HasTileWaterClass(TileIndex t)
{
return IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY) || IsTileType(t, MP_OBJECT);
return IsTileType(t, MP_WATER) || IsTileType(t, MP_STATION) || IsTileType(t, MP_INDUSTRY) || IsTileType(t, MP_OBJECT) || IsTileType(t, MP_TREES);
}

/**
@@ -204,7 +204,7 @@ static inline bool IsCoast(TileIndex t)
*/
static inline bool IsCoastTile(TileIndex t)
{
return IsTileType(t, MP_WATER) && IsCoast(t);
return (IsTileType(t, MP_WATER) && IsCoast(t)) || (IsTileType(t, MP_TREES) && GetWaterClass(t) != WATER_CLASS_INVALID);
}

/**

0 comments on commit b242a04

Please sign in to comment.
You can’t perform that action at this time.