Concerning my forest...
After some reconsidering I came to the result that it would be cool if it can be implemented a little different than the original TTD forest: It always disturbed me that all forest tiles looked the same - so I made the version that currently is on the wiki (see above, my last post).
MeusH told me that it would be difficult to include that sprite into OTTD, so maybe the following alternative is easier to paint (for me

) and to code:
First of all we start with the ground, looking like the first picture, then we only put trees on the tiles I've marked with the T-crossing

(second picture).
For that there are two options:
1. Each tile has 9 trees looking equal, as it was in TTD, but now with the trees mdhowe created (that ones you also can see in the wiki) - 3rd pic.
2. We find someone who codes a new forest engine with dynamically adding trees / cutting down trees, which would, again using mdhowe's trees, result in a more loose look of the forest (4th pic).
I for my part would prefer option 2 - the 3rd pic is looking terrible...

The new engine then probably has to look something like this (I know, this is NOT the coding forum, but I can still create a new topic there) :
Code: Select all
(Yes, I know, OTTD is written in C, so it's not object orientated, although I pretended that in this pseudocode.
By this way it is easier to show what I mean with the "new forest grow engine".)
Each "game cycle" (or whatever is used as time unit in OTTD) for all forests this code has to be executed:
iterates (through tiles i = 1 ... tile.count)
{
// randomly choose one of tile's trees and "water" it ;)
tree = tile[i].getRandomTree()
tree.growOneStep()
// the next-to-last tree grow step will be identified with the cutdown-state of the tree, after which it will be...
if (tree.currentGrowStep == LAST_GROW_STEP_CONSTANT)
tree.remove()
//...d. :)
// randomly decide if to plant a new tree
if (tile[i].treeCount <= tile[i].treeMaxAllowed && randomFunction(SOME_GLOBAL_PLANT_CONSTANT) == true )
{
tile[i].appendTreeAtPosition(tile[i].pickRandomLocationOnTile())
}
}
