tree_cmd.cpp File Reference

Handling of tree tiles. More...

#include "stdafx.h"
#include "openttd.h"
#include "clear_map.h"
#include "landscape.h"
#include "tree_map.h"
#include "viewport_func.h"
#include "command_func.h"
#include "economy_func.h"
#include "town.h"
#include "variables.h"
#include "genworld.h"
#include "transparency.h"
#include "functions.h"
#include "company_func.h"
#include "sound_func.h"
#include "water_map.h"
#include "water.h"
#include "landscape_type.h"
#include "company_base.h"
#include "table/strings.h"
#include "table/sprites.h"
#include "table/tree_land.h"

Go to the source code of this file.

Data Structures

struct  TreeListEnt

Enumerations

enum  TreePlacer { TP_NONE, TP_ORIGINAL, TP_IMPROVED }
 List of tree placer algorithm. More...

Functions

static bool CanPlantTreesOnTile (TileIndex tile, bool allow_desert)
 Tests if a tile can be converted to MP_TREES This is true for clear ground without farms or rocks.
static void PlantTreesOnTile (TileIndex tile, TreeType treetype, uint count, uint growth)
 Creates a tree tile Ground type and density is preserved.
static TreeType GetRandomTreeType (TileIndex tile, uint seed)
 Get a random TreeType for the given tile based on a given seed.
static void PlaceTree (TileIndex tile, uint32 r)
 Make a random tree tile of the given tile.
static void DoPlaceMoreTrees (TileIndex tile)
 Place some amount of trees around a given tile.
static void PlaceMoreTrees ()
 Place more trees on the map.
static void PlaceTreeAtSameHeight (TileIndex tile, uint height)
 Place a tree at the same height as an existing tree.
void PlaceTreesRandomly ()
 Place some trees randomly.
void GenerateTrees ()
 Place new trees.
CommandCost CmdPlantTree (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Plant a tree.
static void DrawTile_Trees (TileInfo *ti)
static uint GetSlopeZ_Trees (TileIndex tile, uint x, uint y)
static Foundation GetFoundation_Trees (TileIndex tile, Slope tileh)
static CommandCost ClearTile_Trees (TileIndex tile, DoCommandFlag flags)
static void GetAcceptedCargo_Trees (TileIndex tile, AcceptedCargo ac)
static void GetTileDesc_Trees (TileIndex tile, TileDesc *td)
static void AnimateTile_Trees (TileIndex tile)
static void TileLoopTreesDesert (TileIndex tile)
static void TileLoopTreesAlps (TileIndex tile)
static void TileLoop_Trees (TileIndex tile)
void OnTick_Trees ()
static bool ClickTile_Trees (TileIndex tile)
static TrackStatus GetTileTrackStatus_Trees (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static void ChangeTileOwner_Trees (TileIndex tile, Owner old_owner, Owner new_owner)
void InitializeTrees ()
static CommandCost TerraformTile_Trees (TileIndex tile, DoCommandFlag flags, uint z_new, Slope tileh_new)

Variables

const TileTypeProcs _tile_type_trees_procs


Detailed Description

Handling of tree tiles.

Definition in file tree_cmd.cpp.


Enumeration Type Documentation

enum TreePlacer

List of tree placer algorithm.

This enumeration defines all possible tree placer algorithm in the game.

Enumerator:
TP_NONE  No tree placer algorithm.
TP_ORIGINAL  The original algorithm.
TP_IMPROVED  A 'improved' algorithm.

Definition at line 34 of file tree_cmd.cpp.


Function Documentation

static bool CanPlantTreesOnTile ( TileIndex  tile,
bool  allow_desert 
) [static]

Tests if a tile can be converted to MP_TREES This is true for clear ground without farms or rocks.

Parameters:
tile the tile of interest
allow_desert Allow planting trees on CLEAR_DESERT?
Returns:
true if trees can be built.

Definition at line 48 of file tree_cmd.cpp.

References CLEAR_DESERT, CLEAR_FIELDS, CLEAR_ROCKS, GetTileSlope(), GetTileType(), IsBridgeAbove(), IsClearGround(), IsSlopeWithOneCornerRaised(), MP_CLEAR, and MP_WATER.

Referenced by DoPlaceMoreTrees(), PlaceTreeAtSameHeight(), PlaceTreesRandomly(), and PlantTreesOnTile().

CommandCost CmdPlantTree ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

static void DoPlaceMoreTrees ( TileIndex  tile  )  [static]

Place some amount of trees around a given tile.

This function adds some trees around a given tile. As this function use the Random() call it depends on the random how many trees are actually placed around the given tile.

Parameters:
tile The center of the trees to add

Definition at line 168 of file tree_cmd.cpp.

References abs(), CanPlantTreesOnTile(), GB(), INVALID_TILE, PlaceTree(), and TileAddWrap().

Referenced by PlaceMoreTrees().

void GenerateTrees (  ) 

Place new trees.

This function takes care of the selected tree placer algorithm and place randomly the trees for a new game.

Definition at line 294 of file tree_cmd.cpp.

References _settings_game, GameSettings::game_creation, GWP_TREE, GameCreationSettings::landscape, PlaceMoreTrees(), PlaceTreesRandomly(), ScaleByMapSize(), SetGeneratingWorldProgress(), TP_IMPROVED, TP_NONE, TP_ORIGINAL, and GameCreationSettings::tree_placer.

Referenced by _GenerateWorld().

static TreeType GetRandomTreeType ( TileIndex  tile,
uint  seed 
) [static]

Get a random TreeType for the given tile based on a given seed.

This function returns a random TreeType which can be placed on the given tile. The seed for randomness must be less or equal 256, use GB on the value of Random() to get such a value.

Parameters:
tile The tile to get a random TreeType from
seed The seed for randomness, must be less or equal 256
Returns:
The random tree type

Definition at line 111 of file tree_cmd.cpp.

References _settings_game, GameSettings::game_creation, GetTropicZone(), GameCreationSettings::landscape, TREE_CACTUS, TREE_COUNT_RAINFOREST, TREE_COUNT_SUB_ARCTIC, TREE_COUNT_SUB_TROPICAL, TREE_COUNT_TEMPERATE, TREE_COUNT_TOYLAND, TREE_INVALID, TREE_RAINFOREST, TREE_SUB_ARCTIC, TREE_SUB_TROPICAL, TREE_TEMPERATE, TREE_TOYLAND, TROPICZONE_DESERT, and TROPICZONE_NORMAL.

Referenced by CmdPlantTree(), and PlaceTree().

static void PlaceMoreTrees (  )  [static]

Place more trees on the map.

This function add more trees to the map.

Definition at line 190 of file tree_cmd.cpp.

References DoPlaceMoreTrees(), GB(), RandomTile, and ScaleByMapSize().

Referenced by GenerateTrees().

static void PlaceTree ( TileIndex  tile,
uint32  r 
) [static]

Make a random tree tile of the given tile.

Create a new tree-tile for the given tile. The second parameter is used for randomness like type and number of trees.

Parameters:
tile The tile to make a tree-tile from
r The randomness value from a Random() value

Definition at line 141 of file tree_cmd.cpp.

References GB(), GetRandomTreeType(), GetTreeGround(), min(), PlantTreesOnTile(), SetTreeCounter(), SetTreeGroundDensity(), TREE_GROUND_SHORE, TREE_GROUND_SNOW_DESERT, and TREE_INVALID.

Referenced by DoPlaceMoreTrees(), PlaceTreeAtSameHeight(), and PlaceTreesRandomly().

static void PlaceTreeAtSameHeight ( TileIndex  tile,
uint  height 
) [static]

Place a tree at the same height as an existing tree.

Add a new tree around the given tile which is at the same height or at some offset (2 units) of it.

Parameters:
tile The base tile to add a new tree somewhere around
height The height (like the one from the tile)

Definition at line 207 of file tree_cmd.cpp.

References abs(), CanPlantTreesOnTile(), Delta(), GB(), GetTileZ(), INVALID_TILE, PlaceTree(), and TileAddWrap().

Referenced by PlaceTreesRandomly().

void PlaceTreesRandomly (  ) 

static void PlantTreesOnTile ( TileIndex  tile,
TreeType  treetype,
uint  count,
uint  growth 
) [static]

Creates a tree tile Ground type and density is preserved.

Precondition:
the tile must be suitable for trees.
Parameters:
tile where to plant the trees.
type The type of the tree
count the number of trees (minus 1)
growth the growth status

Definition at line 73 of file tree_cmd.cpp.

References CanPlantTreesOnTile(), CLEAR_GRASS, CLEAR_ROUGH, GetClearDensity(), GetClearGround(), GetTileType(), MakeTree(), MP_CLEAR, MP_WATER, TREE_GROUND_GRASS, TREE_GROUND_ROUGH, TREE_GROUND_SHORE, TREE_GROUND_SNOW_DESERT, and TREE_INVALID.

Referenced by CmdPlantTree(), and PlaceTree().


Variable Documentation

const TileTypeProcs _tile_type_trees_procs

Initial value:

 {
  DrawTile_Trees,           
  GetSlopeZ_Trees,          
  ClearTile_Trees,          
  GetAcceptedCargo_Trees,   
  GetTileDesc_Trees,        
  GetTileTrackStatus_Trees, 
  ClickTile_Trees,          
  AnimateTile_Trees,        
  TileLoop_Trees,           
  ChangeTileOwner_Trees,    
  NULL,                     
  NULL,                     
  GetFoundation_Trees,      
  TerraformTile_Trees,      
}


Generated on Mon Mar 9 23:34:07 2009 for openttd by  doxygen 1.5.6