Exemple #1
0
	/// <summary>
	/// Computes the trees to be cut.
	/// </summary>
	/// <param name='frequencyDistribution'>
	/// Frequency distribution.
	/// </param>
	/// <param name='diameterLimit'>
	/// Diameter limit.
	/// </param>
	/// <param name='direction'>
	/// Direction of the diameter limit cut.
	/// </param>
	/// <param name='treesToCut'>
	/// Trees to cut.
	/// </param>
	/// <param name='treesToKeep'>
	/// Trees to keep.
	/// </param>
	public static void ComputeTreesToBeCut(
		int[] frequencyDistribution, int diameterLimit, DiameterLimitCutDirection direction,
		out int[] treesToCut, out int[] treesToKeep
	)
	{
		treesToCut = new int[frequencyDistribution.Length];
		treesToKeep = new int[frequencyDistribution.Length];
		int limit = diameterLimit/ResourceTile.treeSizeClassInterval-1;
		switch (direction) {
		case DiameterLimitCutDirection.Greater:
			// cut all trees greater than limit
			for (int i=0; i<frequencyDistribution.Length; ++i) {
				if (i <= limit) {
					treesToKeep[i] = frequencyDistribution[i];
				}
				else {
					treesToCut[i] = frequencyDistribution[i];
				}
			}
			break;
		case DiameterLimitCutDirection.Less:
			// cut all trees less than limit
			for (int i=0; i<frequencyDistribution.Length; ++i) {
				if (i >= limit) {
					treesToKeep[i] = frequencyDistribution[i];
				}
				else {
					treesToCut[i] = frequencyDistribution[i];
				}
			}
			break;
		}
	}
Exemple #2
0
	/// <summary>
	/// Initializes a new instance of the <see cref="Harvest"/> struct for a diameter limit cut.
	/// </summary>
	/// <param name='ids'>
	/// Identifiers.
	/// </param>
	/// <param name='duration'>
	/// Duration.
	/// </param>
	/// <param name='diameterLimit'>
	/// Diameter limit.
	/// </param>
	/// <param name='cutDirection'>
	/// Cut direction.
	/// </param>
	public Harvest(int[] ids, int duration, int diameterLimit, DiameterLimitCutDirection cutDirection)
	{
		this.ids = ids;
		this.duration = duration;
		this.cutType = CutType.DiameterLimitCut;
		this.diameterLimit = diameterLimit;
		this.diameterLimitCutDirection = cutDirection;
	}